diff --git a/app/src/main/java/com/example/fluffytrix/push/NotificationHelper.kt b/app/src/main/java/com/example/fluffytrix/push/NotificationHelper.kt index 8ed1a60..df76f0d 100644 --- a/app/src/main/java/com/example/fluffytrix/push/NotificationHelper.kt +++ b/app/src/main/java/com/example/fluffytrix/push/NotificationHelper.kt @@ -23,7 +23,7 @@ object NotificationHelper { val channel = NotificationChannel( CHANNEL_ID, CHANNEL_NAME, - NotificationManager.IMPORTANCE_DEFAULT, + NotificationManager.IMPORTANCE_HIGH, ) nm.createNotificationChannel(channel) } @@ -73,7 +73,7 @@ object NotificationHelper { val nm = context.getSystemService(Context.NOTIFICATION_SERVICE) as NotificationManager val notif = NotificationCompat.Builder(context, CHANNEL_ID) - .setSmallIcon(R.mipmap.ic_launcher) + .setSmallIcon(R.drawable.ic_notification) .setContentTitle(roomName) .setContentText(content) .setAutoCancel(true) diff --git a/app/src/main/java/com/example/fluffytrix/ui/screens/main/MainScreen.kt b/app/src/main/java/com/example/fluffytrix/ui/screens/main/MainScreen.kt index f0192f1..52f6afe 100644 --- a/app/src/main/java/com/example/fluffytrix/ui/screens/main/MainScreen.kt +++ b/app/src/main/java/com/example/fluffytrix/ui/screens/main/MainScreen.kt @@ -116,12 +116,13 @@ fun MainScreen( .fillMaxSize() .pointerInput(showChannelList) { if (!showChannelList) { + val thresholdPx = 60.dp.toPx() var totalDrag = 0f detectHorizontalDragGestures( onDragStart = { totalDrag = 0f }, onHorizontalDrag = { _, dragAmount -> totalDrag += dragAmount - if (totalDrag > 60f) { + if (totalDrag > thresholdPx) { viewModel.toggleChannelList() totalDrag = 0f } diff --git a/app/src/main/java/com/example/fluffytrix/ui/screens/main/components/ChannelList.kt b/app/src/main/java/com/example/fluffytrix/ui/screens/main/components/ChannelList.kt index cf8fe1b..47ea9a8 100644 --- a/app/src/main/java/com/example/fluffytrix/ui/screens/main/components/ChannelList.kt +++ b/app/src/main/java/com/example/fluffytrix/ui/screens/main/components/ChannelList.kt @@ -171,12 +171,13 @@ fun ChannelList( .fillMaxHeight() .background(MaterialTheme.colorScheme.surface) .pointerInput(Unit) { + val thresholdPx = 60.dp.toPx() var totalDrag = 0f detectHorizontalDragGestures( onDragStart = { totalDrag = 0f }, onHorizontalDrag = { _, dragAmount -> totalDrag += dragAmount - if (totalDrag < -60f) { + if (totalDrag < -thresholdPx) { onDismiss() totalDrag = 0f } diff --git a/app/src/main/java/com/example/fluffytrix/ui/screens/main/components/SpaceList.kt b/app/src/main/java/com/example/fluffytrix/ui/screens/main/components/SpaceList.kt index 8c14183..8201b22 100644 --- a/app/src/main/java/com/example/fluffytrix/ui/screens/main/components/SpaceList.kt +++ b/app/src/main/java/com/example/fluffytrix/ui/screens/main/components/SpaceList.kt @@ -101,8 +101,8 @@ fun SpaceList( .size(8.dp) .align(Alignment.TopEnd) .background( - if (homeUnreadStatus == UnreadStatus.MENTIONED) androidx.compose.ui.graphics.Color.Red - else androidx.compose.ui.graphics.Color.Gray, + if (homeUnreadStatus == UnreadStatus.MENTIONED) MaterialTheme.colorScheme.error + else MaterialTheme.colorScheme.primary, CircleShape, ), ) @@ -147,8 +147,8 @@ fun SpaceList( .size(8.dp) .align(Alignment.TopEnd) .background( - if (space.unreadStatus == UnreadStatus.MENTIONED) androidx.compose.ui.graphics.Color.Red - else androidx.compose.ui.graphics.Color.Gray, + if (space.unreadStatus == UnreadStatus.MENTIONED) MaterialTheme.colorScheme.error + else MaterialTheme.colorScheme.primary, CircleShape, ), ) diff --git a/app/src/main/java/com/example/fluffytrix/ui/screens/settings/SettingsScreen.kt b/app/src/main/java/com/example/fluffytrix/ui/screens/settings/SettingsScreen.kt index e6a8e8e..0d3d96c 100644 --- a/app/src/main/java/com/example/fluffytrix/ui/screens/settings/SettingsScreen.kt +++ b/app/src/main/java/com/example/fluffytrix/ui/screens/settings/SettingsScreen.kt @@ -8,6 +8,7 @@ import androidx.compose.foundation.layout.Spacer import androidx.compose.foundation.layout.fillMaxSize import androidx.compose.foundation.layout.fillMaxWidth import androidx.compose.foundation.layout.height +import androidx.compose.foundation.layout.heightIn import androidx.compose.foundation.layout.padding import androidx.compose.foundation.rememberScrollState import androidx.compose.foundation.verticalScroll @@ -29,7 +30,7 @@ import androidx.compose.material3.Text import androidx.compose.material3.TopAppBar import androidx.compose.material3.TopAppBarDefaults import androidx.compose.runtime.Composable -import androidx.compose.runtime.collectAsState +import androidx.lifecycle.compose.collectAsStateWithLifecycle import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.remember @@ -63,13 +64,13 @@ fun SettingsScreen( ) { val preferencesManager: PreferencesManager = koinInject() val pushRegistrationManager: PushRegistrationManager = koinInject() - val userId by preferencesManager.userId.collectAsState(initial = null) - val homeserver by preferencesManager.homeserverUrl.collectAsState(initial = null) - val deviceId by preferencesManager.deviceId.collectAsState(initial = null) - val hideSpacesWhenClosed by preferencesManager.hideSpacesWhenClosed.collectAsState(initial = false) - val notificationsEnabled by preferencesManager.notificationsEnabled.collectAsState(initial = true) - val upEndpoint by preferencesManager.upEndpoint.collectAsState(initial = null) - val savedGiphyKey by preferencesManager.tenorApiKey.collectAsState(initial = "") + val userId by preferencesManager.userId.collectAsStateWithLifecycle(initialValue = null) + val homeserver by preferencesManager.homeserverUrl.collectAsStateWithLifecycle(initialValue = null) + val deviceId by preferencesManager.deviceId.collectAsStateWithLifecycle(initialValue = null) + val hideSpacesWhenClosed by preferencesManager.hideSpacesWhenClosed.collectAsStateWithLifecycle(initialValue = false) + val notificationsEnabled by preferencesManager.notificationsEnabled.collectAsStateWithLifecycle(initialValue = true) + val upEndpoint by preferencesManager.upEndpoint.collectAsStateWithLifecycle(initialValue = null) + val savedGiphyKey by preferencesManager.tenorApiKey.collectAsStateWithLifecycle(initialValue = "") var giphyKeyInput by remember { mutableStateOf("") } var giphyKeyStatus by remember { mutableStateOf(GiphyKeyStatus.Idle) } val scope = rememberCoroutineScope() @@ -302,13 +303,14 @@ fun SettingsScreen( Row( modifier = Modifier .fillMaxWidth() + .heightIn(min = 48.dp) .clickable { UnifiedPush.saveDistributor(context, pkg) UnifiedPush.register(context) upDistributor = pkg showDistributorPicker = false } - .padding(vertical = 12.dp), + .padding(horizontal = 4.dp, vertical = 12.dp), verticalAlignment = Alignment.CenterVertically, ) { Text(label, style = MaterialTheme.typography.bodyMedium) @@ -357,6 +359,7 @@ private fun SettingToggleRow( Row( modifier = Modifier .fillMaxWidth() + .heightIn(min = 48.dp) .padding(vertical = 6.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, @@ -380,13 +383,15 @@ private fun SettingRow(label: String, value: String) { text = label, style = MaterialTheme.typography.bodyMedium, ) - Text( - text = value, - style = MaterialTheme.typography.bodySmall, - color = MaterialTheme.colorScheme.onSurfaceVariant, - maxLines = 2, - overflow = TextOverflow.Ellipsis, - ) + androidx.compose.foundation.text.selection.SelectionContainer { + Text( + text = value, + style = MaterialTheme.typography.bodySmall, + color = MaterialTheme.colorScheme.onSurfaceVariant, + maxLines = 2, + overflow = TextOverflow.Ellipsis, + ) + } } } @@ -395,8 +400,9 @@ private fun SettingNavRow(label: String, onClick: () -> Unit) { Row( modifier = Modifier .fillMaxWidth() + .heightIn(min = 48.dp) .clickable(onClick = onClick) - .padding(vertical = 12.dp), + .padding(vertical = 14.dp), horizontalArrangement = Arrangement.SpaceBetween, verticalAlignment = Alignment.CenterVertically, ) { diff --git a/app/src/main/res/drawable/ic_notification.xml b/app/src/main/res/drawable/ic_notification.xml new file mode 100644 index 0000000..7dd6c6b --- /dev/null +++ b/app/src/main/res/drawable/ic_notification.xml @@ -0,0 +1,10 @@ + + +