From e5b231a7fdd84eefd4cc4215bedfd9d8d4eb7338 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Beno=C3=AEt=20Harrault?= <benoit@harrault.fr>
Date: Fri, 23 Jul 2021 16:44:19 +0200
Subject: [PATCH] Do not pick recently picked data (letter or category)

---
 android/gradle.properties |  4 ++--
 lib/provider/data.dart    |  8 ++++++++
 lib/screens/home.dart     | 16 ++++++++++++----
 3 files changed, 22 insertions(+), 6 deletions(-)

diff --git a/android/gradle.properties b/android/gradle.properties
index 27d2e18..eb8b18b 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.13
-app.versionCode=19
+app.versionName=1.2.14
+app.versionCode=20
diff --git a/lib/provider/data.dart b/lib/provider/data.dart
index bf343bd..8f39c4b 100644
--- a/lib/provider/data.dart
+++ b/lib/provider/data.dart
@@ -55,6 +55,14 @@ class Data extends ChangeNotifier {
     return '';
   }
 
+  bool isCategoryRecentlyPicked(String category) {
+    return _recentCategories.contains(category);
+  }
+
+  bool isLetterRecentlyPicked(String letter) {
+    return _recentLetters.contains(letter);
+  }
+
   int get countdown => _countdown;
   void updateCountdown(int value) {
     _countdown = value;
diff --git a/lib/screens/home.dart b/lib/screens/home.dart
index a6d86a4..781080e 100644
--- a/lib/screens/home.dart
+++ b/lib/screens/home.dart
@@ -56,13 +56,17 @@ class Home extends StatelessWidget {
     do {
       randomPickCategory = RandomPickCategory();
       await randomPickCategory.init();
-      if (randomPickCategory.category != null) {
+      if (
+        randomPickCategory.category != null
+        &&
+        !myProvider.isCategoryRecentlyPicked(randomPickCategory.category)
+      ) {
         myProvider.updateCategory(randomPickCategory.category);
         myProvider.setSearchingCategory(false);
         break;
       }
       attempts++;
-    } while (attempts < 3);
+    } while (attempts < 10);
   }
 
   Future<void> pickLetter(Data myProvider) async {
@@ -72,13 +76,17 @@ class Home extends StatelessWidget {
     do {
       randomPickLetter = RandomPickLetter();
       await randomPickLetter.init();
-      if (randomPickLetter.letter != null) {
+      if (
+        randomPickLetter.letter != null
+        &&
+        !myProvider.isLetterRecentlyPicked(randomPickLetter.letter)
+      ) {
         myProvider.updateLetter(randomPickLetter.letter);
         myProvider.setSearchingLetter(false);
         break;
       }
       attempts++;
-    } while (attempts < 3);
+    } while (attempts < 10);
   }
 
   Color darken(Color baseColor, {double amount = 0.2}) {
-- 
GitLab