diff --git a/app/build.gradle.kts b/app/build.gradle.kts index fa052e42..15b271e7 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -225,6 +225,7 @@ dependencies { implementation("androidx.compose.material3:material3:$material3Version") implementation("androidx.compose.material3:material3-window-size-class:$material3Version") implementation("androidx.compose.material:material-icons-core:1.7.8") + implementation("androidx.compose.material:material-icons-extended:1.7.8") implementation("androidx.compose.ui:ui-tooling-preview") implementation("androidx.compose.runtime:runtime-livedata") implementation("androidx.lifecycle:lifecycle-runtime-ktx:2.9.1") diff --git a/app/src/main/java/chat/zekochat/composables/screens/chat/discover/DiscoverServersList.kt b/app/src/main/java/chat/zekochat/composables/screens/chat/discover/DiscoverServersList.kt index 06ea9c9a..08a2a418 100644 --- a/app/src/main/java/chat/zekochat/composables/screens/chat/discover/DiscoverServersList.kt +++ b/app/src/main/java/chat/zekochat/composables/screens/chat/discover/DiscoverServersList.kt @@ -72,7 +72,7 @@ fun DiscoverServersList( Column( modifier = Modifier - .padding(top = 12.dp, start = 16.dp, end = 16.dp), + .padding(top = 16.dp, start = 16.dp, end = 16.dp), ) { Row( modifier = Modifier.fillMaxWidth(), @@ -99,7 +99,9 @@ fun DiscoverServersList( when { uiState.isLoading -> { Box( - modifier = Modifier.weight(1f), + modifier = Modifier + .fillMaxWidth() + .weight(1f), contentAlignment = Alignment.Center ) { CircularProgressIndicator( @@ -111,16 +113,16 @@ fun DiscoverServersList( uiState.error != null || uiState.servers.isEmpty() -> { Box( - Modifier.weight(1f) + modifier = Modifier + .fillMaxWidth() + .weight(1f), + contentAlignment = Alignment.Center ) { Column( - modifier = Modifier.fillMaxSize(), horizontalAlignment = Alignment.CenterHorizontally, - verticalArrangement = Arrangement.Center, - + verticalArrangement = Arrangement.spacedBy(8.dp), ) { Text(stringResource(R.string.error)) - Spacer(Modifier.height(8.dp)) SquareButton( onClick = viewModel::loadServers ) { diff --git a/app/src/main/java/chat/zekochat/composables/screens/chat/drawer/ChannelSideDrawer.kt b/app/src/main/java/chat/zekochat/composables/screens/chat/drawer/ChannelSideDrawer.kt index 8a03c5f9..ef02fb68 100644 --- a/app/src/main/java/chat/zekochat/composables/screens/chat/drawer/ChannelSideDrawer.kt +++ b/app/src/main/java/chat/zekochat/composables/screens/chat/drawer/ChannelSideDrawer.kt @@ -488,103 +488,105 @@ fun ChannelSideDrawer( .weight(weight = 1f) .fillMaxHeight() ) { - Box( - Modifier - .height(serverBannerHeight) - ) { - if (server?.banner != null) { - RemoteImage( - url = "${PeptideAPI.getCurrentFilesUrl()}/banners/${server.banner.id}", - description = null, - contentScale = ContentScale.Crop, - modifier = Modifier - .fillMaxSize() - ) - - with(MaterialTheme.colorScheme) { - Box( - Modifier - .fillMaxSize() - .drawBehind { - drawRect( - Brush.linearGradient( - listOf( - Color.Black.copy(alpha = 0.6f), - Color.Transparent - ), - Offset.Zero, - Offset.Infinite.copy(x = 0f) - ), - ) - }) - } - } - - Row( + if (currentDestination !is ChatRouterDestination.Discover) { + Box( Modifier - .padding(16.dp), - verticalAlignment = Alignment.CenterVertically + .height(serverBannerHeight) ) { - CompositionLocalProvider( - LocalContentColor provides - if (server?.banner != null) Color.White - else LocalContentColor.current - ) { - Row( - Modifier.weight(1f), - verticalAlignment = Alignment.CenterVertically, - horizontalArrangement = Arrangement.spacedBy(8.dp) - ) { - if (server?.flags has ServerFlags.Official) { - Icon( - painter = painterResource( - id = R.drawable.ic_peptide_decagram_24dp - ), - contentDescription = stringResource( - R.string.server_flag_official - ), - tint = LocalContentColor.current, - modifier = Modifier - .size(24.dp) - ) - } - if (server?.flags has ServerFlags.Verified) { - Icon( - painter = painterResource( - id = R.drawable.ic_check_decagram_24dp - ), - contentDescription = stringResource( - R.string.server_flag_verified - ), - tint = LocalContentColor.current, - modifier = Modifier - .size(24.dp) - ) - } + if (server?.banner != null) { + RemoteImage( + url = "${PeptideAPI.getCurrentFilesUrl()}/banners/${server.banner.id}", + description = null, + contentScale = ContentScale.Crop, + modifier = Modifier + .fillMaxSize() + ) - Text( - text = when (currentServer) { - null -> stringResource(if (currentDestination is ChatRouterDestination.Discover) R.string.discover_servers else R.string.direct_messages) - else -> server?.name ?: stringResource(R.string.unknown) - }, - style = MaterialTheme.typography.titleMedium, - maxLines = 1, - overflow = TextOverflow.Ellipsis - ) + with(MaterialTheme.colorScheme) { + Box( + Modifier + .fillMaxSize() + .drawBehind { + drawRect( + Brush.linearGradient( + listOf( + Color.Black.copy(alpha = 0.6f), + Color.Transparent + ), + Offset.Zero, + Offset.Infinite.copy(x = 0f) + ), + ) + }) } + } - if (currentServer != null) { - IconButton(onClick = { - server?.id?.let { srvId -> onShowServerContextSheet(srvId) } - }) { - Icon( - painter = painterResource(R.drawable.icn_more_vert_24dp), - contentDescription = stringResource(R.string.menu), - tint = LocalContentColor.current + Row( + Modifier + .padding(16.dp), + verticalAlignment = Alignment.CenterVertically + ) { + CompositionLocalProvider( + LocalContentColor provides + if (server?.banner != null) Color.White + else LocalContentColor.current + ) { + Row( + Modifier.weight(1f), + verticalAlignment = Alignment.CenterVertically, + horizontalArrangement = Arrangement.spacedBy(8.dp) + ) { + if (server?.flags has ServerFlags.Official) { + Icon( + painter = painterResource( + id = R.drawable.ic_peptide_decagram_24dp + ), + contentDescription = stringResource( + R.string.server_flag_official + ), + tint = LocalContentColor.current, + modifier = Modifier + .size(24.dp) + ) + } + if (server?.flags has ServerFlags.Verified) { + Icon( + painter = painterResource( + id = R.drawable.ic_check_decagram_24dp + ), + contentDescription = stringResource( + R.string.server_flag_verified + ), + tint = LocalContentColor.current, + modifier = Modifier + .size(24.dp) + ) + } + + Text( + text = when (currentServer) { + null -> stringResource(R.string.direct_messages) + else -> server?.name ?: stringResource(R.string.unknown) + }, + style = MaterialTheme.typography.titleMedium, + maxLines = 1, + overflow = TextOverflow.Ellipsis ) } - } else { - Spacer(Modifier.height(64.dp)) + + if (currentServer != null) { + IconButton(onClick = { + server?.id?.let { srvId -> onShowServerContextSheet(srvId) } + }) { + Icon( + painter = painterResource(R.drawable.icn_more_vert_24dp), + contentDescription = stringResource(R.string.menu), + tint = LocalContentColor.current + ) + } + } else { + Spacer(Modifier.height(64.dp)) + } } } } diff --git a/app/src/main/java/chat/zekochat/screens/chat/ChatRouterScreen.kt b/app/src/main/java/chat/zekochat/screens/chat/ChatRouterScreen.kt index 85611ead..07c2a262 100644 --- a/app/src/main/java/chat/zekochat/screens/chat/ChatRouterScreen.kt +++ b/app/src/main/java/chat/zekochat/screens/chat/ChatRouterScreen.kt @@ -55,6 +55,10 @@ import androidx.compose.ui.input.pointer.pointerInput import androidx.compose.ui.layout.layout import androidx.compose.ui.platform.LocalContext import androidx.compose.ui.platform.LocalView +import androidx.compose.material.icons.Icons +import androidx.compose.material.icons.filled.Home +import androidx.compose.material.icons.filled.People +import androidx.compose.material.icons.filled.Settings import androidx.compose.ui.res.painterResource import androidx.compose.ui.res.stringResource import androidx.compose.ui.text.style.TextAlign @@ -948,13 +952,13 @@ fun ChannelNavigator( NavigationBarItem( icon = { Icon( - painter = painterResource(R.drawable.ic_bottom_navbar_home), + imageVector = Icons.Filled.Home, contentDescription = "Home", modifier = Modifier.size(32.dp) ) }, label = { - Text(text = "you") + Text(text = "Home") }, selected = when (dest) { is ChatRouterDestination.ServersChannels, @@ -982,7 +986,7 @@ fun ChannelNavigator( NavigationBarItem( icon = { Icon( - painter = painterResource(R.drawable.ic_bottom_navbar_friends), + imageVector = Icons.Filled.People, contentDescription = "Friends", modifier = Modifier.size(32.dp) ) @@ -1010,13 +1014,13 @@ fun ChannelNavigator( NavigationBarItem( icon = { Icon( - painter = painterResource(R.drawable.ic_bottom_navbar_you), - contentDescription = "You", + imageVector = Icons.Filled.Settings, + contentDescription = "Settings", modifier = Modifier.size(32.dp) ) }, label = { - Text(text = "you") + Text(text = "Settings") }, selected = dest is ChatRouterDestination.Settings, colors = NavigationBarItemDefaults.colors(