mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-29 07:52:56 +02:00
Refactors ChatroomHeader compose
This commit is contained in:
@@ -68,7 +68,7 @@ import kotlinx.coroutines.Dispatchers
|
|||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
fun ChatroomCompose(
|
fun ChatroomHeaderCompose(
|
||||||
baseNote: Note,
|
baseNote: Note,
|
||||||
accountViewModel: AccountViewModel,
|
accountViewModel: AccountViewModel,
|
||||||
nav: (String) -> Unit
|
nav: (String) -> Unit
|
||||||
@@ -305,13 +305,16 @@ private fun WatchNotificationChanges(
|
|||||||
@Composable
|
@Composable
|
||||||
fun LoadUser(baseUserHex: String, content: @Composable (User?) -> Unit) {
|
fun LoadUser(baseUserHex: String, content: @Composable (User?) -> Unit) {
|
||||||
var user by remember(baseUserHex) {
|
var user by remember(baseUserHex) {
|
||||||
mutableStateOf<User?>(LocalCache.getUserIfExists(baseUserHex))
|
mutableStateOf(LocalCache.getUserIfExists(baseUserHex))
|
||||||
}
|
}
|
||||||
|
|
||||||
if (user == null) {
|
if (user == null) {
|
||||||
LaunchedEffect(key1 = baseUserHex) {
|
LaunchedEffect(key1 = baseUserHex) {
|
||||||
launch(Dispatchers.IO) {
|
launch(Dispatchers.IO) {
|
||||||
user = LocalCache.checkGetOrCreateUser(baseUserHex)
|
val newUser = LocalCache.checkGetOrCreateUser(baseUserHex)
|
||||||
|
if (user != newUser) {
|
||||||
|
user = newUser
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
@@ -17,7 +17,7 @@ import androidx.compose.runtime.getValue
|
|||||||
import androidx.compose.ui.Modifier
|
import androidx.compose.ui.Modifier
|
||||||
import androidx.compose.ui.unit.dp
|
import androidx.compose.ui.unit.dp
|
||||||
import com.vitorpamplona.amethyst.service.model.PrivateDmEvent
|
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 com.vitorpamplona.amethyst.ui.screen.loggedIn.AccountViewModel
|
||||||
import kotlin.time.ExperimentalTime
|
import kotlin.time.ExperimentalTime
|
||||||
import kotlin.time.measureTimedValue
|
import kotlin.time.measureTimedValue
|
||||||
@@ -113,7 +113,7 @@ private fun FeedLoaded(
|
|||||||
) { _, item ->
|
) { _, item ->
|
||||||
Row(Modifier.fillMaxWidth()) {
|
Row(Modifier.fillMaxWidth()) {
|
||||||
val (value, elapsed) = measureTimedValue {
|
val (value, elapsed) = measureTimedValue {
|
||||||
ChatroomCompose(
|
ChatroomHeaderCompose(
|
||||||
item,
|
item,
|
||||||
accountViewModel = accountViewModel,
|
accountViewModel = accountViewModel,
|
||||||
nav = nav
|
nav = nav
|
||||||
|
@@ -26,13 +26,13 @@ import androidx.compose.ui.unit.dp
|
|||||||
import androidx.lifecycle.Lifecycle
|
import androidx.lifecycle.Lifecycle
|
||||||
import androidx.lifecycle.LifecycleEventObserver
|
import androidx.lifecycle.LifecycleEventObserver
|
||||||
import androidx.lifecycle.viewmodel.compose.viewModel
|
import androidx.lifecycle.viewmodel.compose.viewModel
|
||||||
import com.vitorpamplona.amethyst.model.LocalCache
|
|
||||||
import com.vitorpamplona.amethyst.model.Note
|
import com.vitorpamplona.amethyst.model.Note
|
||||||
import com.vitorpamplona.amethyst.model.User
|
import com.vitorpamplona.amethyst.model.User
|
||||||
import com.vitorpamplona.amethyst.service.NostrChatroomDataSource
|
import com.vitorpamplona.amethyst.service.NostrChatroomDataSource
|
||||||
import com.vitorpamplona.amethyst.ui.actions.NewPostViewModel
|
import com.vitorpamplona.amethyst.ui.actions.NewPostViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.components.ObserveDisplayNip05Status
|
import com.vitorpamplona.amethyst.ui.components.ObserveDisplayNip05Status
|
||||||
import com.vitorpamplona.amethyst.ui.note.ClickableUserPicture
|
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.note.UsernameDisplay
|
||||||
import com.vitorpamplona.amethyst.ui.screen.NostrChatroomFeedViewModel
|
import com.vitorpamplona.amethyst.ui.screen.NostrChatroomFeedViewModel
|
||||||
import com.vitorpamplona.amethyst.ui.screen.RefreshingChatroomFeedView
|
import com.vitorpamplona.amethyst.ui.screen.RefreshingChatroomFeedView
|
||||||
@@ -49,26 +49,15 @@ fun ChatroomScreen(
|
|||||||
) {
|
) {
|
||||||
if (userId == null) return
|
if (userId == null) return
|
||||||
|
|
||||||
var userRoom by remember(userId) { mutableStateOf<User?>(null) }
|
LoadUser(userId) {
|
||||||
|
it?.let {
|
||||||
if (userRoom == null) {
|
PrepareChatroomViewModels(
|
||||||
LaunchedEffect(userId) {
|
baseUser = it,
|
||||||
launch(Dispatchers.IO) {
|
accountViewModel = accountViewModel,
|
||||||
val newUser = LocalCache.checkGetOrCreateUser(userId)
|
nav = nav
|
||||||
if (newUser != userRoom) {
|
)
|
||||||
userRoom = newUser
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
userRoom?.let {
|
|
||||||
PrepareChatroomViewModels(
|
|
||||||
baseUser = it,
|
|
||||||
accountViewModel = accountViewModel,
|
|
||||||
nav = nav
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
|
Reference in New Issue
Block a user