From e70049f1f5feafd4389a93699df6ca0b9accc1b5 Mon Sep 17 00:00:00 2001 From: Sweetbread Date: Sat, 22 Feb 2025 23:24:49 +0300 Subject: [PATCH] feat: Round avatars --- .idea/copyright/profiles_settings.xml | 6 +--- .../java/ru/risdeveau/pixeldragon/api/Room.kt | 7 ++-- .../java/ru/risdeveau/pixeldragon/db/Room.kt | 5 +-- .../pixeldragon/ui/activity/MainActivity.kt | 36 +++++++++++++++---- 4 files changed, 38 insertions(+), 16 deletions(-) diff --git a/.idea/copyright/profiles_settings.xml b/.idea/copyright/profiles_settings.xml index 960e957..65e75a7 100755 --- a/.idea/copyright/profiles_settings.xml +++ b/.idea/copyright/profiles_settings.xml @@ -1,7 +1,3 @@ - - - - - + \ No newline at end of file diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/api/Room.kt b/app/src/main/java/ru/risdeveau/pixeldragon/api/Room.kt index 471a98c..f778b7f 100755 --- a/app/src/main/java/ru/risdeveau/pixeldragon/api/Room.kt +++ b/app/src/main/java/ru/risdeveau/pixeldragon/api/Room.kt @@ -1,7 +1,7 @@ /* - * Created by sweetbread on 22.02.2025, 17:56 + * Created by sweetbread * Copyright (c) 2025. All rights reserved. - * Last modified 22.02.2025, 17:48 + * Last modified 22.02.2025, 19:52 */ package ru.risdeveau.pixeldragon.api @@ -38,9 +38,10 @@ suspend fun getRoom(rid: String): Room { var room = db.roomDoa().getById(rid) if (room == null) { val name = getState(rid, "m.room.name", "name") + val type = getState(rid, "m.room.create", "type") ?: "m.room" val creator = getState(rid, "m.room.create", "creator") val avatar = getState(rid, "m.room.avatar", "url") - room = Room(rid, name, creator, null, avatar, null, true) + room = Room(rid, name, type, creator, null, avatar, null, true) db.roomDoa().insert(room) } diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/db/Room.kt b/app/src/main/java/ru/risdeveau/pixeldragon/db/Room.kt index 4c7828c..4cffd13 100755 --- a/app/src/main/java/ru/risdeveau/pixeldragon/db/Room.kt +++ b/app/src/main/java/ru/risdeveau/pixeldragon/db/Room.kt @@ -1,7 +1,7 @@ /* - * Created by sweetbread on 22.02.2025, 15:45 + * Created by sweetbread * Copyright (c) 2025. All rights reserved. - * Last modified 22.02.2025, 15:45 + * Last modified 22.02.2025, 19:49 */ package ru.risdeveau.pixeldragon.db @@ -22,6 +22,7 @@ import androidx.room.RoomDatabase data class Room( @PrimaryKey val roomId: String, val name: String?, + val type: String, val creatorId: String?, val createTime: Long?, val avatarUrl: String?, diff --git a/app/src/main/java/ru/risdeveau/pixeldragon/ui/activity/MainActivity.kt b/app/src/main/java/ru/risdeveau/pixeldragon/ui/activity/MainActivity.kt index a59f28c..ec980f6 100755 --- a/app/src/main/java/ru/risdeveau/pixeldragon/ui/activity/MainActivity.kt +++ b/app/src/main/java/ru/risdeveau/pixeldragon/ui/activity/MainActivity.kt @@ -1,7 +1,7 @@ /* - * Created by sweetbread on 22.02.2025, 17:56 + * Created by sweetbread * Copyright (c) 2025. All rights reserved. - * Last modified 22.02.2025, 17:56 + * Last modified 22.02.2025, 20:24 */ package ru.risdeveau.pixeldragon.ui.activity @@ -21,6 +21,7 @@ import androidx.compose.foundation.layout.width import androidx.compose.foundation.lazy.LazyColumn import androidx.compose.foundation.lazy.items import androidx.compose.foundation.lazy.rememberLazyListState +import androidx.compose.foundation.shape.CircleShape import androidx.compose.foundation.shape.RoundedCornerShape import androidx.compose.material3.CircularProgressIndicator import androidx.compose.material3.ExperimentalMaterial3Api @@ -38,6 +39,8 @@ import androidx.compose.runtime.remember import androidx.compose.runtime.rememberCoroutineScope import androidx.compose.runtime.setValue import androidx.compose.ui.Modifier +import androidx.compose.ui.draw.clip +import androidx.compose.ui.layout.ContentScale import androidx.compose.ui.unit.dp import coil3.compose.SubcomposeAsyncImage import coil3.network.NetworkHeaders @@ -134,7 +137,7 @@ fun RoomItem(modifier: Modifier = Modifier, rid: String) { Row( modifier .padding(8.dp) - .height(72.dp) + .height(80.dp) .fillMaxWidth() .background(MaterialTheme.colorScheme.primaryContainer, RoundedCornerShape(16.dp)) .padding(8.dp) @@ -143,7 +146,13 @@ fun RoomItem(modifier: Modifier = Modifier, rid: String) { modifier = Modifier .padding(end = 4.dp) .height(64.dp) - .width(64.dp), + .width(64.dp) + .let { + if (room!!.type == "m.space") + it.clip(RoundedCornerShape(12.dp)) + else + it.clip(CircleShape) + }, model = ImageRequest.Builder(appCtx) .data(mxcToUrl(room!!.avatarUrl ?: "")) .httpHeaders( @@ -154,16 +163,31 @@ fun RoomItem(modifier: Modifier = Modifier, rid: String) { ) .build(), contentDescription = room!!.roomId, + contentScale = ContentScale.Crop, loading = { CircularProgressIndicator() } ) Column { - Text(room!!.name ?: "Unknown", maxLines = 1) + Text( + room!!.name ?: "Unnamed", + maxLines = 1, + color = MaterialTheme.colorScheme.primary, + fontSize = MaterialTheme.typography.titleLarge.fontSize + ) } } } else { - LinearProgressIndicator(Modifier.fillMaxWidth()) + Row( + modifier + .padding(8.dp) + .height(80.dp) + .fillMaxWidth() + .background(MaterialTheme.colorScheme.primaryContainer, RoundedCornerShape(16.dp)) + .padding(8.dp) + ) { + LinearProgressIndicator(Modifier.fillMaxWidth()) + } } }