Move SSD append group mutation to typed Kotlin

ober

bf693eb6eb8fb489b9b833af7351c364a477cd67

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index 309f64b..951b0f9 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -563,7 +563,8 @@
                 ssdSessionCellIdSet
                 ssdSessionFindCellById ssdSessionCellsByIds
                 ssdSessionBBoxForCellIds ssdSessionRecomputeGroup
-                ssdSessionApproveGroup ssdSessionSuppressGroupAsDeleted
+                ssdSessionApproveGroup ssdSessionAppendAreaToGroup
+                ssdSessionSuppressGroupAsDeleted
                 appendUniqueCellIdsToGroup
                 ssdSessionAddDetectedCellsInsideArea ssdSessionAddOcrWords
                 ssdSessionBoundedSsdArea ssdAreaSelectionTooSmall
@@ -1040,6 +1041,15 @@
             (SsdGroup-status-set! group "reviewed")
             (SsdGroup-notes-set! group "Approved on Android")
             (ssdSessionRecomputeGroup session group)))
+        (def (ssdSessionAppendAreaToGroup (session : SsdSession)
+                                          (group : SsdGroup)
+                                          (ids : (List String))) : Int32
+          (let ((added (appendUniqueCellIdsToGroup group ids)))
+            (begin
+              (ssdSessionRecomputeGroup session group)
+              (SsdGroup-status-set! group "reviewed")
+              (SsdGroup-notes-set! group "Appended on Android")
+              added)))
         (def (ssdSessionSuppressGroupAsDeleted (session : SsdSession)
                                                (group : SsdGroup)) : Unit
           (begin
@@ -7484,10 +7494,7 @@
        "        val session = ssdSessionOrEmpty(currentSession)"
        "        if (ssdSessionGroupMissing(session, group)) return"
        "        val ids = selectedOrManualCellIds(session, rect, detectedIds, count)"
-       "        val added = appendUniqueCellIdsToGroup(group, ids)"
-       "        ssdSessionRecomputeGroup(session, group)"
-       "        group.status = \"reviewed\""
-       "        group.notes = \"Appended on Android\""
+       "        val added = ssdSessionAppendAreaToGroup(session, group, ids)"
        "        finishSelectInteraction()"
        "        selectedGroupId = group.id"
        "        reviewView.selectedGroupId = group.id"