Move SSD activity state checks to typed Kotlin
ober
e271629585178bb1fe61e0acbd2043e3029c19dd
--- a/templates/ssd-review.ss +++ b/templates/ssd-review.ss @@ -4201,11 +4201,14 @@ ssdBrowserResumeReady focusChangeShouldShowDropdown dialogReadyToShowDropdown focusedDialogReadyToShowDropdown permissionResultGranted downloadAccessBeforeRuntimePermissions - downloadAccessFromPermission viewportScalePreferencePresent + downloadAccessFromPermission activityResultRejected + shouldPersistLoadedPdfState viewportScalePreferencePresent + lastPdfUriMismatch lastViewportPageMismatch displayNameColumnPresent displayNameCursorHasFirstRow currentLoadMatches packageUriText mediaStorePdfSelection mediaStoreDisplayNameSort + shouldSkipSsdPdfChoiceName requestIsOpenPdf requestIsOpenSsdPdfTree requestIsExportZip requestIsImportZip requestIsSyncTree requestIsReadStorage @@ -4689,8 +4692,17 @@ beforeRuntimePermissions) (def (downloadAccessFromPermission (permissionGranted : Bool)) : Bool permissionGranted) + (def (activityResultRejected (resultCode : Int32) (okCode : Int32)) : Bool + (not (= resultCode okCode))) + (def (shouldPersistLoadedPdfState (restoring : Bool)) : Bool + (not restoring)) (def (viewportScalePreferencePresent (present : Bool)) : Bool present) + (def (lastPdfUriMismatch (saved : (Nullable String)) (uriText : String)) : Bool + (or (nullable-null? saved) + (not (equal? (nullable-get saved) uriText)))) + (def (lastViewportPageMismatch (savedPage : Int32) (page : Int32)) : Bool + (not (= savedPage page))) (def (displayNameColumnPresent (columnIndex : Int32)) : Bool (>= columnIndex (int32 0))) (def (displayNameCursorHasFirstRow (hasFirstRow : Bool)) : Bool @@ -4718,6 +4730,10 @@ (string-append displayNameColumn " LIKE ?)"))))) (def (mediaStoreDisplayNameSort (displayNameColumn : String)) : String (string-append displayNameColumn " COLLATE NOCASE ASC")) + (def (shouldSkipSsdPdfChoiceName (name : String) + (currentChoices : Int32) + (limit : Int32)) : Bool + (not (shouldIncludeSsdPdfChoiceName name currentChoices limit))) (def (requestCodeMatches (requestCode : Int32) (expected : Int32)) : Bool (= requestCode expected)) (def (requestIsOpenPdf (requestCode : Int32) (expected : Int32)) : Bool @@ -6930,7 +6946,7 @@ "" " override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {" " super.onActivityResult(requestCode, resultCode, data)" - " if (resultCode != RESULT_OK) return" + " if (activityResultRejected(resultCode, RESULT_OK)) return" " val uri = data?.data ?: return" " if (requestIsOpenPdf(requestCode, REQ_OPEN_PDF)) {" " loadPdf(uri, data.flags)" @@ -7066,7 +7082,7 @@ " val pathCol = cursor.getColumnIndexOrThrow(MediaStore.MediaColumns.RELATIVE_PATH)" " while (cursor.moveToNext()) {" " val name = cursor.getString(nameCol) ?: continue" - " if (!shouldIncludeSsdPdfChoiceName(name, choices.size, MAX_SSD_PDF_CHOICES)) continue" + " if (shouldSkipSsdPdfChoiceName(name, choices.size, MAX_SSD_PDF_CHOICES)) continue" " val id = cursor.getLong(idCol)" " val relativePath = cursor.getString(pathCol)?.trim('/') ?: \"\"" " val label = ssdPdfDownloadLabel(relativePath, name)" @@ -7183,7 +7199,7 @@ " pdfSha1 = hash" " pageCount = count" " pageIndex = clampPageIndex(initialPageIndex, count)" - " if (!restoring) persistCurrentPdfState(includeViewport = false)" + " if (shouldPersistLoadedPdfState(restoring)) persistCurrentPdfState(includeViewport = false)" " setStatus(loadedPdfStatus(pdfName, pageCount))" " renderCurrentPage()" " }" @@ -7236,8 +7252,8 @@ "" " private fun restoredViewportFor(uri: Uri, page: Int): ViewportState? {" " val prefs = getPreferences(MODE_PRIVATE)" - " if (prefs.getString(PREF_LAST_PDF_URI, null) != uri.toString()) return null" - " if (prefs.getInt(PREF_LAST_VIEWPORT_PAGE_INDEX, -1) != page) return null" + " if (lastPdfUriMismatch(prefs.getString(PREF_LAST_PDF_URI, null), uri.toString())) return null" + " if (lastViewportPageMismatch(prefs.getInt(PREF_LAST_VIEWPORT_PAGE_INDEX, -1), page)) return null" " if (!viewportScalePreferencePresent(prefs.contains(PREF_LAST_VIEWPORT_SCALE))) return null" " return ViewportState(" " prefs.getFloat(PREF_LAST_VIEWPORT_SCALE, 1f),"