Skip to content

Commit aef57fe

Browse files
committed
Refactor out lots of component details for clarity
1 parent 40dc4a7 commit aef57fe

File tree

2 files changed

+202
-251
lines changed

2 files changed

+202
-251
lines changed

app/src/main/java/tech/httptoolkit/android/connection/ConnectionStatusScreen.kt

Lines changed: 62 additions & 50 deletions
Original file line numberDiff line numberDiff line change
@@ -59,57 +59,10 @@ fun ConnectionStatusScreen(
5959
.padding(bottom = 24.dp)
6060
)
6161

62-
val successColor = MaterialTheme.colorScheme.success
6362
when (certTrustStatus) {
64-
"user" -> {
65-
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
66-
// Pre-Android 7: User trust is sufficient
67-
CertificateStatusCard(
68-
icon = Icons.Default.Check,
69-
iconTint = successColor,
70-
heading = stringResource(R.string.pre_v7_connection_status_enabled_heading),
71-
details = stringResource(R.string.pre_v7_connection_status_details)
72-
)
73-
} else {
74-
// Android 7+: User trust is limited
75-
CertificateStatusCard(
76-
icon = Icons.Default.Check,
77-
iconTint = successColor,
78-
heading = stringResource(R.string.user_connection_status_enabled_heading)
79-
)
80-
81-
CertificateStatusCard(
82-
icon = Icons.Default.Warning,
83-
iconTint = MaterialTheme.colorScheme.error,
84-
heading = stringResource(R.string.system_connection_status_disabled_heading),
85-
details = stringResource(R.string.user_connection_status_details)
86-
)
87-
}
88-
}
89-
"system" -> {
90-
// System trust: show BOTH user and system cards
91-
CertificateStatusCard(
92-
icon = Icons.Default.Check,
93-
iconTint = successColor,
94-
heading = stringResource(R.string.user_connection_status_enabled_heading)
95-
)
96-
97-
CertificateStatusCard(
98-
icon = Icons.Default.Check,
99-
iconTint = successColor,
100-
heading = stringResource(R.string.system_connection_status_enabled_heading),
101-
details = stringResource(R.string.system_connection_status_details)
102-
)
103-
}
104-
else -> {
105-
// No certificate trust
106-
CertificateStatusCard(
107-
icon = Icons.Default.Warning,
108-
iconTint = MaterialTheme.colorScheme.error,
109-
heading = stringResource(R.string.disabled_connection_status_heading),
110-
details = stringResource(R.string.none_connection_status_details)
111-
)
112-
}
63+
"user" -> UserCertificateTrustCards()
64+
"system" -> SystemCertificateTrustCards()
65+
else -> NoCertificateTrustCard()
11366
}
11467

11568
// App and Port interception buttons
@@ -187,6 +140,65 @@ private fun CertificateStatusCard(
187140
}
188141
}
189142

143+
@Composable
144+
private fun UserCertificateTrustCards() {
145+
val successColor = MaterialTheme.colorScheme.success
146+
147+
if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) {
148+
// Pre-Android 7: User trust is sufficient
149+
CertificateStatusCard(
150+
icon = Icons.Default.Check,
151+
iconTint = successColor,
152+
heading = stringResource(R.string.pre_v7_connection_status_enabled_heading),
153+
details = stringResource(R.string.pre_v7_connection_status_details)
154+
)
155+
} else {
156+
// Android 7+: User trust is limited
157+
CertificateStatusCard(
158+
icon = Icons.Default.Check,
159+
iconTint = successColor,
160+
heading = stringResource(R.string.user_connection_status_enabled_heading)
161+
)
162+
163+
CertificateStatusCard(
164+
icon = Icons.Default.Warning,
165+
iconTint = MaterialTheme.colorScheme.error,
166+
heading = stringResource(R.string.system_connection_status_disabled_heading),
167+
details = stringResource(R.string.user_connection_status_details)
168+
)
169+
}
170+
}
171+
172+
@Composable
173+
private fun SystemCertificateTrustCards() {
174+
val successColor = MaterialTheme.colorScheme.success
175+
176+
// System trust: show BOTH user and system cards
177+
CertificateStatusCard(
178+
icon = Icons.Default.Check,
179+
iconTint = successColor,
180+
heading = stringResource(R.string.user_connection_status_enabled_heading)
181+
)
182+
183+
CertificateStatusCard(
184+
icon = Icons.Default.Check,
185+
iconTint = successColor,
186+
heading = stringResource(R.string.system_connection_status_enabled_heading),
187+
details = stringResource(R.string.system_connection_status_details)
188+
)
189+
}
190+
191+
@Composable
192+
private fun NoCertificateTrustCard() {
193+
// No certificate trust
194+
CertificateStatusCard(
195+
icon = Icons.Default.Warning,
196+
iconTint = MaterialTheme.colorScheme.error,
197+
heading = stringResource(R.string.disabled_connection_status_heading),
198+
details = stringResource(R.string.none_connection_status_details)
199+
)
200+
}
201+
190202
@Composable
191203
private fun InterceptionButton(
192204
icon: Int,

0 commit comments

Comments
 (0)