fix: issue where channels didn't load on start in sidebar

Signed-off-by: Infi <infi@infi.sh>
This commit is contained in:
Infi 2023-10-22 00:26:49 +02:00
parent fac7411eea
commit dda4ec0631
1 changed files with 9 additions and 11 deletions

View File

@ -90,7 +90,7 @@ fun RowScope.ChannelList(
val enableSmallBanner by remember { val enableSmallBanner by remember {
derivedStateOf { derivedStateOf {
lazyListState.firstVisibleItemScrollOffset > 40 || lazyListState.firstVisibleItemScrollOffset > 40 ||
lazyListState.firstVisibleItemIndex > 0 lazyListState.firstVisibleItemIndex > 0
} }
} }
@ -139,11 +139,9 @@ fun RowScope.ChannelList(
.sortedBy { it.lastMessageID ?: it.id } .sortedBy { it.lastMessageID ?: it.id }
.reversed() .reversed()
val server = remember(serverId, RevoltAPI.serverCache) { RevoltAPI.serverCache[serverId] } val server = RevoltAPI.serverCache[serverId]
val categorisedChannels = remember(server, RevoltAPI.channelCache) { val categorisedChannels = server?.let {
server?.let { ChannelUtils.categoriseServerFlat(it)
ChannelUtils.categoriseServerFlat(it)
}
} }
Surface( Surface(
@ -250,7 +248,7 @@ fun RowScope.ChannelList(
DrawerChannel( DrawerChannel(
name = partner?.let { p -> User.resolveDefaultName(p) } ?: channel.name name = partner?.let { p -> User.resolveDefaultName(p) } ?: channel.name
?: stringResource(R.string.unknown), ?: stringResource(R.string.unknown),
channelType = channel.channelType ?: ChannelType.TextChannel, channelType = channel.channelType ?: ChannelType.TextChannel,
selected = currentDestination == "channel/{channelId}" && currentChannel == channel.id, selected = currentDestination == "channel/{channelId}" && currentChannel == channel.id,
hasUnread = channel.lastMessageID?.let { lastMessageID -> hasUnread = channel.lastMessageID?.let { lastMessageID ->
@ -410,9 +408,9 @@ fun RowScope.ChannelList(
Text( Text(
text = ( text = (
server?.name server?.name
?: stringResource(R.string.unknown) ?: stringResource(R.string.unknown)
), ),
style = MaterialTheme.typography.labelLarge, style = MaterialTheme.typography.labelLarge,
color = if (server?.banner != null) { color = if (server?.banner != null) {
bannerTextColour bannerTextColour
@ -485,7 +483,7 @@ fun RowScope.ChannelList(
} }
} else { } else {
items( items(
categorisedChannels.size ?: 0, categorisedChannels.size,
key = { index -> key = { index ->
val channel = categorisedChannels.getOrNull(index) val channel = categorisedChannels.getOrNull(index)
channel?.let { channel?.let {