mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-28 21:53:01 +02:00
moves the processing of nip19 links to the default thread
This commit is contained in:
@@ -1548,6 +1548,7 @@ class AccountViewModel(
|
||||
val accountViewModel: AccountViewModel,
|
||||
) : GenericBaseCache<String, LoadedBechLink>(20) {
|
||||
override suspend fun compute(key: String): LoadedBechLink? =
|
||||
withContext(Dispatchers.Default) {
|
||||
Nip19Bech32.uriToRoute(key)?.let {
|
||||
var returningNote: Note? = null
|
||||
|
||||
@@ -1555,21 +1556,34 @@ class AccountViewModel(
|
||||
is Nip19Bech32.NSec -> {}
|
||||
is Nip19Bech32.NPub -> {}
|
||||
is Nip19Bech32.NProfile -> {}
|
||||
is Nip19Bech32.Note -> withContext(Dispatchers.IO) { LocalCache.checkGetOrCreateNote(parsed.hex)?.let { note -> returningNote = note } }
|
||||
is Nip19Bech32.NEvent -> withContext(Dispatchers.IO) { LocalCache.checkGetOrCreateNote(parsed.hex)?.let { note -> returningNote = note } }
|
||||
is Nip19Bech32.Note -> {
|
||||
LocalCache.checkGetOrCreateNote(parsed.hex)?.let { note ->
|
||||
returningNote = note
|
||||
}
|
||||
}
|
||||
is Nip19Bech32.NEvent -> {
|
||||
LocalCache.checkGetOrCreateNote(parsed.hex)?.let { note ->
|
||||
returningNote = note
|
||||
}
|
||||
}
|
||||
is Nip19Bech32.NEmbed ->
|
||||
withContext(Dispatchers.Default) {
|
||||
val baseNote = LocalCache.getOrCreateNote(parsed.event)
|
||||
if (baseNote.event == null) {
|
||||
launch(Dispatchers.IO) {
|
||||
launch(Dispatchers.Default) {
|
||||
LocalCache.verifyAndConsume(parsed.event, null)
|
||||
}
|
||||
}
|
||||
|
||||
returningNote = baseNote
|
||||
}
|
||||
|
||||
is Nip19Bech32.NRelay -> {}
|
||||
is Nip19Bech32.NAddress -> withContext(Dispatchers.IO) { LocalCache.checkGetOrCreateNote(parsed.atag)?.let { note -> returningNote = note } }
|
||||
is Nip19Bech32.NAddress -> {
|
||||
LocalCache.checkGetOrCreateNote(parsed.atag)?.let { note ->
|
||||
returningNote = note
|
||||
}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
|
||||
@@ -1577,6 +1591,7 @@ class AccountViewModel(
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
class HasNotificationDot(
|
||||
bottomNavigationItems: ImmutableList<Route>,
|
||||
|
@@ -31,7 +31,10 @@ fun <K, V> produceCachedState(
|
||||
key: K,
|
||||
): State<V?> =
|
||||
produceState(initialValue = cache.cached(key), key1 = key) {
|
||||
value = cache.update(key)
|
||||
val newValue = cache.update(key)
|
||||
if (value != newValue) {
|
||||
value = newValue
|
||||
}
|
||||
}
|
||||
|
||||
@Composable
|
||||
@@ -41,7 +44,10 @@ fun <K, V> produceCachedState(
|
||||
updateValue: K,
|
||||
): State<V?> =
|
||||
produceState(initialValue = cache.cached(updateValue), key1 = key) {
|
||||
value = cache.update(updateValue)
|
||||
val newValue = cache.update(updateValue)
|
||||
if (value != newValue) {
|
||||
value = newValue
|
||||
}
|
||||
}
|
||||
|
||||
interface CachedState<K, V> {
|
||||
|
Reference in New Issue
Block a user