From 0f2f594de4eb7736b36458dfb955a43af7e8c555 Mon Sep 17 00:00:00 2001 From: ronitchidara Date: Wed, 28 Jan 2026 18:03:56 +0530 Subject: [PATCH] fix(android): resolve Kotlin compilation errors MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Fix DeepLinkSheet import: com.clawdbot → bot.molt - Remove duplicate helper functions from NodeGatewaySync.kt - Make shared helpers internal in NodeRuntime.kt - Rename a2ui constants to uppercase (A2UI_READY_CHECK_JS, A2UI_RESET_JS) - Add missing padding/size imports in SettingsSheet.kt - Update EncryptedSharedPreferences to use MasterKey API Co-Authored-By: Claude Opus 4.5 --- .../java/bot/molt/android/NodeGatewaySync.kt | 68 ------------------- .../main/java/bot/molt/android/NodeRuntime.kt | 14 ++-- .../android/push/MoltbotMessagingService.kt | 7 +- .../java/bot/molt/android/ui/RootScreen.kt | 2 +- .../java/bot/molt/android/ui/SettingsSheet.kt | 2 + 5 files changed, 14 insertions(+), 79 deletions(-) diff --git a/apps/android/app/src/main/java/bot/molt/android/NodeGatewaySync.kt b/apps/android/app/src/main/java/bot/molt/android/NodeGatewaySync.kt index f4ddfc0b1..03441d1ea 100644 --- a/apps/android/app/src/main/java/bot/molt/android/NodeGatewaySync.kt +++ b/apps/android/app/src/main/java/bot/molt/android/NodeGatewaySync.kt @@ -258,71 +258,3 @@ internal fun NodeRuntime.parseLocationParams(paramsJson: String?): Triple { - try { - return !!globalThis.clawdbotA2UI && typeof globalThis.clawdbotA2UI.applyMessages === 'function'; - } catch (_) { - return false; - } -})() -""" - -internal const val A2UI_RESET_JS: String = """ -(() => { - try { - if (!globalThis.clawdbotA2UI) return { ok: false, error: "missing clawdbotA2UI" }; - return globalThis.clawdbotA2UI.reset(); - } catch (e) { - return { ok: false, error: String(e?.message ?? e) }; - } -})() -""" - -internal fun a2uiApplyMessagesJS(messagesJson: String): String { - return """ - (() => { - try { - if (!globalThis.clawdbotA2UI) return { ok: false, error: "missing clawdbotA2UI" }; - const messages = $messagesJson; - return globalThis.clawdbotA2UI.applyMessages(messages); - } catch (e) { - return { ok: false, error: String(e?.message ?? e) }; - } - })() - """.trimIndent() -} - -internal const val DEFAULT_SEAM_COLOR_ARGB: Long = 0xFF4F7A9A - -internal fun parseHexColorArgb(raw: String?): Long? { - val trimmed = raw?.trim().orEmpty() - if (trimmed.isEmpty()) return null - val hex = if (trimmed.startsWith("#")) trimmed.drop(1) else trimmed - if (hex.length != 6) return null - val rgb = hex.toLongOrNull(16) ?: return null - return 0xFF000000L or rgb -} - -// MARK: - JSON Helpers - -internal fun kotlinx.serialization.json.JsonElement?.asObjectOrNull(): JsonObject? = this as? JsonObject - -internal fun kotlinx.serialization.json.JsonElement?.asStringOrNull(): String? = - when (this) { - is kotlinx.serialization.json.JsonNull -> null - is JsonPrimitive -> content - else -> null - } - -private fun String.toJsonStringInternal(): String { - val escaped = this - .replace("\\", "\\\\") - .replace("\"", "\\\"") - .replace("\n", "\\n") - .replace("\r", "\\r") - return "\"$escaped\"" -} diff --git a/apps/android/app/src/main/java/bot/molt/android/NodeRuntime.kt b/apps/android/app/src/main/java/bot/molt/android/NodeRuntime.kt index 5fd429e9e..de081ffa1 100644 --- a/apps/android/app/src/main/java/bot/molt/android/NodeRuntime.kt +++ b/apps/android/app/src/main/java/bot/molt/android/NodeRuntime.kt @@ -1201,9 +1201,9 @@ class NodeRuntime(context: Context) { private data class Quad(val first: A, val second: B, val third: C, val fourth: D) -private const val DEFAULT_SEAM_COLOR_ARGB: Long = 0xFF4F7A9A +internal const val DEFAULT_SEAM_COLOR_ARGB: Long = 0xFF4F7A9A -private const val a2uiReadyCheckJS: String = +internal const val A2UI_READY_CHECK_JS: String = """ (() => { try { @@ -1214,7 +1214,7 @@ private const val a2uiReadyCheckJS: String = })() """ -private const val a2uiResetJS: String = +internal const val A2UI_RESET_JS: String = """ (() => { try { @@ -1226,7 +1226,7 @@ private const val a2uiResetJS: String = })() """ -private fun a2uiApplyMessagesJS(messagesJson: String): String { +internal fun a2uiApplyMessagesJS(messagesJson: String): String { return """ (() => { try { @@ -1249,16 +1249,16 @@ private fun String.toJsonString(): String { return "\"$escaped\"" } -private fun JsonElement?.asObjectOrNull(): JsonObject? = this as? JsonObject +internal fun JsonElement?.asObjectOrNull(): JsonObject? = this as? JsonObject -private fun JsonElement?.asStringOrNull(): String? = +internal fun JsonElement?.asStringOrNull(): String? = when (this) { is JsonNull -> null is JsonPrimitive -> content else -> null } -private fun parseHexColorArgb(raw: String?): Long? { +internal fun parseHexColorArgb(raw: String?): Long? { val trimmed = raw?.trim().orEmpty() if (trimmed.isEmpty()) return null val hex = if (trimmed.startsWith("#")) trimmed.drop(1) else trimmed diff --git a/apps/android/app/src/main/java/bot/molt/android/push/MoltbotMessagingService.kt b/apps/android/app/src/main/java/bot/molt/android/push/MoltbotMessagingService.kt index fc4820418..9be73b8f3 100644 --- a/apps/android/app/src/main/java/bot/molt/android/push/MoltbotMessagingService.kt +++ b/apps/android/app/src/main/java/bot/molt/android/push/MoltbotMessagingService.kt @@ -146,12 +146,13 @@ object PushTokenStore { private fun getSecurePrefs(context: Context): android.content.SharedPreferences { return try { + val masterKey = androidx.security.crypto.MasterKey.Builder(context) + .setKeyScheme(androidx.security.crypto.MasterKey.KeyScheme.AES256_GCM) + .build() androidx.security.crypto.EncryptedSharedPreferences.create( context, PREFS_NAME, - androidx.security.crypto.MasterKeys.getOrCreate( - androidx.security.crypto.MasterKeys.AES256_GCM_SPEC - ), + masterKey, androidx.security.crypto.EncryptedSharedPreferences.PrefKeyEncryptionScheme.AES256_SIV, androidx.security.crypto.EncryptedSharedPreferences.PrefValueEncryptionScheme.AES256_GCM ) diff --git a/apps/android/app/src/main/java/bot/molt/android/ui/RootScreen.kt b/apps/android/app/src/main/java/bot/molt/android/ui/RootScreen.kt index 720e2e70a..fdb9220f3 100644 --- a/apps/android/app/src/main/java/bot/molt/android/ui/RootScreen.kt +++ b/apps/android/app/src/main/java/bot/molt/android/ui/RootScreen.kt @@ -56,7 +56,7 @@ import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember import androidx.compose.runtime.setValue -import com.clawdbot.android.DeepLinkSheet +import bot.molt.android.DeepLinkSheet import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.graphics.Color as ComposeColor diff --git a/apps/android/app/src/main/java/bot/molt/android/ui/SettingsSheet.kt b/apps/android/app/src/main/java/bot/molt/android/ui/SettingsSheet.kt index fb806a949..1d77c16d5 100644 --- a/apps/android/app/src/main/java/bot/molt/android/ui/SettingsSheet.kt +++ b/apps/android/app/src/main/java/bot/molt/android/ui/SettingsSheet.kt @@ -23,7 +23,9 @@ import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height import androidx.compose.foundation.layout.imePadding import androidx.compose.foundation.layout.only +import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.safeDrawing +import androidx.compose.foundation.layout.size import androidx.compose.foundation.layout.windowInsetsPadding import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items