Refactors ChatroomHeader compose

pull/518/head
Vitor Pamplona 2023-07-21 11:02:16 -04:00
rodzic 6fbb59ddac
commit 9a517380a0
3 zmienionych plików z 16 dodań i 24 usunięć

Wyświetl plik

@ -68,7 +68,7 @@ import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
@Composable
fun ChatroomCompose(
fun ChatroomHeaderCompose(
baseNote: Note,
accountViewModel: AccountViewModel,
nav: (String) -> Unit
@ -305,13 +305,16 @@ private fun WatchNotificationChanges(
@Composable
fun LoadUser(baseUserHex: String, content: @Composable (User?) -> Unit) {
var user by remember(baseUserHex) {
mutableStateOf<User?>(LocalCache.getUserIfExists(baseUserHex))
mutableStateOf(LocalCache.getUserIfExists(baseUserHex))
}
if (user == null) {
LaunchedEffect(key1 = baseUserHex) {
launch(Dispatchers.IO) {
user = LocalCache.checkGetOrCreateUser(baseUserHex)
val newUser = LocalCache.checkGetOrCreateUser(baseUserHex)
if (user != newUser) {
user = newUser
}
}
}
}

Wyświetl plik

@ -17,7 +17,7 @@ import androidx.compose.runtime.getValue
import androidx.compose.ui.Modifier
import androidx.compose.ui.unit.dp
import com.vitorpamplona.amethyst.service.model.PrivateDmEvent
import com.vitorpamplona.amethyst.ui.note.ChatroomCompose
import com.vitorpamplona.amethyst.ui.note.ChatroomHeaderCompose
import com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
import kotlin.time.ExperimentalTime
import kotlin.time.measureTimedValue
@ -113,7 +113,7 @@ private fun FeedLoaded(
) { _, item ->
Row(Modifier.fillMaxWidth()) {
val (value, elapsed) = measureTimedValue {
ChatroomCompose(
ChatroomHeaderCompose(
item,
accountViewModel = accountViewModel,
nav = nav

Wyświetl plik

@ -26,13 +26,13 @@ import androidx.compose.ui.unit.dp
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleEventObserver
import androidx.lifecycle.viewmodel.compose.viewModel
import com.vitorpamplona.amethyst.model.LocalCache
import com.vitorpamplona.amethyst.model.Note
import com.vitorpamplona.amethyst.model.User
import com.vitorpamplona.amethyst.service.NostrChatroomDataSource
import com.vitorpamplona.amethyst.ui.actions.NewPostViewModel
import com.vitorpamplona.amethyst.ui.components.ObserveDisplayNip05Status
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
import com.vitorpamplona.amethyst.ui.note.LoadUser
import com.vitorpamplona.amethyst.ui.note.UsernameDisplay
import com.vitorpamplona.amethyst.ui.screen.NostrChatroomFeedViewModel
import com.vitorpamplona.amethyst.ui.screen.RefreshingChatroomFeedView
@ -49,26 +49,15 @@ fun ChatroomScreen(
) {
if (userId == null) return
var userRoom by remember(userId) { mutableStateOf<User?>(null) }
if (userRoom == null) {
LaunchedEffect(userId) {
launch(Dispatchers.IO) {
val newUser = LocalCache.checkGetOrCreateUser(userId)
if (newUser != userRoom) {
userRoom = newUser
}
}
LoadUser(userId) {
it?.let {
PrepareChatroomViewModels(
baseUser = it,
accountViewModel = accountViewModel,
nav = nav
)
}
}
userRoom?.let {
PrepareChatroomViewModels(
baseUser = it,
accountViewModel = accountViewModel,
nav = nav
)
}
}
@Composable