diff --git a/.idea/compiler.xml b/.idea/compiler.xml index b589d56e..b86273d9 100644 --- a/.idea/compiler.xml +++ b/.idea/compiler.xml @@ -1,6 +1,6 @@ - + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 8978d23d..74dd639e 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,7 @@ + - + diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 07da5a92..ca39e653 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -29,7 +29,7 @@ android { defaultConfig { applicationId = "com.canopas.yourspace" - minSdk = 21 + minSdk = 23 targetSdk = 34 versionCode = versionMajor * 1000000 + versionMinor * 10000 + versionBuild versionName = "$versionMajor.$versionMinor.$versionBuild" @@ -128,36 +128,36 @@ android { dependencies { - implementation("androidx.core:core-ktx:1.13.0") - implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.7.0") - implementation("androidx.activity:activity-compose:1.9.0") - implementation(platform("androidx.compose:compose-bom:2024.04.01")) + implementation("androidx.core:core-ktx:1.13.1") + implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.8.6") + implementation("androidx.activity:activity-compose:1.9.2") + implementation(platform("androidx.compose:compose-bom:2024.09.03")) implementation("androidx.compose.ui:ui") implementation("androidx.compose.ui:ui-graphics") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.material3:material3") - implementation("androidx.navigation:navigation-compose:2.7.7") + implementation("androidx.navigation:navigation-compose:2.8.2") implementation("androidx.hilt:hilt-navigation-compose:1.2.0") - implementation("androidx.compose.foundation:foundation:1.6.6") + implementation("androidx.compose.foundation:foundation:1.7.3") - implementation(platform("com.google.firebase:firebase-bom:32.8.1")) + implementation(platform("com.google.firebase:firebase-bom:33.4.0")) implementation("com.google.firebase:firebase-firestore-ktx") implementation("com.google.firebase:firebase-messaging-ktx") implementation("com.google.firebase:firebase-auth") implementation("com.google.firebase:firebase-storage") implementation("com.google.firebase:firebase-crashlytics") - implementation("com.google.android.gms:play-services-auth:21.1.0") - implementation("androidx.lifecycle:lifecycle-process:2.7.0") + implementation("com.google.android.gms:play-services-auth:21.2.0") + implementation("androidx.lifecycle:lifecycle-process:2.8.6") // Test testImplementation("junit:junit:4.13.2") - androidTestImplementation("androidx.test.ext:junit:1.1.5") - androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") - androidTestImplementation(platform("androidx.compose:compose-bom:2024.04.01")) + androidTestImplementation("androidx.test.ext:junit:1.2.1") + androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") + androidTestImplementation(platform("androidx.compose:compose-bom:2024.09.03")) androidTestImplementation("androidx.compose.ui:ui-test-junit4") debugImplementation("androidx.compose.ui:ui-tooling") debugImplementation("androidx.compose.ui:ui-test-manifest") - testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.6.1") + testImplementation("org.jetbrains.kotlinx:kotlinx-coroutines-test:1.8.0") testImplementation("org.mockito.kotlin:mockito-kotlin:4.0.0") testImplementation("org.mockito:mockito-inline:4.5.1") testImplementation("org.mockito:mockito-core:5.7.0") @@ -170,10 +170,10 @@ dependencies { // Work manager implementation("androidx.hilt:hilt-work:1.2.0") ksp("androidx.hilt:hilt-compiler:1.2.0") - implementation("androidx.work:work-runtime-ktx:2.9.0") + implementation("androidx.work:work-runtime-ktx:2.9.1") // DataStore - implementation("androidx.datastore:datastore-preferences:1.1.0") + implementation("androidx.datastore:datastore-preferences:1.1.1") // Timber implementation("com.jakewharton.timber:timber:5.0.1") @@ -182,7 +182,7 @@ dependencies { implementation("com.canopas.jetcountrypicker:jetcountrypicker:1.1.1") // coil - implementation("io.coil-kt:coil-compose:2.5.0") + implementation("io.coil-kt:coil-compose:2.6.0") // Accompanist permission implementation("com.google.accompanist:accompanist-permissions:0.32.0") @@ -195,7 +195,7 @@ dependencies { implementation("com.vanniktech:android-image-cropper:4.5.0") // Place - implementation("com.google.android.libraries.places:places:3.4.0") + implementation("com.google.android.libraries.places:places:4.0.0") // Room-DB implementation("androidx.room:room-runtime:2.6.1") diff --git a/app/src/main/java/com/canopas/yourspace/ui/MainActivity.kt b/app/src/main/java/com/canopas/yourspace/ui/MainActivity.kt index da9780c7..67b54cde 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/MainActivity.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/MainActivity.kt @@ -85,7 +85,7 @@ class MainActivity : ComponentActivity() { super.onNewIntent(intent) val viewModel = ViewModelProvider(this)[MainViewModel::class.java] viewModel.handleIntentData(intent) - intent?.extras?.clear() + intent.extras?.clear() } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/component/MotionEvent.kt b/app/src/main/java/com/canopas/yourspace/ui/component/MotionEvent.kt index f0677b13..d157ca2b 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/component/MotionEvent.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/component/MotionEvent.kt @@ -1,13 +1,10 @@ package com.canopas.yourspace.ui.component import androidx.compose.animation.core.animateFloatAsState -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.clickable -import androidx.compose.foundation.combinedClickable import androidx.compose.foundation.gestures.awaitFirstDown import androidx.compose.foundation.gestures.waitForUpOrCancellation import androidx.compose.foundation.interaction.MutableInteractionSource -import androidx.compose.material.ripple.rememberRipple import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -18,12 +15,7 @@ import androidx.compose.ui.draw.scale import androidx.compose.ui.input.pointer.PointerEventPass import androidx.compose.ui.input.pointer.PointerInputChange import androidx.compose.ui.input.pointer.pointerInput -import androidx.compose.ui.platform.LocalView import androidx.compose.ui.platform.debugInspectorInfo -import androidx.compose.ui.unit.dp - -const val FLAG_IGNORE_GLOBAL_SETTINGS = 2 -const val FEEDBACK_CONSTANT = 3 interface MultipleEventsCutter { fun processEvent(event: () -> Unit) @@ -58,7 +50,7 @@ fun Modifier.motionClickEvent( val multipleEventsCutter = remember { MultipleEventsCutter.get() } val interactionSource = remember { MutableInteractionSource() } var selected by remember { mutableStateOf(false) } - val scale = animateFloatAsState(if (selected) 0.96f else 1f) + val scale = animateFloatAsState(if (selected) 0.96f else 1f, label = "") this .scale(scale.value) .clickable( @@ -81,54 +73,6 @@ fun Modifier.motionClickEvent( } } -@OptIn(ExperimentalFoundationApi::class) -fun Modifier.combinedMotionClickEvent(onClick: () -> Unit, onLongClick: () -> Unit) = composed( - inspectorInfo = debugInspectorInfo { - name = "combinedMotionClickEvent" - } -) { - val multipleEventsCutter = remember { MultipleEventsCutter.get() } - val view = LocalView.current - val interactionSource = remember { MutableInteractionSource() } - var selected by remember { mutableStateOf(false) } - val scale = animateFloatAsState(if (selected) 0.96f else 1f) - this - .scale(scale.value) - .combinedClickable( - interactionSource = interactionSource, - indication = null, - onClick = { - multipleEventsCutter.processEvent { onClick() } - }, - onLongClick = { - view.performHapticFeedback(FEEDBACK_CONSTANT, FLAG_IGNORE_GLOBAL_SETTINGS) - onLongClick() - } - ) - .pointerInput(selected) { - awaitPointerEventScope { - selected = if (selected) { - waitForUpOrCancellation() - false - } else { - awaitFirstDown(false) - true - } - } - } -} - -// user this event modifier only for icon button -fun Modifier.rippleClickEvent( - onClick: () -> Unit -) = composed { - this.clickable( - interactionSource = remember { MutableInteractionSource() }, - indication = rememberRipple(bounded = false, radius = 20.dp), - onClick = { onClick() } - ) -} - fun Modifier.gesturesDisabled(disabled: Boolean = true) = if (disabled) { pointerInput(Unit) { diff --git a/app/src/main/java/com/canopas/yourspace/ui/component/PagerIndicator.kt b/app/src/main/java/com/canopas/yourspace/ui/component/PagerIndicator.kt index 3582772b..8393772e 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/component/PagerIndicator.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/component/PagerIndicator.kt @@ -22,7 +22,6 @@ import androidx.compose.ui.unit.IntOffset import androidx.compose.ui.unit.dp import com.canopas.yourspace.ui.theme.AppTheme -@OptIn(ExperimentalFoundationApi::class) @Composable fun PagerIndicator( count: Int, diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/auth/phone/SignInWithPhoneScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/auth/phone/SignInWithPhoneScreen.kt index 807af699..7d361b05 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/auth/phone/SignInWithPhoneScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/auth/phone/SignInWithPhoneScreen.kt @@ -24,11 +24,11 @@ import androidx.compose.foundation.text.selection.LocalTextSelectionColors import androidx.compose.foundation.text.selection.TextSelectionColors import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.Button import androidx.compose.material3.ButtonDefaults -import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedTextFieldDefaults @@ -47,7 +47,6 @@ import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue import androidx.compose.runtime.remember import androidx.compose.ui.Alignment -import androidx.compose.ui.ExperimentalComposeUiApi import androidx.compose.ui.Modifier import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.focus.focusRequester @@ -105,7 +104,7 @@ private fun PhoneSignInAppBar(onBackPressed: () -> Unit = {}) { modifier = Modifier ) { Icon( - Icons.Filled.ArrowBack, + Icons.AutoMirrored.Filled.ArrowBack, contentDescription = null, tint = AppTheme.colorScheme.textSecondary ) @@ -114,7 +113,7 @@ private fun PhoneSignInAppBar(onBackPressed: () -> Unit = {}) { ) } -@OptIn(ExperimentalComposeUiApi::class, ExperimentalMaterial3Api::class) +@OptIn(ExperimentalMaterial3Api::class) @Composable private fun PhoneLoginContent( modifier: Modifier @@ -238,7 +237,7 @@ private fun PhoneTextField() { ) } - Divider( + HorizontalDivider( Modifier .padding(start = 20.dp) .width(1.dp) diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/geofence/add/components/PlaceAddedPopup.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/geofence/add/components/PlaceAddedPopup.kt index 18febf55..1fc7fae1 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/geofence/add/components/PlaceAddedPopup.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/geofence/add/components/PlaceAddedPopup.kt @@ -12,7 +12,7 @@ import androidx.compose.foundation.layout.padding import androidx.compose.foundation.layout.size import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape -import androidx.compose.material3.AlertDialog +import androidx.compose.material3.BasicAlertDialog import androidx.compose.material3.Card import androidx.compose.material3.CardDefaults import androidx.compose.material3.ExperimentalMaterial3Api @@ -49,7 +49,7 @@ fun PlaceAddedPopup( placeName: String, onDismiss: (() -> Unit) ) { - AlertDialog( + BasicAlertDialog( onDismissRequest = onDismiss, properties = DialogProperties( dismissOnBackPress = false, diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/geofence/add/locate/LocateOnMapScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/geofence/add/locate/LocateOnMapScreen.kt index 5e3d12b1..808c1795 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/geofence/add/locate/LocateOnMapScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/geofence/add/locate/LocateOnMapScreen.kt @@ -156,7 +156,7 @@ private fun LocateOnMapContent( ) { if (!state.selectedPlaceName.isNullOrEmpty()) { PlaceNameContent( - state.updatedPlaceName ?: "", + state.updatedPlaceName, cameraPositionState, userLocation, onPlaceNameChanged = viewModel::onPlaceNameChanged diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt index c6f9996a..2d176a59 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/home/map/MapScreen.kt @@ -214,7 +214,7 @@ fun MapScreen() { enter = slideInVertically(tween(100)) { it }, exit = slideOutVertically(tween(100)) { it } ) { - PermissionFooter() { + PermissionFooter { viewModel.navigateToPermissionScreen() } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/intro/IntroScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/intro/IntroScreen.kt index 4b34e5d5..a5ddbf45 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/intro/IntroScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/intro/IntroScreen.kt @@ -1,6 +1,5 @@ package com.canopas.yourspace.ui.flow.intro -import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.Image import androidx.compose.foundation.layout.Arrangement import androidx.compose.foundation.layout.Column @@ -31,7 +30,6 @@ import com.canopas.yourspace.ui.theme.AppTheme import com.canopas.yourspace.ui.theme.AppTheme.colorScheme import kotlinx.coroutines.launch -@OptIn(ExperimentalFoundationApi::class) @Composable fun IntroScreen() { val viewModel = hiltViewModel() diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/messages/chat/components/MessagesList.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/messages/chat/components/MessagesList.kt index faadedfb..d1347dde 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/messages/chat/components/MessagesList.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/messages/chat/components/MessagesList.kt @@ -46,7 +46,6 @@ import com.canopas.yourspace.ui.flow.messages.chat.toFormattedTitle import com.canopas.yourspace.ui.theme.AppTheme import java.util.concurrent.TimeUnit -@OptIn(ExperimentalFoundationApi::class) @Composable fun ColumnScope.MessageList( lazyState: LazyListState, @@ -76,7 +75,7 @@ fun ColumnScope.MessageList( contentPadding = PaddingValues(16.dp), reverseLayout = true ) { - itemsIndexed(newMessagesToAppend, key = { index, item -> item.id }) { index, message -> + itemsIndexed(newMessagesToAppend, key = { _, item -> item.id }) { index, message -> val by = members.firstOrNull { it.user.id == message.sender_id } val myLatestMsg = @@ -96,7 +95,7 @@ fun ColumnScope.MessageList( messagesByDate.forEach { section -> val messages = section.value - itemsIndexed(messages, key = { index, item -> item.id }) { index, message -> + itemsIndexed(messages, key = { _, item -> item.id }) { index, message -> val by = members.firstOrNull { it.user.id == message.sender_id } val seenBy = diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/messages/thread/ThreadsScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/messages/thread/ThreadsScreen.kt index 1d1216e3..9bcb009b 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/messages/thread/ThreadsScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/messages/thread/ThreadsScreen.kt @@ -1,5 +1,6 @@ package com.canopas.yourspace.ui.flow.messages.thread +import androidx.compose.animation.core.exponentialDecay import androidx.compose.animation.core.tween import androidx.compose.foundation.ExperimentalFoundationApi import androidx.compose.foundation.background @@ -189,7 +190,7 @@ fun ThreadList( ) { itemsIndexed( threadInfos, - key = { index, item -> item.thread.id } + key = { _, item -> item.thread.id } ) { index, threadInfo -> val threadMembers = members.filter { member -> threadInfo.thread.member_ids.contains(member.user.id) && member.user.id != currentUser?.id @@ -240,7 +241,9 @@ private fun SwipeToDelete( var showDeleteConfirmation by remember { mutableStateOf(false) } - + val decayAnimationSpec = exponentialDecay( + frictionMultiplier = 1f + ) val state = remember { AnchoredDraggableState( initialValue = DragAnchors.Center, @@ -250,9 +253,11 @@ private fun SwipeToDelete( }, positionalThreshold = { distance: Float -> distance * 0.5f }, velocityThreshold = { with(density) { 100.dp.toPx() } }, - animationSpec = tween() + snapAnimationSpec = tween(), + decayAnimationSpec = decayAnimationSpec ) } + Box( modifier = Modifier .fillMaxSize() @@ -289,7 +294,11 @@ private fun SwipeToDelete( y = 0 ) } - .anchoredDraggable(state, Orientation.Horizontal, reverseDirection = true), + .anchoredDraggable( + state = state, + orientation = Orientation.Horizontal, + reverseDirection = true + ), content = content ) } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/components/CreateSpaceOnboard.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/components/CreateSpaceOnboard.kt index ac28cfd1..28869c1c 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/components/CreateSpaceOnboard.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/onboard/components/CreateSpaceOnboard.kt @@ -3,7 +3,7 @@ package com.canopas.yourspace.ui.flow.onboard.components import androidx.activity.compose.BackHandler import androidx.compose.foundation.layout.padding import androidx.compose.material.icons.Icons -import androidx.compose.material.icons.filled.ArrowBack +import androidx.compose.material.icons.automirrored.filled.ArrowBack import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.Icon import androidx.compose.material3.IconButton @@ -54,7 +54,7 @@ fun CreateSpaceOnboard() { navigationIcon = { IconButton(onClick = { viewModel.popTo(OnboardItems.JoinOrCreateSpace) }) { Icon( - Icons.Default.ArrowBack, + Icons.AutoMirrored.Filled.ArrowBack, contentDescription = "" ) } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/settings/profile/EditProfileScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/settings/profile/EditProfileScreen.kt index 15dcffb8..d2f5b52a 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/settings/profile/EditProfileScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/settings/profile/EditProfileScreen.kt @@ -16,7 +16,6 @@ import androidx.compose.foundation.text.BasicTextField import androidx.compose.foundation.text.KeyboardActions import androidx.compose.foundation.text.KeyboardOptions import androidx.compose.foundation.verticalScroll -import androidx.compose.material.ripple.rememberRipple import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -25,6 +24,7 @@ import androidx.compose.material3.Scaffold import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue @@ -96,7 +96,7 @@ private fun EditProfileToolbar() { .padding(end = 8.dp) .clickable( interactionSource = remember { MutableInteractionSource() }, - indication = rememberRipple(bounded = false), + indication = ripple(bounded = false), enabled = state.allowSave, onClick = { viewModel.saveUser() diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/settings/space/SpaceProfileScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/settings/space/SpaceProfileScreen.kt index 1c7fde22..34c5c22f 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/settings/space/SpaceProfileScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/settings/space/SpaceProfileScreen.kt @@ -19,8 +19,6 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.automirrored.filled.ExitToApp import androidx.compose.material.icons.filled.Delete -import androidx.compose.material.icons.filled.ExitToApp -import androidx.compose.material.ripple.rememberRipple import androidx.compose.material3.ExperimentalMaterial3Api import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon @@ -31,6 +29,7 @@ import androidx.compose.material3.SwitchDefaults import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults +import androidx.compose.material3.ripple import androidx.compose.runtime.Composable import androidx.compose.runtime.collectAsState import androidx.compose.runtime.getValue @@ -148,7 +147,7 @@ private fun SpaceProfileToolbar() { .padding(end = 8.dp) .clickable( interactionSource = remember { MutableInteractionSource() }, - indication = rememberRipple(bounded = false), + indication = ripple(bounded = false), enabled = state.allowSave, onClick = { viewModel.saveSpace() @@ -255,7 +254,7 @@ private fun SpaceProfileContent() { viewModel.showLeaveSpaceConfirmation(true) }, showLoader = state.leavingSpace, - icon = Icons.Default.ExitToApp + icon = Icons.AutoMirrored.Filled.ExitToApp ) } } diff --git a/app/src/main/java/com/canopas/yourspace/ui/flow/settings/support/SupportScreen.kt b/app/src/main/java/com/canopas/yourspace/ui/flow/settings/support/SupportScreen.kt index 88482ef2..d1cc0ee7 100644 --- a/app/src/main/java/com/canopas/yourspace/ui/flow/settings/support/SupportScreen.kt +++ b/app/src/main/java/com/canopas/yourspace/ui/flow/settings/support/SupportScreen.kt @@ -29,8 +29,8 @@ import androidx.compose.foundation.verticalScroll import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Close import androidx.compose.material3.CircularProgressIndicator -import androidx.compose.material3.Divider import androidx.compose.material3.ExperimentalMaterial3Api +import androidx.compose.material3.HorizontalDivider import androidx.compose.material3.Icon import androidx.compose.material3.IconButton import androidx.compose.material3.OutlinedTextField @@ -47,7 +47,6 @@ import androidx.compose.ui.Alignment import androidx.compose.ui.Modifier import androidx.compose.ui.draw.clip import androidx.compose.ui.draw.rotate -import androidx.compose.ui.focus.FocusRequester import androidx.compose.ui.graphics.SolidColor import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.platform.LocalContext @@ -140,7 +139,6 @@ fun SupportContent(modifier: Modifier) { val descriptionInteractionSource = remember { MutableInteractionSource() } val isTitleFocused by titleInteractionSource.collectIsFocusedAsState() val isDescriptionFocused by descriptionInteractionSource.collectIsFocusedAsState() - val focusRequester = remember { FocusRequester() } Text( text = stringResource(id = R.string.support_text_field_title), @@ -172,7 +170,7 @@ fun SupportContent(modifier: Modifier) { Spacer(modifier = Modifier.height(4.dp)) - Divider( + HorizontalDivider( Modifier .fillMaxWidth(), color = if (isTitleFocused) AppTheme.colorScheme.primary else AppTheme.colorScheme.outline diff --git a/build.gradle.kts b/build.gradle.kts index cfef1c23..6161aafc 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,12 +1,12 @@ // Top-level build file where you can add configuration options common to all sub-projects/modules. plugins { - id("com.android.application") version "8.6.0" apply false + id("com.android.application") version "8.6.1" apply false id("org.jetbrains.kotlin.android") version "1.9.0" apply false - id("com.android.library") version "8.6.0" apply false + id("com.android.library") version "8.6.1" apply false id("com.google.dagger.hilt.android") version "2.50" apply false - id("com.google.gms.google-services") version "4.4.0" apply false + id("com.google.gms.google-services") version "4.4.2" apply false id("org.jlleitschuh.gradle.ktlint") version "11.4.2" - id("com.google.firebase.crashlytics") version "2.9.9" apply false + id("com.google.firebase.crashlytics") version "3.0.2" apply false id("org.jetbrains.kotlin.jvm") version "1.9.23" id("com.google.devtools.ksp") version "1.9.23-1.0.20" } diff --git a/data/build.gradle.kts b/data/build.gradle.kts index e8f6d086..0d91f5dd 100644 --- a/data/build.gradle.kts +++ b/data/build.gradle.kts @@ -11,7 +11,7 @@ android { compileSdk = 34 defaultConfig { - minSdk = 21 + minSdk = 23 testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner" consumerProguardFiles("consumer-rules.pro") @@ -40,12 +40,12 @@ android { dependencies { - implementation("androidx.core:core-ktx:1.13.0") - implementation("androidx.appcompat:appcompat:1.6.1") - implementation("com.google.android.material:material:1.11.0") + implementation("androidx.core:core-ktx:1.13.1") + implementation("androidx.appcompat:appcompat:1.7.0") + implementation("com.google.android.material:material:1.12.0") testImplementation("junit:junit:4.13.2") - androidTestImplementation("androidx.test.ext:junit:1.1.5") - androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") + androidTestImplementation("androidx.test.ext:junit:1.2.1") + androidTestImplementation("androidx.test.espresso:espresso-core:3.6.1") // Hilt val hilt = "2.50" @@ -53,12 +53,12 @@ dependencies { ksp("com.google.dagger:hilt-compiler:$hilt") // DataStore - implementation("androidx.datastore:datastore-preferences:1.1.0") + implementation("androidx.datastore:datastore-preferences:1.1.1") // Firebase - implementation(platform("com.google.firebase:firebase-bom:32.8.1")) + implementation(platform("com.google.firebase:firebase-bom:33.4.0")) implementation("com.google.firebase:firebase-auth") - implementation("com.google.android.gms:play-services-auth:21.1.0") + implementation("com.google.android.gms:play-services-auth:21.2.0") implementation("com.google.firebase:firebase-firestore") implementation("com.google.firebase:firebase-storage") implementation("com.google.firebase:firebase-functions") @@ -70,7 +70,7 @@ dependencies { implementation("com.jakewharton.timber:timber:5.0.1") // location - implementation("com.google.android.gms:play-services-location:21.2.0") + implementation("com.google.android.gms:play-services-location:21.3.0") // Room-DB implementation("androidx.room:room-runtime:2.6.1") @@ -78,5 +78,5 @@ dependencies { implementation("androidx.room:room-ktx:2.6.1") // Place - implementation("com.google.android.libraries.places:places:3.4.0") + implementation("com.google.android.libraries.places:places:4.0.0") } diff --git a/data/src/main/java/com/canopas/yourspace/data/receiver/location/LocationUpdateReceiver.kt b/data/src/main/java/com/canopas/yourspace/data/receiver/location/LocationUpdateReceiver.kt index db7b8257..2d1aa73d 100644 --- a/data/src/main/java/com/canopas/yourspace/data/receiver/location/LocationUpdateReceiver.kt +++ b/data/src/main/java/com/canopas/yourspace/data/receiver/location/LocationUpdateReceiver.kt @@ -44,7 +44,7 @@ class LocationUpdateReceiver : BroadcastReceiver() { scope.launch { try { val userId = authService.currentUser?.id ?: return@launch - Timber.e("XXXX Location update received: ${locationResult.locations.size}") + Timber.e("Location update received: ${locationResult.locations.size}") locationResult.locations.forEach { extractedLocation -> locationService.saveCurrentLocation( userId,