Compare commits
12 commits
8ec77a648b
...
e6a37c25dc
Author | SHA1 | Date | |
---|---|---|---|
e6a37c25dc | |||
1c89b9c042 | |||
ca4845f3c9 | |||
b92592f3d6 | |||
87f32c2ac4 | |||
9541c14112 | |||
a4b74c3c57 | |||
05c9deac5e | |||
7226c5ac6f | |||
81e728fad6 | |||
5b30916350 | |||
1509a4cd42 |
2 changed files with 71 additions and 3 deletions
|
@ -8,7 +8,6 @@ import android.view.ViewGroup
|
||||||
import android.widget.TextView
|
import android.widget.TextView
|
||||||
import im.angry.openeuicc.common.R
|
import im.angry.openeuicc.common.R
|
||||||
import im.angry.openeuicc.util.*
|
import im.angry.openeuicc.util.*
|
||||||
import org.json.JSONObject
|
|
||||||
import java.util.Date
|
import java.util.Date
|
||||||
|
|
||||||
class DownloadWizardDiagnosticsFragment : DownloadWizardActivity.DownloadWizardStepFragment() {
|
class DownloadWizardDiagnosticsFragment : DownloadWizardActivity.DownloadWizardStepFragment() {
|
||||||
|
@ -87,10 +86,9 @@ class DownloadWizardDiagnosticsFragment : DownloadWizardActivity.DownloadWizardS
|
||||||
ret.appendLine()
|
ret.appendLine()
|
||||||
|
|
||||||
val str = resp.data.decodeToString(throwOnInvalidSequence = false)
|
val str = resp.data.decodeToString(throwOnInvalidSequence = false)
|
||||||
|
|
||||||
ret.appendLine(
|
ret.appendLine(
|
||||||
if (str.startsWith('{')) {
|
if (str.startsWith('{')) {
|
||||||
JSONObject(str).toString(2)
|
str.prettyPrintJson()
|
||||||
} else {
|
} else {
|
||||||
str
|
str
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,3 +41,73 @@ fun parseIsdrAidList(s: String): List<ByteArray> =
|
||||||
.filter(String::isNotEmpty)
|
.filter(String::isNotEmpty)
|
||||||
.mapNotNull { runCatching(it::decodeHex).getOrNull() }
|
.mapNotNull { runCatching(it::decodeHex).getOrNull() }
|
||||||
.ifEmpty { listOf(EUICC_DEFAULT_ISDR_AID.decodeHex()) }
|
.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()
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue