@@ -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
191203private fun InterceptionButton (
192204 icon : Int ,
0 commit comments