From 2277ffbd4db8701dc51b74ce208a8794f9c7b525 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Sun, 18 Apr 2021 22:00:01 +0200
Subject: [PATCH] Disallow multiple simultaneous minigames countdowns

---
 android/gradle.properties |  4 ++--
 lib/provider/data.dart    | 10 +++++-----
 lib/screens/home.dart     | 26 ++++++++++++++------------
 pubspec.lock              |  4 ++--
 4 files changed, 23 insertions(+), 21 deletions(-)

diff --git a/android/gradle.properties b/android/gradle.properties
index ad752d3..d0bb1da 100644
--- a/android/gradle.properties
+++ b/android/gradle.properties
@@ -1,5 +1,5 @@
 org.gradle.jvmargs=-Xmx1536M
 android.useAndroidX=true
 android.enableJetifier=true
-app.versionName=1.2.2
-app.versionCode=8
+app.versionName=1.2.3
+app.versionCode=9
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index 1c709ad..c482f51 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -7,7 +7,7 @@ class Data extends ChangeNotifier {
   bool _searchingLetter = false;
   String _category = '';
   String _letter = '';
-  int _timer = 0;
+  int _countdown = 0;
 
   bool get searchingCategory => _searchingCategory;
 
@@ -37,17 +37,17 @@ class Data extends ChangeNotifier {
     notifyListeners();
   }
 
-  int get timer => _timer;
+  int get countdown => _countdown;
 
-  set updateTimer(int value) {
-    _timer = value;
+  set updateCountdown(int value) {
+    _countdown = value;
     notifyListeners();
   }
 
   void resetGame() {
     _category = '';
     _letter = '';
-    _timer = 0;
+    _countdown = 0;
     notifyListeners();
   }
 }
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index 5da13a0..68451e7 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -14,29 +14,31 @@ class Home extends StatelessWidget {
   String _randomLetter = '';
   String _randomCategory = '';
   Timer _timer;
-  int _timerStart = 10;
+  int _countdownStart = 10;
 
   Future<void> startMiniGame(BuildContext context, Data myProvider) async {
-    pickCategory(context, myProvider);
-    pickLetter(context, myProvider);
-    startTimer(context, myProvider);
+    if (myProvider.countdown == 0) {
+      pickCategory(context, myProvider);
+      pickLetter(context, myProvider);
+      startTimer(context, myProvider);
+    }
   }
 
   Future<void> startTimer(BuildContext context, Data myProvider) async {
     const oneSec = const Duration(seconds: 1);
     if (_timer != null) {
-      _timer.cancel();
+      dispose();
     }
-    _timerStart = 10;
-    myProvider.updateTimer = _timerStart;
+    _countdownStart = 10;
+    myProvider.updateCountdown = _countdownStart;
     _timer = new Timer.periodic(
       oneSec,
       (Timer timer) {
-        if (_timerStart == 0) {
+        if (_countdownStart == 0) {
           timer.cancel();
         } else {
-          _timerStart--;
-          myProvider.updateTimer = _timerStart;
+          _countdownStart--;
+          myProvider.updateCountdown = _countdownStart;
         }
       },
     );
@@ -138,14 +140,14 @@ class Home extends StatelessWidget {
               mainAxisAlignment: MainAxisAlignment.center,
               children: <Widget>[
                 FlatButton(
-                  onPressed: () => startMiniGame(context, _myProvider),
+                  onPressed: (_myProvider.countdown != 0) ? null : () => startMiniGame(context, _myProvider),
                   color: Colors.blue,
                   padding: EdgeInsets.all(10.0),
                   child: Row(
                     mainAxisAlignment: MainAxisAlignment.center,
                     children: <Widget>[
                       Text(
-                        _myProvider.timer.toString(),
+                        _myProvider.countdown.toString(),
                         style: Theme.of(context).textTheme.headline2,
                       ),
                     ],
diff --git a/pubspec.lock b/pubspec.lock
index 48d7003..8e20142 100644
--- a/pubspec.lock
+++ b/pubspec.lock
@@ -141,7 +141,7 @@ packages:
       name: test_api
       url: "https://pub.dartlang.org"
     source: hosted
-    version: "0.2.19"
+    version: "0.3.0"
   typed_data:
     dependency: transitive
     description:
@@ -157,5 +157,5 @@ packages:
     source: hosted
     version: "2.1.0"
 sdks:
-  dart: ">=2.12.0-0.0 <3.0.0"
+  dart: ">=2.12.0 <3.0.0"
   flutter: ">=1.16.0"
-- 
GitLab