Compare commits

..

12 commits

Author SHA1 Message Date
e6a37c25dc
Merge branch 'master' into quick-availability 2025-07-11 22:00:58 +08:00
1c89b9c042
fix: typo 2025-07-10 13:28:18 +08:00
ca4845f3c9
chore: simplify launch main activity 2025-07-07 20:08:52 +08:00
b92592f3d6
chore: update pref name 2025-07-07 19:46:08 +08:00
87f32c2ac4
refactor: activity 2025-07-07 19:32:20 +08:00
9541c14112
refactor: activity 2025-07-07 17:00:48 +08:00
a4b74c3c57
refactor: activity 2025-07-07 15:05:14 +08:00
05c9deac5e
refactor: activity 2025-07-07 14:48:37 +08:00
7226c5ac6f
refactor: activity 2025-07-07 13:26:01 +08:00
81e728fad6
refactor: ui factory 2025-07-07 13:14:37 +08:00
5b30916350
chore: improve marker 2025-07-07 04:48:41 +08:00
1509a4cd42
feat: quick availability 2025-07-07 04:31:39 +08:00
2 changed files with 71 additions and 3 deletions

View file

@ -8,7 +8,6 @@ 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() {
@ -87,10 +86,9 @@ class DownloadWizardDiagnosticsFragment : DownloadWizardActivity.DownloadWizardS
ret.appendLine()
val str = resp.data.decodeToString(throwOnInvalidSequence = false)
ret.appendLine(
if (str.startsWith('{')) {
JSONObject(str).toString(2)
str.prettyPrintJson()
} else {
str
}

View file

@ -41,3 +41,73 @@ 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()
}