BugFix for incorrect caching of NIP95

This commit is contained in:
Vitor Pamplona
2023-05-16 09:47:10 -04:00
parent 332490376b
commit 17fbf8c01f
2 changed files with 44 additions and 44 deletions
@@ -1,7 +1,6 @@
package com.vitorpamplona.amethyst.model package com.vitorpamplona.amethyst.model
import android.util.Log import android.util.Log
import androidx.core.net.toUri
import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
import com.vitorpamplona.amethyst.Amethyst import com.vitorpamplona.amethyst.Amethyst
@@ -763,19 +762,18 @@ object LocalCache {
note.addRelay(relay) note.addRelay(relay)
} }
val file = File(Amethyst.instance.applicationContext.externalCacheDir, "NIP95") try {
val cachePath = File(Amethyst.instance.applicationContext.externalCacheDir, "NIP95")
if (!file.exists()) { cachePath.mkdirs()
try { val file = File(cachePath, event.id)
val cachePath = File(Amethyst.instance.applicationContext.externalCacheDir, "NIP95") if (!file.exists()) {
cachePath.mkdirs() val stream = FileOutputStream(file)
val stream = FileOutputStream(File(cachePath, event.id))
stream.write(event.decode()) stream.write(event.decode())
stream.close() stream.close()
Log.e("EventLogger", "Saved to disk as ${File(cachePath, event.id).toUri()}") // Log.i("FileStorageEvent", "Saved to disk as ${File(cachePath, event.id).toUri()}")
} catch (e: IOException) {
Log.e("FileSotrageEvent", "FileStorageEvent save to disk error: " + event.id, e)
} }
} catch (e: IOException) {
Log.e("FileStorageEvent", "FileStorageEvent save to disk error: " + event.id, e)
} }
// Already processed this event. // Already processed this event.
@@ -1657,45 +1657,47 @@ fun FileStorageHeaderDisplay(baseNote: Note) {
} }
} }
val noteState = fileNote?.live()?.metadata?.observeAsState() fileNote?.let { fileNote2 ->
val note = noteState?.value?.note val noteState by fileNote2.live().metadata.observeAsState()
val note = remember(noteState) { noteState?.note }
var content by remember { mutableStateOf<ZoomableContent?>(null) } var content by remember { mutableStateOf<ZoomableContent?>(null) }
LaunchedEffect(key1 = eventHeader.id, key2 = noteState, key3 = note?.event) { LaunchedEffect(key1 = eventHeader.id, key2 = noteState, key3 = note?.event) {
withContext(Dispatchers.IO) { withContext(Dispatchers.IO) {
val uri = "nostr:" + baseNote.toNEvent() val uri = "nostr:" + baseNote.toNEvent()
val localDir = note?.idHex?.let { File(File(appContext.externalCacheDir, "NIP95"), it) } val localDir = note?.idHex?.let { File(File(appContext.externalCacheDir, "NIP95"), it) }
val blurHash = eventHeader.blurhash() val blurHash = eventHeader.blurhash()
val dimensions = eventHeader.dimensions() val dimensions = eventHeader.dimensions()
val description = eventHeader.content val description = eventHeader.content
val mimeType = eventHeader.mimeType() val mimeType = eventHeader.mimeType()
content = if (mimeType?.startsWith("image") == true) { content = if (mimeType?.startsWith("image") == true) {
ZoomableLocalImage( ZoomableLocalImage(
localFile = localDir, localFile = localDir,
mimeType = mimeType, mimeType = mimeType,
description = description, description = description,
blurhash = blurHash, blurhash = blurHash,
dim = dimensions, dim = dimensions,
isVerified = true, isVerified = true,
uri = uri uri = uri
) )
} else { } else {
ZoomableLocalVideo( ZoomableLocalVideo(
localFile = localDir, localFile = localDir,
mimeType = mimeType, mimeType = mimeType,
description = description, description = description,
dim = dimensions, dim = dimensions,
isVerified = true, isVerified = true,
uri = uri uri = uri
) )
}
} }
} }
}
content?.let { content?.let {
ZoomableContentView(content = it, listOf(it)) ZoomableContentView(content = it, listOf(it))
}
} }
} }