Generate SSD area selection callback from typed Jerboa

ober

ecd9c3531e9ac2a4e6bc65cf42429e1d11f7dcfd

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index fd95ebd..28cad33 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -4892,6 +4892,7 @@
                 mainActivityApproveArea
                 mainActivityAppendAreaToGroupAction
                 mainActivityApplySsdArea
+                mainActivityHandleAreaSelected
                 mainActivityAddApprovedAreaGroup
                 mainActivityAppendAreaToGroup
                 mainActivitySuppressGroupAsDeleted
@@ -5546,6 +5547,9 @@
                   (activity : MainActivity)
                   (enabled : Bool)) : Unit
           (kotlin-member-set ssdAreaMode))
+        (extern (mainActivitySsdAreaModeRaw
+                  (activity : MainActivity)) : Bool
+          (kotlin-member-get ssdAreaMode))
         (extern (mainActivityReopenSsdBrowserOnResumeSet
                   (activity : MainActivity)
                   (enabled : Bool)) : Unit
@@ -5636,11 +5640,6 @@
                   (activity : MainActivity)
                   (text : String)) : Unit
           (kotlin-member-call setStatus))
-        (extern (mainActivityHandleAreaSelectedRaw
-                  (activity : MainActivity)
-                  (rect : FloatArray)
-                  (detectedIds : (List String))) : Unit
-          (kotlin-member-call handleAreaSelected))
         (extern (mainActivityRenderCurrentPageRaw
                   (activity : MainActivity)) : Unit
           (kotlin-member-call renderCurrentPage))
@@ -6536,7 +6535,9 @@
         (def (mainActivityInstallReviewViewCallbacks
                (activity : MainActivity)
                (view : SsdReviewView)
-               (groupTapFeedback : Int32)) : Unit
+               (store : TruthStore)
+               (groupTapFeedback : Int32)
+               (confirmHaptic : Int32)) : Unit
           (begin
             (reviewViewOnStatusSet
               view
@@ -6545,7 +6546,13 @@
             (reviewViewOnAreaSelectedSet
               view
               (lambda ((rect : FloatArray) (ids : (List String)))
-                (mainActivityHandleAreaSelectedRaw activity rect ids)))
+                (mainActivityHandleAreaSelected
+                  activity
+                  view
+                  store
+                  rect
+                  ids
+                  confirmHaptic)))
             (reviewViewOnGroupTappedSet
               view
               (lambda ((groupId : String))
@@ -7129,6 +7136,30 @@
                         (mainActivityRenderCurrentPageRaw activity)
                         (begin)))))
                 (begin)))))
+        (def (mainActivityHandleAreaSelected
+               (activity : MainActivity)
+               (view : SsdReviewView)
+               (store : TruthStore)
+               (rect : FloatArray)
+               (detectedIds : (List String))
+               (confirmHaptic : Int32)) : Unit
+          (if (sessionMissing (mainActivityCurrentSessionRaw activity))
+            (mainActivitySetStatusRaw activity (selectionIgnoredLoadingStatus))
+            (let ((applyAsSsdArea (mainActivitySsdAreaModeRaw activity)))
+              (begin
+                (mainActivitySetStatusRaw
+                  activity
+                  (areaSelectionStatus
+                    applyAsSsdArea
+                    (list-size detectedIds)))
+                (mainActivityHandleAreaSelectionAfterDelay
+                  activity
+                  view
+                  store
+                  rect
+                  detectedIds
+                  applyAsSsdArea
+                  confirmHaptic)))))
         (def (mainActivityHandleAreaSelectionAfterDelay
                (activity : MainActivity)
                (view : SsdReviewView)
@@ -10346,7 +10377,7 @@
        "        })"
        "        root.addView(status)"
 	       "        mainActivitySetReviewView(this, SsdReviewView(this).apply {"
-       "            mainActivityInstallReviewViewCallbacks(this@MainActivity, this, HapticFeedbackConstants.CLOCK_TICK)"
+       "            mainActivityInstallReviewViewCallbacks(this@MainActivity, this, truthStore, HapticFeedbackConstants.CLOCK_TICK, HapticFeedbackConstants.CONFIRM)"
 	       "        })"
        "        root.addView(reviewView, LinearLayout.LayoutParams("
        "            LinearLayout.LayoutParams.MATCH_PARENT,"
@@ -10586,17 +10617,6 @@
        "        )"
        "    }"
        ""
-       "    internal fun handleAreaSelected(rect: FloatArray, detectedIds: List<String>) {"
-	       "        if (sessionMissing(currentSession)) {"
-	       "            setStatus(selectionIgnoredLoadingStatus())"
-	       "            return"
-	       "        }"
-	       "        val applyAsSsdArea = ssdAreaMode"
-	       "        val statusText = areaSelectionStatus(applyAsSsdArea, detectedIds.size)"
-	       "        setStatus(statusText)"
-       "        mainActivityHandleAreaSelectionAfterDelay(this, reviewView, truthStore, rect, detectedIds, applyAsSsdArea, HapticFeedbackConstants.CONFIRM)"
-	       "    }"
-	       ""
        "    internal fun showApproveDialog(rect: FloatArray, detectedIds: List<String>) {"
 	       "        val session = currentSession"
 	       "        if (sessionMissing(session)) {"