From ae57a0bf0928775f05c9ea4098c538231a56baca Mon Sep 17 00:00:00 2001 From: Nino Date: Mon, 27 Jul 2026 17:32:47 -0600 Subject: [PATCH] v1.0.4: Fix tiptapToMarkdown JsonElement type casting - tiptapToMarkdown used JsonObject.asMap() which returns Map - All 'as? String' casts silently failed (JsonPrimitive != String), returning empty - Now uses Gson TypeToken> for proper raw type deserialization - contentToMarkdown now handles Map types directly without serialize roundtrip --- app/build.gradle.kts | 4 ++-- .../java/com/docmost/app/ui/PageEditorActivity.kt | 15 ++++++++++++--- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 5b95bb0..00cb46a 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -20,8 +20,8 @@ android { applicationId = "com.docmost.app" minSdk = 26 targetSdk = 34 - versionCode = 4 - versionName = "1.0.3" + versionCode = 5 + versionName = "1.0.4" } signingConfigs { diff --git a/app/src/main/java/com/docmost/app/ui/PageEditorActivity.kt b/app/src/main/java/com/docmost/app/ui/PageEditorActivity.kt index 50495dc..c38bf1c 100644 --- a/app/src/main/java/com/docmost/app/ui/PageEditorActivity.kt +++ b/app/src/main/java/com/docmost/app/ui/PageEditorActivity.kt @@ -1877,9 +1877,9 @@ class PageEditorActivity : AppCompatActivity() { private fun tiptapToMarkdown(tiptapJson: String): String { return try { - val doc = gson.fromJson(tiptapJson, com.google.gson.JsonObject::class.java).asMap() - @Suppress("UNCHECKED_CAST") - extractText(doc as Map) + val type = object : com.google.gson.reflect.TypeToken>() {}.type + val doc: Map = gson.fromJson(tiptapJson, type) + extractText(doc) } catch (e: Exception) { tiptapJson } @@ -2492,6 +2492,15 @@ class PageEditorActivity : AppCompatActivity() { content } } + if (content is Map<*, *>) { + @Suppress("UNCHECKED_CAST") + return try { + extractText(content as Map) + } catch (e: Exception) { + android.util.Log.e("PageEditor", "contentToMarkdown map error: ${e.message}") + "" + } + } return try { val json = gson.toJson(content) if (json.isNotEmpty() && json != "null") {