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,