Centered progress bar and remove the title

This commit is contained in:
Harish Vishwakarma 2026-01-29 17:46:34 +05:30
parent d783455ed8
commit 3e8865060e
4 changed files with 112 additions and 103 deletions

View File

@ -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")

View File

@ -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
) {

View File

@ -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))
}
}
}
}

View File

@ -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(