Skip to content

Commit 4410bd3

Browse files
committed
fix: oops
1 parent de40778 commit 4410bd3

1 file changed

Lines changed: 94 additions & 0 deletions

File tree

Lines changed: 94 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,94 @@
1+
package dev.bluehouse.enablevolte.pages
2+
3+
import android.telephony.CarrierConfigManager
4+
import android.widget.Toast
5+
import androidx.compose.foundation.ExperimentalFoundationApi
6+
import androidx.compose.foundation.combinedClickable
7+
import androidx.compose.foundation.layout.Column
8+
import androidx.compose.foundation.layout.fillMaxWidth
9+
import androidx.compose.foundation.layout.padding
10+
import androidx.compose.foundation.rememberScrollState
11+
import androidx.compose.foundation.verticalScroll
12+
import androidx.compose.material3.Surface
13+
import androidx.compose.material3.Text
14+
import androidx.compose.runtime.Composable
15+
import androidx.compose.runtime.getValue
16+
import androidx.compose.runtime.mutableStateOf
17+
import androidx.compose.runtime.saveable.rememberSaveable
18+
import androidx.compose.runtime.setValue
19+
import androidx.compose.ui.Modifier
20+
import androidx.compose.ui.platform.LocalClipboardManager
21+
import androidx.compose.ui.platform.LocalContext
22+
import androidx.compose.ui.res.stringResource
23+
import androidx.compose.ui.text.buildAnnotatedString
24+
import androidx.compose.ui.text.font.FontFamily
25+
import androidx.compose.ui.unit.Dp
26+
import androidx.lifecycle.Lifecycle
27+
import dev.bluehouse.enablevolte.OnLifecycleEvent
28+
import dev.bluehouse.enablevolte.R
29+
import dev.bluehouse.enablevolte.SubscriptionModer
30+
31+
@OptIn(ExperimentalFoundationApi::class)
32+
@Composable
33+
fun DumpedConfig(subId: Int) {
34+
val scrollState = rememberScrollState()
35+
var dumpedConfig by rememberSaveable { mutableStateOf("") }
36+
val moder = SubscriptionModer(subId)
37+
val clipboardManager = LocalClipboardManager.current
38+
val context = LocalContext.current
39+
40+
val dumpDoneText = stringResource(R.string.dump_completed)
41+
42+
OnLifecycleEvent { _, event ->
43+
if (event == Lifecycle.Event.ON_CREATE) {
44+
val sb = CarrierConfigManager::class.java.declaredFields.filter {
45+
it.name.startsWith("KEY")
46+
}.map {
47+
try {
48+
val split = it.name.split("_")
49+
val value = it.get(it) as String
50+
when (split.last()) {
51+
"BOOL", "BOOLEAN" -> "${it.name}: ${moder.getBooleanValue(value)}"
52+
"STRING" -> "${it.name}: ${moder.getStringValue(value)}"
53+
"STRINGS" -> "${it.name}: ${moder.getStringArrayValue(value).joinToString(",")}"
54+
"INT" -> "${it.name}: ${moder.getIntValue(value)}"
55+
"LONG" -> "${it.name}: ${moder.getLongValue(value)}"
56+
"ARRAY" -> {
57+
when (split[split.size - 2]) {
58+
"INT" -> "${it.name}: [${moder.getIntArrayValue(value).joinToString(",")}]"
59+
"BOOL", "BOOLEAN" -> "${it.name}: [${moder.getBooleanArrayValue(value).joinToString(",")}]"
60+
"STRING" -> "${it.name}: [${moder.getStringArrayValue(value).joinToString(",")}]"
61+
else -> "${it.name}: Unknown (${split[split.size - 2]}Array)"
62+
}
63+
}
64+
else -> {
65+
val anyVal = moder.getValue(value)
66+
if (anyVal != null) {
67+
"${it.name}: $anyVal"
68+
} else {
69+
"${it.name}: Unknown (${split.last()})"
70+
}
71+
}
72+
}
73+
} catch (e: NullPointerException) {
74+
"${it.name}: null"
75+
}
76+
}
77+
dumpedConfig = sb.joinToString("\n")
78+
}
79+
}
80+
81+
Column(modifier = Modifier.padding(Dp(16f)).verticalScroll(scrollState)) {
82+
Surface(
83+
modifier = Modifier.fillMaxWidth().combinedClickable(
84+
onClick = {},
85+
onLongClick = {
86+
clipboardManager.setText(buildAnnotatedString { append(dumpedConfig) })
87+
Toast.makeText(context, dumpDoneText, Toast.LENGTH_SHORT).show()
88+
},
89+
),
90+
) {
91+
Text(text = dumpedConfig, fontFamily = FontFamily.Monospace)
92+
}
93+
}
94+
}

0 commit comments

Comments
 (0)