From b72def4d436bc1410182db2aa547d5d0c0c103f5 Mon Sep 17 00:00:00 2001 From: Infi Date: Sun, 15 Jan 2023 02:11:02 +0100 Subject: [PATCH] feat: sort servers alphabetically by id we don't fetch user ordering yet --- .../revolt/screens/chat/ChatRouterScreen.kt | 80 ++++++++++--------- 1 file changed, 41 insertions(+), 39 deletions(-) diff --git a/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt b/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt index 5b80be24..2cca84f4 100644 --- a/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt +++ b/app/src/main/java/chat/revolt/screens/chat/ChatRouterScreen.kt @@ -115,49 +115,51 @@ fun ChatRouterScreen(topNav: NavController, viewModel: ChatRouterViewModel = vie ) } - RevoltAPI.serverCache.values.forEach { server -> - if (server.name == null) return@forEach + RevoltAPI.serverCache.values + .sortedBy { it.id } + .forEach { server -> + if (server.name == null) return@forEach - if (server.icon != null) { - RemoteImage( - url = "$REVOLT_FILES/icons/${server.icon.id!!}/server.png?max_side=256", - modifier = Modifier - .padding(8.dp) - .size(48.dp) - .clip(CircleShape) - .clickable { - viewModel.navigateToServer( - server.id!!, - navController - ) - }, - description = "${server.name}" - ) - } else { - // return a placeholder icon, currently the first letter of the server name in a circle - Box( - contentAlignment = Alignment.Center, - modifier = Modifier - .padding(8.dp) - .size(48.dp) - .clip(CircleShape) - .background(MaterialTheme.colorScheme.surfaceVariant) - .clickable { - viewModel.navigateToServer( - server.id!!, - navController - ) - } - ) { - Text( - text = server.name.first().toString(), - fontSize = 20.sp, - fontWeight = FontWeight.SemiBold, - color = MaterialTheme.colorScheme.onSurface + if (server.icon != null) { + RemoteImage( + url = "$REVOLT_FILES/icons/${server.icon.id!!}/server.png?max_side=256", + modifier = Modifier + .padding(8.dp) + .size(48.dp) + .clip(CircleShape) + .clickable { + viewModel.navigateToServer( + server.id!!, + navController + ) + }, + description = "${server.name}" ) + } else { + // return a placeholder icon, currently the first letter of the server name in a circle + Box( + contentAlignment = Alignment.Center, + modifier = Modifier + .padding(8.dp) + .size(48.dp) + .clip(CircleShape) + .background(MaterialTheme.colorScheme.surfaceVariant) + .clickable { + viewModel.navigateToServer( + server.id!!, + navController + ) + } + ) { + Text( + text = server.name.first().toString(), + fontSize = 20.sp, + fontWeight = FontWeight.SemiBold, + color = MaterialTheme.colorScheme.onSurface + ) + } } } - } } Crossfade(targetState = viewModel.currentServer) {