feat: Round avatars

This commit is contained in:
Sweetbread 2025-02-22 23:24:49 +03:00
parent c0944ec0a8
commit e70049f1f5
4 changed files with 38 additions and 16 deletions

View File

@ -1,7 +1,3 @@
<component name="CopyrightManager">
<settings default="My">
<module2copyright>
<element module="All" copyright="My" />
</module2copyright>
</settings>
<settings default="My" />
</component>

View File

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

View File

@ -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?,

View File

@ -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,18 +163,33 @@ 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 {
Row(
modifier
.padding(8.dp)
.height(80.dp)
.fillMaxWidth()
.background(MaterialTheme.colorScheme.primaryContainer, RoundedCornerShape(16.dp))
.padding(8.dp)
) {
LinearProgressIndicator(Modifier.fillMaxWidth())
}
}
}
//@Preview(showBackground = true)
//@Composable