mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-03-17 21:31:57 +01:00
moves the processing of nip19 links to the default thread
This commit is contained in:
parent
8d9bf60dba
commit
4d21857adf
@ -1548,32 +1548,47 @@ class AccountViewModel(
|
||||
val accountViewModel: AccountViewModel,
|
||||
) : GenericBaseCache<String, LoadedBechLink>(20) {
|
||||
override suspend fun compute(key: String): LoadedBechLink? =
|
||||
Nip19Bech32.uriToRoute(key)?.let {
|
||||
var returningNote: Note? = null
|
||||
withContext(Dispatchers.Default) {
|
||||
Nip19Bech32.uriToRoute(key)?.let {
|
||||
var returningNote: Note? = null
|
||||
|
||||
when (val parsed = it.entity) {
|
||||
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.NEmbed ->
|
||||
withContext(Dispatchers.Default) {
|
||||
val baseNote = LocalCache.getOrCreateNote(parsed.event)
|
||||
if (baseNote.event == null) {
|
||||
launch(Dispatchers.IO) {
|
||||
LocalCache.verifyAndConsume(parsed.event, null)
|
||||
when (val parsed = it.entity) {
|
||||
is Nip19Bech32.NSec -> {}
|
||||
is Nip19Bech32.NPub -> {}
|
||||
is Nip19Bech32.NProfile -> {}
|
||||
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.Default) {
|
||||
LocalCache.verifyAndConsume(parsed.event, null)
|
||||
}
|
||||
}
|
||||
|
||||
returningNote = baseNote
|
||||
}
|
||||
|
||||
returningNote = baseNote
|
||||
is Nip19Bech32.NRelay -> {}
|
||||
is Nip19Bech32.NAddress -> {
|
||||
LocalCache.checkGetOrCreateNote(parsed.atag)?.let { note ->
|
||||
returningNote = note
|
||||
}
|
||||
}
|
||||
is Nip19Bech32.NRelay -> {}
|
||||
is Nip19Bech32.NAddress -> withContext(Dispatchers.IO) { LocalCache.checkGetOrCreateNote(parsed.atag)?.let { note -> returningNote = note } }
|
||||
else -> {}
|
||||
}
|
||||
else -> {}
|
||||
}
|
||||
|
||||
LoadedBechLink(returningNote, it)
|
||||
LoadedBechLink(returningNote, it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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> {
|
||||
|
Loading…
x
Reference in New Issue
Block a user