commit a280e7e3ec231060fec1be95c20eda7fc5554d2f
Author: leszek <leszek@koltunski.pl>
Date:   Tue Oct 3 17:24:55 2023 +0200

    ask for reviews more
    bump to 1.13.3

diff --git a/build.gradle b/build.gradle
index db675d44..b849f487 100644
--- a/build.gradle
+++ b/build.gradle
@@ -15,8 +15,8 @@ android {
         applicationId "org.distorted.magic"
         minSdkVersion 21
         targetSdkVersion 34
-        versionCode 84
-        versionName "1.13.2"
+        versionCode 85
+        versionName "1.13.3"
     }
 
     buildTypes {
diff --git a/src/main/java/org/distorted/main/RubikObjectLibInterface.java b/src/main/java/org/distorted/main/RubikObjectLibInterface.java
index 51d1e89e..0ddfc26d 100644
--- a/src/main/java/org/distorted/main/RubikObjectLibInterface.java
+++ b/src/main/java/org/distorted/main/RubikObjectLibInterface.java
@@ -60,6 +60,8 @@ public class RubikObjectLibInterface implements ObjectLibInterface, ListenerOver
   private int mIsNewRecord;
   private int mNewRecord;
   private int mLastCubitColor, mLastCubit, mLastCubitFace;
+  private boolean mReviewAsked;
+  private int mNumRotations, mNumScrambles;
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
@@ -67,6 +69,9 @@ public class RubikObjectLibInterface implements ObjectLibInterface, ListenerOver
     {
     mAct = new WeakReference<>(act);
     mLastCubitColor = -1;
+    mReviewAsked = false;
+    mNumRotations = 0;
+    mNumScrambles = 0;
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -151,53 +156,45 @@ public class RubikObjectLibInterface implements ObjectLibInterface, ListenerOver
 
   private void requestReview(RubikActivity act)
     {
-    final RubikScores scores = RubikScores.getInstance();
-    int numWins = scores.incrementNumWins();
-    int numRuns = scores.getNumRuns();
+    android.util.Log.e("D", "ASKING FOR REVIEW");
 
-    if( numRuns==3 || numRuns==6 || numWins==7 || numWins==30 || numWins==50 || numWins==80 || numWins==100)
-      {
-      final long timeBegin = System.currentTimeMillis();
-      final ReviewManager manager = ReviewManagerFactory.create(act);
-      Task<ReviewInfo> request = manager.requestReviewFlow();
+    mReviewAsked = true;
+    final String name = RubikScores.getInstance().getName();
+    final long timeBegin = System.currentTimeMillis();
+    final ReviewManager manager = ReviewManagerFactory.create(act);
+    Task<ReviewInfo> request = manager.requestReviewFlow();
 
-      request.addOnCompleteListener(new OnCompleteListener<ReviewInfo>()
+    request.addOnCompleteListener(new OnCompleteListener<ReviewInfo>()
+      {
+      @Override
+      public void onComplete (@NonNull Task<ReviewInfo> task)
         {
-        @Override
-        public void onComplete (@NonNull Task<ReviewInfo> task)
+        if (task.isSuccessful())
           {
-          if (task.isSuccessful())
-            {
-            final String name = scores.getName();
-            ReviewInfo reviewInfo = task.getResult();
-            Task<Void> flow = manager.launchReviewFlow(act, reviewInfo);
+          ReviewInfo reviewInfo = task.getResult();
+          Task<Void> flow = manager.launchReviewFlow(act, reviewInfo);
 
-            flow.addOnFailureListener(new OnFailureListener()
-              {
-              @Override
-              public void onFailure(Exception e)
-                {
-                analyticsReport(act,"Failed", name, timeBegin);
-                }
-              });
-
-            flow.addOnCompleteListener(new OnCompleteListener<Void>()
+          flow.addOnFailureListener(new OnFailureListener()
+            {
+            @Override
+            public void onFailure(Exception e)
               {
-              @Override
-              public void onComplete(@NonNull Task<Void> task)
-                {
-                analyticsReport(act,"Complete", name, timeBegin);
-                }
-              });
-            }
-          else
+              analyticsReport(act,"Failed", name, timeBegin);
+              }
+            });
+
+          flow.addOnCompleteListener(new OnCompleteListener<Void>()
             {
-            String name = scores.getName();
-            analyticsReport(act,"Not Successful", name, timeBegin);
-            }
+            @Override
+            public void onComplete(@NonNull Task<Void> task)
+              {
+              analyticsReport(act,"Complete", name, timeBegin);
+              }
+            });
           }
-        });
-      }
+        else analyticsReport(act,"Not Successful", name, timeBegin);
+        }
+      });
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -222,12 +219,24 @@ public class RubikObjectLibInterface implements ObjectLibInterface, ListenerOver
           }
         });
       }
+    else
+      {
+      mNumScrambles++;
+
+      if( mNumScrambles==10 && !mReviewAsked )
+        {
+        RubikActivity act = mAct.get();
+        requestReview(act);
+        }
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
   public void onFinishRotation(int axis, int row, int angle)
     {
+    mNumRotations++;
+
     if( ScreenList.getCurrentScreen()== ScreenList.SOLV )
       {
       RubikScreenSolving solv = (RubikScreenSolving) ScreenList.SOLV.getScreenClass();
@@ -238,6 +247,12 @@ public class RubikObjectLibInterface implements ObjectLibInterface, ListenerOver
       RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass();
       play.addMove(mAct.get(), axis, row, angle);
       }
+
+    if( mNumRotations==40 && !mReviewAsked )
+      {
+      RubikActivity act = mAct.get();
+      requestReview(act);
+      }
     }
 
 ///////////////////////////////////////////////////////////////////////////////////////////////////
@@ -455,7 +470,15 @@ public class RubikObjectLibInterface implements ObjectLibInterface, ListenerOver
       {
       RubikActivity act = mAct.get();
       reportRecord(act,startTime,endTime,debug,scrambleNum);
-      requestReview(act);
+
+      RubikScores scores = RubikScores.getInstance();
+      int numWins = scores.incrementNumWins();
+      int numRuns = scores.getNumRuns();
+
+      if( numRuns==3 || numRuns==6 || numWins==4 || numWins==20 || numWins==50 || numWins==80 || numWins==100)
+        {
+        requestReview(act);
+        }
 
       switch(mIsNewRecord)
         {
@@ -463,7 +486,6 @@ public class RubikObjectLibInterface implements ObjectLibInterface, ListenerOver
                                 {
                                 RubikScreenPlay play = (RubikScreenPlay) ScreenList.PLAY.getScreenClass();
                                 int level = play.getLevel();
-                                RubikScores scores = RubikScores.getInstance();
                                 int newStars = scores.computeNumStars(level);
                                 int totStars = scores.getNumStars();
                                 scores.changeNumStars(newStars);
