removes derived states and some remember functions for performance.

This commit is contained in:
Vitor Pamplona
2024-06-18 09:11:32 -04:00
parent 5d5c3ae3e3
commit 08869ac350
4 changed files with 14 additions and 16 deletions

View File

@@ -31,7 +31,7 @@ import com.vitorpamplona.quartz.events.ReportEvent
import com.vitorpamplona.quartz.events.StatusEvent import com.vitorpamplona.quartz.events.StatusEvent
object NostrSingleUserDataSource : NostrDataSource("SingleUserFeed") { object NostrSingleUserDataSource : NostrDataSource("SingleUserFeed") {
var usersToWatch = setOf<User>() private var usersToWatch = setOf<User>()
fun createUserMetadataFilter(): List<TypedFilter>? { fun createUserMetadataFilter(): List<TypedFilter>? {
if (usersToWatch.isEmpty()) return null if (usersToWatch.isEmpty()) return null
@@ -83,8 +83,7 @@ object NostrSingleUserDataSource : NostrDataSource("SingleUserFeed") {
), ),
), ),
) )
} }.flatten()
.flatten()
} }
val userChannel = val userChannel =
@@ -110,8 +109,7 @@ object NostrSingleUserDataSource : NostrDataSource("SingleUserFeed") {
listOfNotNull( listOfNotNull(
createUserMetadataFilter(), createUserMetadataFilter(),
createUserMetadataStatusReportFilter(), createUserMetadataStatusReportFilter(),
) ).flatten()
.flatten()
.ifEmpty { null } .ifEmpty { null }
} }

View File

@@ -35,7 +35,6 @@ import androidx.compose.material3.NavigationBarItem
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.DisposableEffect import androidx.compose.runtime.DisposableEffect
import androidx.compose.runtime.State import androidx.compose.runtime.State
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@@ -146,12 +145,16 @@ private fun RowScope.HasNewItemsIcon(
navEntryState: State<NavBackStackEntry?>, navEntryState: State<NavBackStackEntry?>,
nav: (Route, Boolean) -> Unit, nav: (Route, Boolean) -> Unit,
) { ) {
val selected by val selected =
remember(navEntryState.value) { (
derivedStateOf { navEntryState.value?.destination?.route?.substringBefore("?") == route.base } navEntryState.value
} ?.destination
?.route
?.indexOf(route.base) ?: -1
) > -1
NavigationBarItem( NavigationBarItem(
alwaysShowLabel = false,
icon = { icon = {
NotifiableIcon( NotifiableIcon(
selected, selected,

View File

@@ -47,7 +47,6 @@ import androidx.compose.material3.TextFieldDefaults
import androidx.compose.runtime.Composable import androidx.compose.runtime.Composable
import androidx.compose.runtime.LaunchedEffect import androidx.compose.runtime.LaunchedEffect
import androidx.compose.runtime.MutableState import androidx.compose.runtime.MutableState
import androidx.compose.runtime.derivedStateOf
import androidx.compose.runtime.getValue import androidx.compose.runtime.getValue
import androidx.compose.runtime.mutableStateOf import androidx.compose.runtime.mutableStateOf
import androidx.compose.runtime.remember import androidx.compose.runtime.remember
@@ -405,11 +404,9 @@ private fun FullBleedNoteCompose(
Row(verticalAlignment = Alignment.CenterVertically) { Row(verticalAlignment = Alignment.CenterVertically) {
NoteUsernameDisplay(baseNote, Modifier.weight(1f)) NoteUsernameDisplay(baseNote, Modifier.weight(1f))
val isCommunityPost by val isCommunityPost =
remember(baseNote) { remember(baseNote) {
derivedStateOf { baseNote.event?.isTaggedAddressableKind(CommunityDefinitionEvent.KIND) == true
baseNote.event?.isTaggedAddressableKind(CommunityDefinitionEvent.KIND) == true
}
} }
if (isCommunityPost) { if (isCommunityPost) {

View File

@@ -143,7 +143,7 @@ open class Event(
override fun isSensitive() = override fun isSensitive() =
tags.any { tags.any {
(it.size > 0 && it[0].equals("content-warning")) || (it.size > 0 && it[0] == "content-warning") ||
(it.size > 1 && it[0] == "t" && (it[1].equals("nsfw", true) || it[1].equals("nude", true))) (it.size > 1 && it[0] == "t" && (it[1].equals("nsfw", true) || it[1].equals("nude", true)))
} }