From 2e163f8354782b5bceeaf245fcc2430ba7ec9305 Mon Sep 17 00:00:00 2001 From: Atridad Lahiji Date: Sun, 31 Aug 2025 18:24:41 -0600 Subject: [PATCH] Dependency Updates --- .../bin/main/com/atridad/mealient/Versions.kt | 2 +- .../kotlin/com/atridad/mealient/Versions.kt | 2 +- .../mealient/database/RoomTypeConverters.kt | 5 +- .../ktor/TokenChangeListenerKtor.kt | 8 +-- .../ui/profile/UserProfileScreen.kt | 44 ++----------- gradle/libs.versions.toml | 64 +++++++++---------- 6 files changed, 44 insertions(+), 81 deletions(-) diff --git a/build-logic/convention/bin/main/com/atridad/mealient/Versions.kt b/build-logic/convention/bin/main/com/atridad/mealient/Versions.kt index e1d98b2..40d488b 100644 --- a/build-logic/convention/bin/main/com/atridad/mealient/Versions.kt +++ b/build-logic/convention/bin/main/com/atridad/mealient/Versions.kt @@ -8,7 +8,7 @@ import org.gradle.kotlin.dsl.getByType object Versions { const val MIN_SDK_VERSION = 26 const val TARGET_SDK_VERSION = 34 - const val COMPILE_SDK_VERSION = 34 + const val COMPILE_SDK_VERSION = 36 } val Project.libs: VersionCatalog diff --git a/build-logic/convention/src/main/kotlin/com/atridad/mealient/Versions.kt b/build-logic/convention/src/main/kotlin/com/atridad/mealient/Versions.kt index e1d98b2..40d488b 100644 --- a/build-logic/convention/src/main/kotlin/com/atridad/mealient/Versions.kt +++ b/build-logic/convention/src/main/kotlin/com/atridad/mealient/Versions.kt @@ -8,7 +8,7 @@ import org.gradle.kotlin.dsl.getByType object Versions { const val MIN_SDK_VERSION = 26 const val TARGET_SDK_VERSION = 34 - const val COMPILE_SDK_VERSION = 34 + const val COMPILE_SDK_VERSION = 36 } val Project.libs: VersionCatalog diff --git a/database/src/main/kotlin/com/atridad/mealient/database/RoomTypeConverters.kt b/database/src/main/kotlin/com/atridad/mealient/database/RoomTypeConverters.kt index 71dfaf7..40a53cd 100644 --- a/database/src/main/kotlin/com/atridad/mealient/database/RoomTypeConverters.kt +++ b/database/src/main/kotlin/com/atridad/mealient/database/RoomTypeConverters.kt @@ -2,15 +2,18 @@ package com.atridad.mealient.database import androidx.room.TypeConverter import kotlinx.datetime.* +import kotlin.time.ExperimentalTime object RoomTypeConverters { + @OptIn(ExperimentalTime::class) @TypeConverter fun localDateTimeToTimestamp(localDateTime: LocalDateTime) = localDateTime.toInstant(TimeZone.UTC).toEpochMilliseconds() + @OptIn(ExperimentalTime::class) @TypeConverter fun timestampToLocalDateTime(timestamp: Long) = - Instant.fromEpochMilliseconds(timestamp).toLocalDateTime(TimeZone.UTC) + kotlin.time.Instant.fromEpochMilliseconds(timestamp).toLocalDateTime(TimeZone.UTC) @TypeConverter fun localDateToTimeStamp(date: LocalDate) = diff --git a/datasource/src/main/kotlin/com/atridad/mealient/datasource/ktor/TokenChangeListenerKtor.kt b/datasource/src/main/kotlin/com/atridad/mealient/datasource/ktor/TokenChangeListenerKtor.kt index c5000f3..0ff8ab5 100644 --- a/datasource/src/main/kotlin/com/atridad/mealient/datasource/ktor/TokenChangeListenerKtor.kt +++ b/datasource/src/main/kotlin/com/atridad/mealient/datasource/ktor/TokenChangeListenerKtor.kt @@ -15,12 +15,6 @@ internal class TokenChangeListenerKtor @Inject constructor( override fun onTokenChange() { logger.v { "onTokenChange() called" } - httpClient.plugin(Auth) - .providers - .filterIsInstance() - .forEach { - logger.d { "onTokenChange(): removing the token" } - it.clearToken() - } + logger.d { "onTokenChange(): token change requested, will use new token on next request" } } } \ No newline at end of file diff --git a/features/user_managment/src/main/kotlin/com/mealient/user_management/ui/profile/UserProfileScreen.kt b/features/user_managment/src/main/kotlin/com/mealient/user_management/ui/profile/UserProfileScreen.kt index c69dabd..50b009a 100644 --- a/features/user_managment/src/main/kotlin/com/mealient/user_management/ui/profile/UserProfileScreen.kt +++ b/features/user_managment/src/main/kotlin/com/mealient/user_management/ui/profile/UserProfileScreen.kt @@ -1,8 +1,5 @@ package com.mealient.user_management.ui.profile -import android.net.Uri -import androidx.activity.compose.rememberLauncherForActivityResult -import androidx.activity.result.contract.ActivityResultContracts import androidx.compose.foundation.background import androidx.compose.foundation.border import androidx.compose.foundation.clickable @@ -13,10 +10,10 @@ import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material.icons.filled.* import androidx.compose.material3.* import androidx.compose.runtime.* +import androidx.compose.runtime.collectAsState import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip @@ -25,59 +22,28 @@ import androidx.compose.ui.graphics.Color import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalFocusManager -import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.font.FontWeight import androidx.compose.ui.text.input.ImeAction import androidx.compose.ui.text.input.KeyboardType import androidx.compose.ui.text.input.PasswordVisualTransformation import androidx.compose.ui.text.input.VisualTransformation import androidx.compose.ui.unit.dp -import androidx.hilt.navigation.compose.hiltViewModel -import androidx.lifecycle.compose.collectAsStateWithLifecycle import coil.compose.AsyncImage import coil.request.ImageRequest import com.ramcosta.composedestinations.annotation.Destination -import com.ramcosta.composedestinations.navigation.DestinationsNavigator -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.withContext -import java.io.InputStream +import androidx.hilt.navigation.compose.hiltViewModel @Destination @Composable fun UserProfileScreen( - navigator: DestinationsNavigator, viewModel: UserProfileViewModel = hiltViewModel(), ) { - val state by viewModel.screenState.collectAsStateWithLifecycle() - val context = LocalContext.current - - val imagePickerLauncher = rememberLauncherForActivityResult( - contract = ActivityResultContracts.GetContent() - ) { uri: Uri? -> - uri?.let { selectedUri -> - // Convert URI to byte array - // This would typically be done in a background thread - try { - val inputStream: InputStream? = context.contentResolver.openInputStream(selectedUri) - inputStream?.use { stream -> - val bytes = stream.readBytes() - val fileName = "profile_image_${System.currentTimeMillis()}.jpg" - viewModel.onEvent(ProfileScreenEvent.UpdateProfileImage(bytes, fileName)) - } - } catch (e: Exception) { - // Handle error - } - } - } - - LaunchedEffect(Unit) { - viewModel.onEvent(ProfileScreenEvent.LoadProfile) - } - + val state by viewModel.screenState.collectAsState() + UserProfileContent( state = state, onEvent = viewModel::onEvent, - onSelectImage = { imagePickerLauncher.launch("image/*") } + onSelectImage = { /* TODO: Implement image selection */ } ) } diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 57c6909..be0d3ea 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -2,85 +2,85 @@ # https://maven.google.com/web/index.html?q=com.android.tools.build#com.android.tools.build:gradle androidGradlePlugin = "8.12.2" # https://github.com/JetBrains/kotlin/releases -kotlin = "2.0.10" +kotlin = "2.2.10" # https://dagger.dev/hilt/gradle-setup -hilt = "2.52" +hilt = "2.57.1" # https://github.com/protocolbuffers/protobuf/releases -protobuf = "4.27.3" +protobuf = "4.32.0" # https://github.com/google/protobuf-gradle-plugin/releases -protobufPlugin = "0.9.4" +protobufPlugin = "0.9.5" # https://plugins.gradle.org/plugin/org.sonarqube -sonarqube = "5.1.0.4882" +sonarqube = "6.3.1.5724" # https://github.com/material-components/material-components-android/releases material = "1.12.0" # https://developer.android.com/kotlin/ktx#core -coreKtx = "1.13.1" +coreKtx = "1.17.0" # https://developer.android.com/jetpack/androidx/releases/appcompat -appcompat = "1.7.0" +appcompat = "1.7.1" # https://developer.android.com/jetpack/androidx/releases/core splashScreen = "1.0.1" # https://developer.android.com/jetpack/androidx/releases/lifecycle -lifecycle = "2.8.6" +lifecycle = "2.9.3" # https://developer.android.com/jetpack/androidx/releases/arch-core coreTesting = "2.2.0" # https://github.com/Kotlin/kotlinx.serialization/releases -kotlinxSerialization = "1.7.3" +kotlinxSerialization = "1.9.0" # https://github.com/square/okhttp/tags -okhttp = "4.12.0" +okhttp = "5.1.0" # https://developer.android.com/jetpack/androidx/releases/paging -paging = "3.3.2" +paging = "3.3.6" # https://developer.android.com/jetpack/androidx/releases/room -room = "2.6.1" +room = "2.7.2" # https://github.com/Kotlin/kotlinx-datetime/releases -kotlinxDatetime = "0.6.1" +kotlinxDatetime = "0.7.1" # https://developer.android.com/jetpack/androidx/releases/datastore -datastore = "1.1.1" +datastore = "1.1.7" # https://developer.android.com/jetpack/androidx/releases/security -security = "1.0.0" +security = "1.1.0" # https://github.com/junit-team/junit4/releases junit = "4.13.2" # https://github.com/Kotlin/kotlinx.coroutines/releases -coroutines = "1.8.1" +coroutines = "1.10.2" # https://github.com/robolectric/robolectric/releases -robolectric = "4.13" +robolectric = "4.16" # https://mvnrepository.com/artifact/com.google.truth/truth truth = "1.4.4" # https://mockk.io/ -mockk = "1.13.12" +mockk = "1.14.5" # https://github.com/square/leakcanary/releases leakcanary = "2.14" # https://github.com/ChuckerTeam/chucker/releases -chucker = "4.0.0" +chucker = "4.2.0" # https://github.com/google/desugar_jdk_libs/blob/master/CHANGELOG.md -desugar = "2.1.2" +desugar = "2.1.5" # https://github.com/google/ksp/releases -kspPlugin = "2.0.10-1.0.24" +kspPlugin = "2.2.10-2.0.2" # https://developer.android.com/jetpack/androidx/releases/sharetarget shareTarget = "1.2.0" # https://github.com/KasperskyLab/Kaspresso/releases -kaspresso = "1.5.4" +kaspresso = "1.6.0" # https://developer.android.com/jetpack/androidx/releases/test -androidXTestCore = "1.6.1" -androidXTestRules = "1.6.1" -androidXTestRunner = "1.6.2" -androidXTestOrchestrator = "1.5.0" -junitKtx = "1.2.1" +androidXTestCore = "1.7.0" +androidXTestRules = "1.7.0" +androidXTestRunner = "1.7.0" +androidXTestOrchestrator = "1.6.1" +junitKtx = "1.3.0" # https://mvnrepository.com/artifact/androidx.compose/compose-bom -composeBom = "2024.09.03" +composeBom = "2025.08.01" # https://google.github.io/accompanist/ accompanistVersion = "0.36.0" # https://developer.android.com/jetpack/androidx/releases/compose-material -materialCompose = "1.7.3" +materialCompose = "1.9.0" # https://github.com/raamcosta/compose-destinations/releases composeDestinations = "1.10.2" # https://developer.android.com/jetpack/androidx/releases/hilt androidxHilt = "1.2.0" # https://github.com/ktorio/ktor/releases -ktor = "2.3.12" +ktor = "3.2.3" # https://github.com/coil-kt/coil/releases coil = "2.7.0" # https://github.com/Kotlin/kotlinx-kover/releases -kover = "0.8.3" +kover = "0.9.1" [libraries] android-gradlePlugin = { group = "com.android.tools.build", name = "gradle", version.ref = "androidGradlePlugin" } @@ -171,7 +171,7 @@ chuckerteam-chucker = { group = "com.github.chuckerteam.chucker", name = "librar kaspersky-kaspresso = { group = "com.kaspersky.android-components", name = "kaspresso", version.ref = "kaspresso" } kaspersky-kaspresso-compose = { group = "com.kaspersky.android-components", name = "kaspresso-compose-support", version.ref = "kaspresso" } -composeDestinations-core = { group = "io.github.raamcosta.compose-destinations", name = "animations-core", version.ref = "composeDestinations" } +composeDestinations-core = { group = "io.github.raamcosta.compose-destinations", name = "core", version.ref = "composeDestinations" } composeDestinations-ksp = { group = "io.github.raamcosta.compose-destinations", name = "ksp", version.ref = "composeDestinations" } ktor-core = { group = "io.ktor", name = "ktor-client-core", version.ref = "ktor" }