commit 31ae06ed625d87fa6ab6ced8b774938ddb6c1f24
parent c72cc1d3203245a8a812f7917ea99c6defa4a3c0
Author: rhunk <101876869+rhunk@users.noreply.github.com>
Date:   Sat,  8 Jun 2024 21:31:47 +0200

refactor: composer loader

Signed-off-by: rhunk <101876869+rhunk@users.noreply.github.com>

Diffstat:
Mapp/src/main/kotlin/me/rhunk/snapenhance/RemoteFileHandleManager.kt | 6++++++
Mapp/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt | 6------
Mcommon/src/main/kotlin/me/rhunk/snapenhance/common/bridge/BridgeFiles.kt | 3++-
Mcore/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/ComposerHooks.kt | 15+++++++--------
4 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/RemoteFileHandleManager.kt b/app/src/main/kotlin/me/rhunk/snapenhance/RemoteFileHandleManager.kt @@ -91,6 +91,12 @@ class RemoteFileHandleManager( File(userImportFolder, name.substringAfterLast("/")) ) } + FileHandleScope.COMPOSER -> { + return AssetFileHandle( + context, + "composer/${name.substringAfterLast("/")}" + ) + } else -> return null } } diff --git a/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt b/app/src/main/kotlin/me/rhunk/snapenhance/scripting/RemoteScriptManager.kt @@ -193,12 +193,6 @@ class RemoteScriptManager( } override fun getScriptContent(moduleName: String): ParcelFileDescriptor? { - if (moduleName.startsWith("composer/")) { - return runCatching { - context.androidContext.assets.open("composer/${moduleName.removePrefix("composer/")}") - .toParcelFileDescriptor(context.coroutineScope) - }.getOrNull() - } return getScriptInputStream(moduleName) { it?.toParcelFileDescriptor(context.coroutineScope) } } diff --git a/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/BridgeFiles.kt b/common/src/main/kotlin/me/rhunk/snapenhance/common/bridge/BridgeFiles.kt @@ -15,7 +15,8 @@ enum class FileHandleScope( ) { INTERNAL("internal"), LOCALE("locale"), - USER_IMPORT("user_import"); + USER_IMPORT("user_import"), + COMPOSER("composer"); companion object { fun fromValue(name: String): FileHandleScope? = entries.find { it.key == name } diff --git a/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/ComposerHooks.kt b/core/src/main/kotlin/me/rhunk/snapenhance/core/features/impl/experiments/ComposerHooks.kt @@ -19,6 +19,8 @@ import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.unit.dp import androidx.compose.ui.unit.sp import kotlinx.coroutines.launch +import me.rhunk.snapenhance.common.bridge.FileHandleScope +import me.rhunk.snapenhance.common.bridge.toWrapper import me.rhunk.snapenhance.common.ui.AppMaterialTheme import me.rhunk.snapenhance.common.ui.createComposeAlertDialog import me.rhunk.snapenhance.common.ui.createComposeView @@ -193,14 +195,11 @@ class ComposerHooks: Feature("ComposerHooks", loadParams = FeatureLoadParams.INI context.log.error("ComposerHooks cannot be loaded without NativeLib") return } - val loaderScript = context.scriptRuntime.scripting.getScriptContent("composer/loader.js")?.let { pfd -> - ParcelFileDescriptor.AutoCloseInputStream(pfd).use { - it.readBytes().toString(Charsets.UTF_8) - } - } ?: run { - context.log.error("Failed to load composer loader script") - return - } + val loaderScript = runCatching { + context.fileHandlerManager.getFileHandle(FileHandleScope.COMPOSER.key, "loader.js").toWrapper().readBytes().toString(Charsets.UTF_8) + }.onFailure { + context.log.error("Failed to load composer loader script", it) + }.getOrNull() ?: return context.native.setComposerLoader(""" (() => { const _getImportsFunctionName = "$getImportsFunctionName"; $loaderScript })(); """.trimIndent().trim())