Browse Source

chore: simplify pretty print json string (#201)

https://developer.android.com/reference/org/json/JSONObject
Reviewed-on: https://gitea.angry.im/PeterCxy/OpenEUICC/pulls/201
Co-authored-by: septs <github@septs.pw>
Co-committed-by: septs <github@septs.pw>
septs 6 months ago
parent
commit
6d43a9207c

+ 3 - 1
app-common/src/main/java/im/angry/openeuicc/ui/wizard/DownloadWizardDiagnosticsFragment.kt

@@ -8,6 +8,7 @@ import android.view.ViewGroup
 import android.widget.TextView
 import im.angry.openeuicc.common.R
 import im.angry.openeuicc.util.*
+import org.json.JSONObject
 import java.util.Date
 
 class DownloadWizardDiagnosticsFragment : DownloadWizardActivity.DownloadWizardStepFragment() {
@@ -86,9 +87,10 @@ class DownloadWizardDiagnosticsFragment : DownloadWizardActivity.DownloadWizardS
             ret.appendLine()
 
             val str = resp.data.decodeToString(throwOnInvalidSequence = false)
+
             ret.appendLine(
                 if (str.startsWith('{')) {
-                    str.prettyPrintJson()
+                    JSONObject(str).toString(2)
                 } else {
                     str
                 }

+ 0 - 70
app-common/src/main/java/im/angry/openeuicc/util/StringUtils.kt

@@ -41,73 +41,3 @@ fun parseIsdrAidList(s: String): List<ByteArray> =
         .filter(String::isNotEmpty)
         .mapNotNull { runCatching(it::decodeHex).getOrNull() }
         .ifEmpty { listOf(EUICC_DEFAULT_ISDR_AID.decodeHex()) }
-
-fun String.prettyPrintJson(): String {
-    val ret = StringBuilder()
-    var inQuotes = false
-    var escaped = false
-    val indentSymbolStack = ArrayDeque<Char>()
-
-    val addNewLine = {
-        ret.append('\n')
-        repeat(indentSymbolStack.size) {
-            ret.append('\t')
-        }
-    }
-
-    var lastChar = ' '
-
-    for (c in this) {
-        when {
-            !inQuotes && (c == '{' || c == '[') -> {
-                ret.append(c)
-                indentSymbolStack.addLast(c)
-                addNewLine()
-            }
-
-            !inQuotes && (c == '}' || c == ']') -> {
-                indentSymbolStack.removeLast()
-                if (lastChar != ',') {
-                    addNewLine()
-                }
-                ret.append(c)
-            }
-
-            !inQuotes && c == ',' -> {
-                ret.append(c)
-                addNewLine()
-            }
-
-            !inQuotes && c == ':' -> {
-                ret.append(c)
-                ret.append(' ')
-            }
-
-            inQuotes && c == '\\' -> {
-                ret.append(c)
-                escaped = true
-                continue
-            }
-
-            !escaped && c == '"' -> {
-                ret.append(c)
-                inQuotes = !inQuotes
-            }
-
-            !inQuotes && c == ' ' -> {
-                // Do nothing -- we ignore spaces outside of quotes by default
-                // This is to ensure predictable formatting
-            }
-
-            else -> ret.append(c)
-        }
-
-        if (escaped) {
-            escaped = false
-        }
-
-        lastChar = c
-    }
-
-    return ret.toString()
-}