Skip to content

Commit 3b314c4

Browse files
ArnyminerZrfc2822
andauthored
Migrate to m3 (#40)
* Upgrade dependencies Signed-off-by: Arnau Mora Gras <[email protected]> * Using new Compose Compiler plugin Signed-off-by: Arnau Mora Gras <[email protected]> * Upgrade AGP Signed-off-by: Arnau Mora Gras <[email protected]> * Migrated to M3 Signed-off-by: Arnau Mora Gras <[email protected]> * Upgrade dependency versions * Got rid of Matrix * Upgrade JDK to 21 * Upgrade Conscrypt * Missing JDK upgrade * Upgrade Gradle Wrapper * Fixed theme * Upgrade SDK level * Add safe drawing padding (edge-to-edge) --------- Signed-off-by: Arnau Mora Gras <[email protected]> Co-authored-by: Ricki Hirner <[email protected]>
1 parent 65de909 commit 3b314c4

File tree

6 files changed

+71
-56
lines changed

6 files changed

+71
-56
lines changed

gradle/libs.versions.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ androidx-test-core = { module = "androidx.test:core-ktx", version.ref = "android
2626
androidx-test-runner = { module = "androidx.test:runner", version.ref = "androidx-test-runner" }
2727
androidx-test-rules = { module = "androidx.test:rules", version.ref = "androidx-test-rules" }
2828
compose-bom = { group = "androidx.compose", name = "compose-bom", version.ref = "compose-bom" }
29-
compose-material = { module = "androidx.compose.material:material" }
29+
compose-material3 = { module = "androidx.compose.material3:material3" }
3030
compose-runtime-livedata = { module = "androidx.compose.runtime:runtime-livedata" }
3131
compose-ui-base = { module = "androidx.compose.ui:ui" }
3232
compose-ui-graphics = { module = "androidx.compose.ui:ui-graphics" }

lib/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -94,7 +94,7 @@ dependencies {
9494
// Jetpack Compose
9595
implementation(libs.androidx.activityCompose)
9696
implementation(platform(libs.compose.bom))
97-
implementation(libs.compose.material)
97+
implementation(libs.compose.material3)
9898
implementation(libs.compose.runtime.livedata)
9999
debugImplementation(libs.compose.ui.tooling)
100100
implementation(libs.compose.ui.toolingPreview)

lib/src/main/java/at/bitfire/cert4android/Cert4Android.kt

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,11 @@
55
package at.bitfire.cert4android
66

77
import android.util.Log
8-
import androidx.compose.material.MaterialTheme
8+
import androidx.compose.foundation.layout.Box
9+
import androidx.compose.foundation.layout.safeDrawingPadding
10+
import androidx.compose.material3.MaterialTheme
911
import androidx.compose.runtime.Composable
12+
import androidx.compose.ui.Modifier
1013
import java.util.logging.Level
1114
import java.util.logging.Logger
1215

@@ -28,7 +31,11 @@ object Cert4Android {
2831
// theme
2932

3033
var theme: @Composable (content: @Composable () -> Unit) -> Unit = { content ->
31-
MaterialTheme(content = content)
34+
MaterialTheme {
35+
Box(Modifier.safeDrawingPadding()) {
36+
content()
37+
}
38+
}
3239
}
3340

3441
}

lib/src/main/java/at/bitfire/cert4android/TrustCertificateActivity.kt

Lines changed: 50 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import android.os.Bundle
1010
import androidx.activity.ComponentActivity
1111
import androidx.activity.compose.BackHandler
1212
import androidx.activity.compose.setContent
13+
import androidx.activity.enableEdgeToEdge
1314
import androidx.activity.viewModels
1415
import androidx.annotation.StringRes
1516
import androidx.compose.foundation.clickable
@@ -19,14 +20,14 @@ import androidx.compose.foundation.layout.fillMaxWidth
1920
import androidx.compose.foundation.layout.padding
2021
import androidx.compose.foundation.rememberScrollState
2122
import androidx.compose.foundation.verticalScroll
22-
import androidx.compose.material.Card
23-
import androidx.compose.material.Checkbox
24-
import androidx.compose.material.MaterialTheme
25-
import androidx.compose.material.Scaffold
26-
import androidx.compose.material.SnackbarHost
27-
import androidx.compose.material.SnackbarHostState
28-
import androidx.compose.material.Text
29-
import androidx.compose.material.TextButton
23+
import androidx.compose.material3.Card
24+
import androidx.compose.material3.Checkbox
25+
import androidx.compose.material3.MaterialTheme
26+
import androidx.compose.material3.Scaffold
27+
import androidx.compose.material3.SnackbarHost
28+
import androidx.compose.material3.SnackbarHostState
29+
import androidx.compose.material3.Text
30+
import androidx.compose.material3.TextButton
3031
import androidx.compose.runtime.Composable
3132
import androidx.compose.runtime.LaunchedEffect
3233
import androidx.compose.runtime.getValue
@@ -74,11 +75,15 @@ class TrustCertificateActivity : ComponentActivity() {
7475
processIntent(newIntent)
7576
}
7677

78+
enableEdgeToEdge()
79+
7780
setContent {
78-
MainLayout(
79-
onRegisterDecision = { trusted -> model.registerDecision(trusted) },
80-
onFinish = { finish() }
81-
)
81+
Cert4Android.theme {
82+
MainLayout(
83+
onRegisterDecision = { trusted -> model.registerDecision(trusted) },
84+
onFinish = { finish() }
85+
)
86+
}
8287
}
8388
}
8489

@@ -124,37 +129,35 @@ class TrustCertificateActivity : ComponentActivity() {
124129
backPressedCounter = newBackPressedCounter
125130
}
126131

127-
Cert4Android.theme {
128-
Scaffold(
129-
snackbarHost = { SnackbarHost(snackbarHostState) },
130-
modifier = Modifier.padding(16.dp)
131-
) { paddingValues ->
132-
Column(
132+
Scaffold(
133+
snackbarHost = { SnackbarHost(snackbarHostState) },
134+
modifier = Modifier.padding(16.dp)
135+
) { paddingValues ->
136+
Column(
137+
modifier = Modifier
138+
.padding(paddingValues)
139+
.verticalScroll(rememberScrollState()),
140+
) {
141+
Text(
142+
text = stringResource(R.string.trust_certificate_unknown_certificate_found),
143+
style = MaterialTheme.typography.bodySmall,
133144
modifier = Modifier
134-
.padding(paddingValues)
135-
.verticalScroll(rememberScrollState()),
136-
) {
137-
Text(
138-
text = stringResource(R.string.trust_certificate_unknown_certificate_found),
139-
style = MaterialTheme.typography.body1,
140-
modifier = Modifier
141-
.fillMaxWidth()
142-
.padding(bottom = 16.dp)
143-
)
145+
.fillMaxWidth()
146+
.padding(bottom = 16.dp)
147+
)
144148

145-
CertificateCard(
146-
uiState = uiState,
147-
onRegisterDecision = onRegisterDecision
148-
)
149+
CertificateCard(
150+
uiState = uiState,
151+
onRegisterDecision = onRegisterDecision
152+
)
149153

150-
Text(
151-
text = stringResource(R.string.trust_certificate_reset_info),
152-
style = MaterialTheme.typography.body1,
153-
modifier = Modifier
154-
.fillMaxWidth()
155-
.padding(top = 16.dp),
156-
)
157-
}
154+
Text(
155+
text = stringResource(R.string.trust_certificate_reset_info),
156+
style = MaterialTheme.typography.bodySmall,
157+
modifier = Modifier
158+
.fillMaxWidth()
159+
.padding(top = 16.dp),
160+
)
158161
}
159162
}
160163
}
@@ -174,7 +177,7 @@ class TrustCertificateActivity : ComponentActivity() {
174177
) {
175178
Text(
176179
text = stringResource(R.string.trust_certificate_x509_certificate_details),
177-
style = MaterialTheme.typography.h5,
180+
style = MaterialTheme.typography.titleMedium,
178181
modifier = Modifier
179182
.fillMaxWidth()
180183
.padding(bottom = 16.dp),
@@ -201,14 +204,14 @@ class TrustCertificateActivity : ComponentActivity() {
201204
if (sha1 != null || sha256 != null) {
202205
Text(
203206
text = stringResource(R.string.trust_certificate_fingerprints).uppercase(),
204-
style = MaterialTheme.typography.body2,
207+
style = MaterialTheme.typography.bodyMedium,
205208
modifier = Modifier.fillMaxWidth(),
206209
)
207210

208211
if (sha1 != null)
209212
Text(
210213
text = sha1,
211-
style = MaterialTheme.typography.body2,
214+
style = MaterialTheme.typography.bodyMedium,
212215
modifier = Modifier
213216
.fillMaxWidth()
214217
.padding(bottom = 16.dp, top = 4.dp),
@@ -217,7 +220,7 @@ class TrustCertificateActivity : ComponentActivity() {
217220
if (sha256 != null)
218221
Text(
219222
text = sha256,
220-
style = MaterialTheme.typography.body2,
223+
style = MaterialTheme.typography.bodyMedium,
221224
modifier = Modifier
222225
.fillMaxWidth()
223226
.padding(bottom = 16.dp, top = 4.dp),
@@ -242,7 +245,7 @@ class TrustCertificateActivity : ComponentActivity() {
242245
}
243246
.weight(1f)
244247
.padding(bottom = 8.dp),
245-
style = MaterialTheme.typography.body2
248+
style = MaterialTheme.typography.bodyMedium
246249
)
247250
}
248251

@@ -274,13 +277,13 @@ class TrustCertificateActivity : ComponentActivity() {
274277
fun InfoPack(@StringRes labelStringRes: Int, text: String) {
275278
Text(
276279
text = stringResource(labelStringRes).uppercase(),
277-
style = MaterialTheme.typography.body2,
280+
style = MaterialTheme.typography.bodyMedium,
278281
modifier = Modifier
279282
.fillMaxWidth(),
280283
)
281284
Text(
282285
text = text,
283-
style = MaterialTheme.typography.body1,
286+
style = MaterialTheme.typography.bodySmall,
284287
modifier = Modifier
285288
.fillMaxWidth()
286289
.padding(bottom = 16.dp),

sample-app/build.gradle.kts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ dependencies {
5353

5454
implementation(libs.androidx.activityCompose)
5555
implementation(platform(libs.compose.bom))
56-
implementation(libs.compose.material)
56+
implementation(libs.compose.material3)
5757
implementation(libs.compose.ui.base)
5858
implementation(libs.compose.ui.graphics)
5959
debugImplementation(libs.compose.ui.toolingPreview)

sample-app/src/main/java/at/bitfire/cert4android/demo/MainActivity.kt

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,12 @@ import androidx.compose.foundation.layout.Row
1616
import androidx.compose.foundation.layout.padding
1717
import androidx.compose.foundation.rememberScrollState
1818
import androidx.compose.foundation.verticalScroll
19-
import androidx.compose.material.*
19+
import androidx.compose.material3.Button
20+
import androidx.compose.material3.Checkbox
21+
import androidx.compose.material3.MaterialTheme
22+
import androidx.compose.material3.SnackbarHost
23+
import androidx.compose.material3.SnackbarHostState
24+
import androidx.compose.material3.Text
2025
import androidx.compose.runtime.LaunchedEffect
2126
import androidx.compose.runtime.collectAsState
2227
import androidx.compose.runtime.livedata.observeAsState
@@ -30,13 +35,13 @@ import androidx.lifecycle.viewModelScope
3035
import at.bitfire.cert4android.Cert4Android
3136
import at.bitfire.cert4android.CustomCertManager
3237
import at.bitfire.cert4android.CustomCertStore
38+
import java.net.URL
39+
import javax.net.ssl.HttpsURLConnection
3340
import kotlinx.coroutines.Dispatchers
3441
import kotlinx.coroutines.flow.MutableStateFlow
3542
import kotlinx.coroutines.launch
3643
import org.apache.http.conn.ssl.AllowAllHostnameVerifier
3744
import org.apache.http.conn.ssl.StrictHostnameVerifier
38-
import java.net.URL
39-
import javax.net.ssl.HttpsURLConnection
4045

4146
class MainActivity : ComponentActivity() {
4247

@@ -50,7 +55,7 @@ class MainActivity : ComponentActivity() {
5055
ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.POST_NOTIFICATIONS), 0)
5156

5257
setContent {
53-
MaterialTheme {
58+
Cert4Android.theme {
5459
Column(Modifier
5560
.padding(8.dp)
5661
.verticalScroll(rememberScrollState())) {

0 commit comments

Comments
 (0)