Move SSD learned guess decision to typed Kotlin

ober

141d269fbb8e54e06421cdd7bce837eea5e52d2c

diff --git a/templates/ssd-review.ss b/templates/ssd-review.ss
index b55e93d..ab1f686 100644
--- a/templates/ssd-review.ss
+++ b/templates/ssd-review.ss
@@ -3839,7 +3839,7 @@
                 pageNumberText sessionIdFromUuid nullableLowercaseOrEmpty
                 selectModeStatus selectionResultStatus detectStartStatus
                 detectorSourceWithTruth detectionTruthNote detectionOcrNote
-                detectionLearnedNote
+                detectionLearnedNote shouldApplyLearnedGuesses
                 reviewPrimaryColor reviewWhiteColor reviewLabelTextColor
                 reviewLabelBackgroundColor reviewCanvasBackgroundColor
                 reviewAccentColor reviewModeColor reviewDarkTextColor
@@ -4288,6 +4288,8 @@
                 (int32->string learnedGuesses)
                 " learned guesses"))
             ""))
+        (def (shouldApplyLearnedGuesses (existingTruthGroupCount : Int32)) : Bool
+          (= existingTruthGroupCount (int32 0)))
         (def (reviewPrimaryColor) : Int32
           (androidColorRgb (int32 37) (int32 99) (int32 235)))
         (def (reviewWhiteColor) : Int32
@@ -5895,7 +5897,7 @@
        "                    session.ocrWords.addAll(SsdOcr.recognizeWords(bitmap))"
        "                    ocrGuesses = applyOcrGuesses(this, session, SsdOcr.patterns)"
        "                }"
-       "                val learnedGuesses = if (existingTruth == null || existingTruthGroupCount == 0) truthStore.applyLearnedGuesses(session) else 0"
+       "                val learnedGuesses = if (shouldApplyLearnedGuesses(existingTruthGroupCount)) truthStore.applyLearnedGuesses(session) else 0"
        "                runOnUiThread {"
        "                    if (!isCurrentLoad(expectedGeneration, uri, expectedPageIndex)) return@runOnUiThread"
        "                    currentSession = session"