Starts to use getXIfExists functions to preload objects
This commit is contained in:
@@ -51,6 +51,18 @@ object LocalCache {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fun getUserIfExists(key: String): User? {
|
||||||
|
return users[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getNoteIfExists(key: String): Note? {
|
||||||
|
return addressables[key] ?: notes[key]
|
||||||
|
}
|
||||||
|
|
||||||
|
fun getChannelIfExists(key: String): Channel? {
|
||||||
|
return channels[key]
|
||||||
|
}
|
||||||
|
|
||||||
fun checkGetOrCreateNote(key: String): Note? {
|
fun checkGetOrCreateNote(key: String): Note? {
|
||||||
checkNotInMainThread()
|
checkNotInMainThread()
|
||||||
|
|
||||||
|
|||||||
@@ -90,7 +90,7 @@ private fun LoadNote(
|
|||||||
hex: String,
|
hex: String,
|
||||||
content: @Composable (Note) -> Unit
|
content: @Composable (Note) -> Unit
|
||||||
) {
|
) {
|
||||||
var noteBase by remember(hex) { mutableStateOf<Note?>(null) }
|
var noteBase by remember(hex) { mutableStateOf(LocalCache.getNoteIfExists(hex)) }
|
||||||
|
|
||||||
LaunchedEffect(key1 = hex) {
|
LaunchedEffect(key1 = hex) {
|
||||||
if (noteBase == null) {
|
if (noteBase == null) {
|
||||||
@@ -184,13 +184,15 @@ private fun DisplayAddress(
|
|||||||
nip19: Nip19.Return,
|
nip19: Nip19.Return,
|
||||||
nav: (String) -> Unit
|
nav: (String) -> Unit
|
||||||
) {
|
) {
|
||||||
var noteBase by remember(nip19) { mutableStateOf<Note?>(null) }
|
var noteBase by remember(nip19) { mutableStateOf(LocalCache.getNoteIfExists(nip19.hex)) }
|
||||||
|
|
||||||
LaunchedEffect(key1 = nip19.hex) {
|
LaunchedEffect(key1 = nip19.hex) {
|
||||||
|
if (noteBase == null) {
|
||||||
launch(Dispatchers.IO) {
|
launch(Dispatchers.IO) {
|
||||||
noteBase = LocalCache.checkGetOrCreateAddressableNote(nip19.hex)
|
noteBase = LocalCache.checkGetOrCreateAddressableNote(nip19.hex)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
noteBase?.let {
|
noteBase?.let {
|
||||||
val noteState by it.live().metadata.observeAsState()
|
val noteState by it.live().metadata.observeAsState()
|
||||||
@@ -221,13 +223,15 @@ private fun DisplayUser(
|
|||||||
nip19: Nip19.Return,
|
nip19: Nip19.Return,
|
||||||
nav: (String) -> Unit
|
nav: (String) -> Unit
|
||||||
) {
|
) {
|
||||||
var userBase by remember(nip19) { mutableStateOf<User?>(null) }
|
var userBase by remember(nip19) { mutableStateOf(LocalCache.getUserIfExists(nip19.hex)) }
|
||||||
|
|
||||||
LaunchedEffect(key1 = nip19.hex) {
|
LaunchedEffect(key1 = nip19.hex) {
|
||||||
|
if (userBase == null) {
|
||||||
launch(Dispatchers.IO) {
|
launch(Dispatchers.IO) {
|
||||||
userBase = LocalCache.checkGetOrCreateUser(nip19.hex)
|
userBase = LocalCache.checkGetOrCreateUser(nip19.hex)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
userBase?.let {
|
userBase?.let {
|
||||||
RenderUserAsClickableText(it, nip19, nav)
|
RenderUserAsClickableText(it, nip19, nav)
|
||||||
|
|||||||
@@ -548,7 +548,7 @@ private fun ObserveNIP19Event(
|
|||||||
it: Nip19.Return,
|
it: Nip19.Return,
|
||||||
onRefresh: () -> Unit
|
onRefresh: () -> Unit
|
||||||
) {
|
) {
|
||||||
var baseNote by remember(it) { mutableStateOf<Note?>(null) }
|
var baseNote by remember(it) { mutableStateOf<Note?>(LocalCache.getNoteIfExists(it.hex)) }
|
||||||
|
|
||||||
LaunchedEffect(key1 = it.hex) {
|
LaunchedEffect(key1 = it.hex) {
|
||||||
if (baseNote == null) {
|
if (baseNote == null) {
|
||||||
@@ -563,6 +563,12 @@ private fun ObserveNIP19Event(
|
|||||||
}
|
}
|
||||||
|
|
||||||
baseNote?.let { note ->
|
baseNote?.let { note ->
|
||||||
|
ObserveNote(note, onRefresh)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
fun ObserveNote(note: Note, onRefresh: () -> Unit) {
|
||||||
val noteState by note.live().metadata.observeAsState()
|
val noteState by note.live().metadata.observeAsState()
|
||||||
|
|
||||||
LaunchedEffect(key1 = noteState) {
|
LaunchedEffect(key1 = noteState) {
|
||||||
@@ -573,14 +579,13 @@ private fun ObserveNIP19Event(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
@Composable
|
@Composable
|
||||||
private fun ObserveNIP19User(
|
private fun ObserveNIP19User(
|
||||||
it: Nip19.Return,
|
it: Nip19.Return,
|
||||||
onRefresh: () -> Unit
|
onRefresh: () -> Unit
|
||||||
) {
|
) {
|
||||||
var baseUser by remember(it) { mutableStateOf<User?>(null) }
|
var baseUser by remember(it) { mutableStateOf<User?>(LocalCache.getUserIfExists(it.hex)) }
|
||||||
|
|
||||||
LaunchedEffect(key1 = it.hex) {
|
LaunchedEffect(key1 = it.hex) {
|
||||||
if (baseUser == null) {
|
if (baseUser == null) {
|
||||||
@@ -595,6 +600,12 @@ private fun ObserveNIP19User(
|
|||||||
}
|
}
|
||||||
|
|
||||||
baseUser?.let { user ->
|
baseUser?.let { user ->
|
||||||
|
ObserveUser(user, onRefresh)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@Composable
|
||||||
|
private fun ObserveUser(user: User, onRefresh: () -> Unit) {
|
||||||
val userState by user.live().metadata.observeAsState()
|
val userState by user.live().metadata.observeAsState()
|
||||||
|
|
||||||
LaunchedEffect(key1 = userState) {
|
LaunchedEffect(key1 = userState) {
|
||||||
@@ -605,7 +616,6 @@ private fun ObserveNIP19User(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
private fun getDisplayNameAndNIP19FromTag(tag: String, tags: ImmutableListOfLists<String>): Pair<String, String>? {
|
private fun getDisplayNameAndNIP19FromTag(tag: String, tags: ImmutableListOfLists<String>): Pair<String, String>? {
|
||||||
val matcher = tagIndex.matcher(tag)
|
val matcher = tagIndex.matcher(tag)
|
||||||
|
|||||||
@@ -225,7 +225,7 @@ 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?>(null)
|
mutableStateOf<User?>(LocalCache.getUserIfExists(baseUserHex))
|
||||||
}
|
}
|
||||||
|
|
||||||
LaunchedEffect(key1 = baseUserHex) {
|
LaunchedEffect(key1 = baseUserHex) {
|
||||||
|
|||||||
@@ -1850,7 +1850,7 @@ private fun DrawAuthorImages(baseNote: Note, accountViewModel: AccountViewModel,
|
|||||||
@Composable
|
@Composable
|
||||||
fun LoadChannel(baseChannelHex: String, content: @Composable (Channel) -> Unit) {
|
fun LoadChannel(baseChannelHex: String, content: @Composable (Channel) -> Unit) {
|
||||||
var channel by remember(baseChannelHex) {
|
var channel by remember(baseChannelHex) {
|
||||||
mutableStateOf<Channel?>(null)
|
mutableStateOf<Channel?>(LocalCache.getChannelIfExists(baseChannelHex))
|
||||||
}
|
}
|
||||||
|
|
||||||
LaunchedEffect(key1 = baseChannelHex) {
|
LaunchedEffect(key1 = baseChannelHex) {
|
||||||
|
|||||||
Reference in New Issue
Block a user