Generate SSD activity result handling from typed Jerboa
ober
055c1554f8eb3bacaa7a6ce3c90f24379d2c73a0
--- a/templates/ssd-review.ss +++ b/templates/ssd-review.ss @@ -4927,6 +4927,7 @@ mainActivityRequestDownloadAccess mainActivityRememberAndBrowseSsdFolder mainActivitySyncSelectedTree + mainActivityHandleActivityResult mainActivityHandleReadStoragePermissionResult mainActivitySetPositiveChooseSsdPdfFolder mainActivitySetNeutralChooseSsdPdfFolder @@ -5139,10 +5140,16 @@ (resolver : ContentResolver) (uri : Uri)) : (Nullable InputStream) (kotlin-member-call openInputStream)) + (extern (contentResolverOpenOutputStreamRaw + (resolver : ContentResolver) + (uri : Uri)) : (Nullable OutputStream) + (kotlin-member-call openOutputStream)) (extern (sha1HexRaw (input : InputStream)) : String (kotlin-call sha1Hex)) (extern (uiInputStreamCloseRaw (input : InputStream)) : Unit (kotlin-member-call close)) + (extern (uiOutputStreamCloseRaw (output : OutputStream)) : Unit + (kotlin-member-call close)) (extern (uuidRandomRaw) : UUID (kotlin-call UUID randomUUID)) (extern (uuidToStringRaw (uuid : UUID)) : String @@ -8519,6 +8526,86 @@ uri (persistableReadWriteUriPermissionFlags flags)) (mainActivitySyncSelectedTreeAsync activity store uri))) + (def (mainActivityExportTruthZipToUri + (activity : MainActivity) + (store : TruthStore) + (uri : Uri)) : Unit + (let ((output + (contentResolverOpenOutputStreamRaw + (mainActivityContentResolverRaw activity) + uri))) + (if (nullable-null? output) + (begin) + (let ((stream (nullable-get output))) + (try-finally + (begin + (truthStoreExportZipArchive store stream) + (mainActivitySetStatusRaw + activity + (exportedTruthZipStatus))) + (uiOutputStreamCloseRaw stream)))))) + (def (mainActivityImportTruthZipFromUri + (activity : MainActivity) + (store : TruthStore) + (uri : Uri)) : Unit + (let ((input + (contentResolverOpenInputStreamRaw + (mainActivityContentResolverRaw activity) + uri))) + (if (nullable-null? input) + (begin) + (let ((stream (nullable-get input))) + (try-finally + (let ((count + (truthStoreImportZipArchive store stream))) + (mainActivitySetStatusRaw + activity + (importedTruthZipStatus + count + (truthStoreStorageSummary store)))) + (uiInputStreamCloseRaw stream)))))) + (def (mainActivityHandleActivityResult + (activity : MainActivity) + (store : TruthStore) + (requestCode : Int32) + (resultCode : Int32) + (data : (Nullable Intent)) + (okCode : Int32) + (requestOpenPdfCode : Int32) + (requestOpenTreeCode : Int32) + (requestExportZipCode : Int32) + (requestImportZipCode : Int32) + (requestSyncTreeCode : Int32) + (treePreferenceKey : String) + (lastPdfPreferenceKey : String)) : Unit + (if (activityResultRejected resultCode okCode) + (begin) + (if (intentDataUriPresent data) + (let ((uri (intentDataUriOrEmpty data)) + (flags (intentFlagsOrZero data))) + (if (requestIsOpenPdf requestCode requestOpenPdfCode) + (mainActivityLoadPdfRaw activity uri flags) + (if (requestIsOpenSsdPdfTree requestCode requestOpenTreeCode) + (mainActivityRememberAndBrowseSsdFolder + activity + uri + flags + treePreferenceKey + lastPdfPreferenceKey + requestOpenPdfCode + requestOpenTreeCode) + (if (requestIsExportZip requestCode requestExportZipCode) + (mainActivityExportTruthZipToUri activity store uri) + (if (requestIsImportZip requestCode requestImportZipCode) + (mainActivityImportTruthZipFromUri activity store uri) + (if (requestIsSyncTree requestCode requestSyncTreeCode) + (mainActivitySyncSelectedTree + activity + store + uri + flags) + (begin))))))) + (begin)))) (def (mainActivityHandleReadStoragePermissionResult (activity : MainActivity) (requestCode : Int32) @@ -11783,33 +11870,7 @@ "" " override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {" " super.onActivityResult(requestCode, resultCode, data)" - " if (activityResultRejected(resultCode, RESULT_OK)) return" - " if (!intentDataUriPresent(data)) return" - " val uri = intentDataUriOrEmpty(data)" - " val flags = intentFlagsOrZero(data)" - " if (requestIsOpenPdf(requestCode, REQ_OPEN_PDF)) {" - " loadPdf(uri, flags)" - " } else if (requestIsOpenSsdPdfTree(requestCode, REQ_OPEN_SSD_PDF_TREE)) {" - " mainActivityRememberAndBrowseSsdFolder(this, uri, flags, PREF_SSD_PDF_TREE_URI, PREF_LAST_PDF_URI, REQ_OPEN_PDF, REQ_OPEN_SSD_PDF_TREE)" - " } else if (requestIsExportZip(requestCode, REQ_EXPORT_ZIP)) {" - " val output = contentResolver.openOutputStream(uri)" - " if (outputStreamPresent(output)) {" - " checkNotNull(output).use {" - " truthStoreExportZipArchive(truthStore, it)" - " setStatus(exportedTruthZipStatus())" - " }" - " }" - " } else if (requestIsImportZip(requestCode, REQ_IMPORT_ZIP)) {" - " val input = contentResolver.openInputStream(uri)" - " if (inputStreamPresent(input)) {" - " checkNotNull(input).use {" - " val count = truthStoreImportZipArchive(truthStore, it)" - " setStatus(importedTruthZipStatus(count, truthStoreStorageSummary(truthStore)))" - " }" - " }" - " } else if (requestIsSyncTree(requestCode, REQ_SYNC_TREE)) {" - " mainActivitySyncSelectedTree(this, truthStore, uri, flags)" - " }" + " mainActivityHandleActivityResult(this, truthStore, requestCode, resultCode, data, RESULT_OK, REQ_OPEN_PDF, REQ_OPEN_SSD_PDF_TREE, REQ_EXPORT_ZIP, REQ_IMPORT_ZIP, REQ_SYNC_TREE, PREF_SSD_PDF_TREE_URI, PREF_LAST_PDF_URI)" " }" "" " override fun onRequestPermissionsResult("