From e9bdc045ba67178c403b3f2625d121708be805a3 Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Thu, 25 May 2023 18:27:05 -0400 Subject: [PATCH] Adds @Stable tag to Notification Card models --- .../vitorpamplona/amethyst/ui/note/UserReactionsRow.kt | 2 ++ .../vitorpamplona/amethyst/ui/screen/CardFeedState.kt | 9 +++++++++ .../amethyst/ui/screen/CardFeedViewModel.kt | 2 ++ 3 files changed, 13 insertions(+) diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UserReactionsRow.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UserReactionsRow.kt index 7ed0e9a09..d70e44b3d 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UserReactionsRow.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/note/UserReactionsRow.kt @@ -13,6 +13,7 @@ import androidx.compose.material.icons.Icons import androidx.compose.material.icons.filled.Bolt import androidx.compose.material.icons.filled.ExpandMore import androidx.compose.runtime.Composable +import androidx.compose.runtime.Stable import androidx.compose.runtime.getValue import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.setValue @@ -92,6 +93,7 @@ fun UserReactionsRow(model: UserReactionsViewModel, accountViewModel: AccountVie } } +@Stable class UserReactionsViewModel : ViewModel() { var user: User? = null diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedState.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedState.kt index 31de49a55..2cd9757a4 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedState.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedState.kt @@ -2,6 +2,7 @@ package com.vitorpamplona.amethyst.ui.screen import androidx.compose.runtime.Immutable import androidx.compose.runtime.MutableState +import androidx.compose.runtime.Stable import com.vitorpamplona.amethyst.model.Note import com.vitorpamplona.amethyst.model.User import kotlinx.collections.immutable.ImmutableList @@ -92,9 +93,17 @@ class MessageSetCard(val note: Note) : Card() { override fun id() = note.idHex } +@Immutable sealed class CardFeedState { + @Immutable object Loading : CardFeedState() + + @Stable class Loaded(val feed: MutableState>) : CardFeedState() + + @Immutable object Empty : CardFeedState() + + @Immutable class FeedError(val errorMessage: String) : CardFeedState() } diff --git a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt index 5f7567338..f2bb269e0 100644 --- a/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt +++ b/app/src/main/java/com/vitorpamplona/amethyst/ui/screen/CardFeedViewModel.kt @@ -1,6 +1,7 @@ package com.vitorpamplona.amethyst.ui.screen import android.util.Log +import androidx.compose.runtime.Stable import androidx.compose.runtime.mutableStateOf import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope @@ -33,6 +34,7 @@ import kotlinx.coroutines.launch import kotlin.time.ExperimentalTime import kotlin.time.measureTimedValue +@Stable class NotificationViewModel : CardFeedViewModel(NotificationFeedFilter) open class CardFeedViewModel(val localFilter: FeedFilter) : ViewModel() {