From dc66b60d1833b4cb11cd2cdf50ad531c3449f26f Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 6 Apr 2026 05:04:47 +0000 Subject: [PATCH] =?UTF-8?q?fix:=20null=20alias=20display=20=E2=80=94=20And?= =?UTF-8?q?roid=20JSONObject.optString=20returns=20literal=20"null"?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit o.optString("alias", null) returns the string "null" when the JSON value is JSON null. Use o.isNull() check first. Also handle empty fingerprint edge case with "unknown" fallback. Co-Authored-By: Claude Opus 4.6 (1M context) --- android/app/src/main/java/com/wzp/engine/CallStats.kt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/android/app/src/main/java/com/wzp/engine/CallStats.kt b/android/app/src/main/java/com/wzp/engine/CallStats.kt index d4e4f41..17ac4cb 100644 --- a/android/app/src/main/java/com/wzp/engine/CallStats.kt +++ b/android/app/src/main/java/com/wzp/engine/CallStats.kt @@ -54,7 +54,7 @@ data class CallStats( val o = arr.getJSONObject(i) RoomMember( fingerprint = o.optString("fingerprint", ""), - alias = o.optString("alias", null) + alias = if (o.isNull("alias")) null else o.optString("alias", null) ) } } @@ -92,5 +92,6 @@ data class RoomMember( ) { /** Short display name: alias if set, otherwise first 8 chars of fingerprint. */ val displayName: String - get() = alias ?: fingerprint.take(8) + get() = alias?.takeIf { it.isNotBlank() } + ?: fingerprint.take(8).ifEmpty { "unknown" } }