Skip to content

Commit d58ad72

Browse files
committed
Fix a few remember bugs
1 parent ad989fd commit d58ad72

6 files changed

Lines changed: 13 additions & 18 deletions

File tree

CHANGELOG.md

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
# Snowdrop Changelog
2-
Hello :3 :3 :3
32

43
## [Unreleased]
54

shared/src/commonMain/kotlin/site/remlit/snowdrop/component/EmojiPicker.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ import androidx.compose.material3.Text
1919
import androidx.compose.runtime.Composable
2020
import androidx.compose.runtime.getValue
2121
import androidx.compose.runtime.mutableStateMapOf
22+
import androidx.compose.runtime.remember
2223
import androidx.compose.ui.Alignment
2324
import androidx.compose.ui.Modifier
2425
import androidx.compose.ui.text.font.FontWeight
@@ -50,7 +51,7 @@ fun EmojiPicker(
5051
enter = bottomNavEnterAnimation,
5152
exit = bottomNavExitAnimation
5253
) {
53-
val emojis by fetchEmojis().collectAsStateWithLifecycle(emptyList())
54+
val emojis by remember { fetchEmojis() }.collectAsStateWithLifecycle(emptyList())
5455

5556
val categorized = mutableMapOf<String, List<Emoji>>()
5657

shared/src/commonMain/kotlin/site/remlit/snowdrop/component/Status.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,7 @@ fun Status(status: Status) {
158158
.collectAsStateWithLifecycle(false)
159159

160160
/* View variables */
161-
val currentAccount by getCurrentAccountObjectFlow().collectAsStateWithLifecycle(null)
161+
val currentAccount by remember { getCurrentAccountObjectFlow() }.collectAsStateWithLifecycle(null)
162162
var showEmojiPicker by remember { mutableStateOf(false) }
163163

164164
var realStatus by remember { mutableStateOf(status) }

shared/src/commonMain/kotlin/site/remlit/snowdrop/view/ComposeView.kt

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ import androidx.compose.ui.unit.dp
4444
import androidx.compose.ui.unit.sp
4545
import androidx.lifecycle.compose.collectAsStateWithLifecycle
4646
import com.russhwolf.settings.ExperimentalSettingsApi
47+
import kotlinx.coroutines.flow.distinctUntilChanged
4748
import org.jetbrains.compose.resources.painterResource
4849
import org.jetbrains.compose.resources.stringResource
4950
import site.remlit.snowdrop.api.statuses.createStatus
@@ -62,6 +63,7 @@ import site.remlit.snowdrop.util.bgIO
6263
import site.remlit.snowdrop.util.blockingSettings
6364
import site.remlit.snowdrop.util.cache.fetchInstance
6465
import site.remlit.snowdrop.util.cache.fetchStatus
66+
import site.remlit.snowdrop.util.cache.fetchStatusOrNull
6567
import site.remlit.snowdrop.util.getCurrentAccountObjectFlow
6668
import snowdrop.shared.generated.resources.Res
6769
import snowdrop.shared.generated.resources.compose
@@ -115,19 +117,11 @@ fun ComposeView(
115117
?: blockingSettings.getString("default_visibility", "public"))
116118
}
117119

118-
var replyTarget by remember { mutableStateOf<Status?>(null) }
119-
LaunchedEffect(inReplyToId) {
120-
if (inReplyToId != null) fetchStatus(inReplyToId, snackbarHandler).collect {
121-
replyTarget = it
122-
}
123-
}
120+
val replyTarget by remember { fetchStatusOrNull(inReplyToId, snackbarHandler) }
121+
.collectAsStateWithLifecycle(null)
124122

125-
var instance by remember { mutableStateOf<InstanceV1?>(null) }
126-
LaunchedEffect(instance) {
127-
if (instance != null) fetchInstance(snackbarHandler).collect {
128-
instance = it
129-
}
130-
}
123+
val instance by remember { fetchInstance(snackbarHandler) }
124+
.collectAsStateWithLifecycle(null)
131125
val maxChars = (instance?.maxTootChars ?: 500)
132126
val remainingChars = maxChars - (content.length + cw.length)
133127

shared/src/commonMain/kotlin/site/remlit/snowdrop/view/ThreadView.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ fun ThreadView(id: String) = ViewSurface {
4545
val navHandler = LocalNavController.current
4646
val snackbarHandler = SnackbarController.current
4747

48-
val currentAccount by getCurrentAccountObjectFlow()
48+
val currentAccount by remember { getCurrentAccountObjectFlow() }
4949
.collectAsStateWithLifecycle(null)
5050

51-
val status by fetchStatus(id, snackbarHandler)
51+
val status by remember { fetchStatus(id, snackbarHandler) }
5252
.collectAsStateWithLifecycle(null)
5353

5454
val ancestors = remember { mutableStateListOf<Status>() }

shared/src/commonMain/kotlin/site/remlit/snowdrop/view/settings/AboutInstanceView.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ import androidx.compose.material3.TopAppBar
1818
import androidx.compose.runtime.Composable
1919
import androidx.compose.runtime.collectAsState
2020
import androidx.compose.runtime.getValue
21+
import androidx.compose.runtime.remember
2122
import androidx.compose.ui.Alignment
2223
import androidx.compose.ui.Modifier
2324
import androidx.compose.ui.draw.clip
@@ -42,7 +43,7 @@ import snowdrop.shared.generated.resources.icon_arrow_back_24
4243
fun AboutInstanceView() = ViewSurface {
4344
val navHandler = LocalNavController.current
4445

45-
val instance by fetchInstance().collectAsStateWithLifecycle(null)
46+
val instance by remember { fetchInstance() }.collectAsStateWithLifecycle(null)
4647

4748
TopAppBar(
4849
navigationIcon = {

0 commit comments

Comments
 (0)