fix delete on close

pull/749/head
greenart7c3 2024-03-18 14:21:58 -03:00
rodzic 204eaa4606
commit f7ab925b1d
4 zmienionych plików z 33 dodań i 8 usunięć

Wyświetl plik

@ -1346,6 +1346,7 @@ class Account(
Client.send(draftEvent, relayList = relayList) Client.send(draftEvent, relayList = relayList)
LocalCache.justConsume(draftEvent, null) LocalCache.justConsume(draftEvent, null)
LocalCache.justConsume(it, null) LocalCache.justConsume(it, null)
LocalCache.addDraft(draftTag, it.id())
} }
} else { } else {
Client.send(it, relayList = relayList) Client.send(it, relayList = relayList)
@ -1407,6 +1408,7 @@ class Account(
Client.send(draftEvent, relayList = relayList) Client.send(draftEvent, relayList = relayList)
LocalCache.justConsume(draftEvent, null) LocalCache.justConsume(draftEvent, null)
LocalCache.justConsume(it, null) LocalCache.justConsume(it, null)
LocalCache.addDraft(draftTag, it.id())
} }
} else { } else {
Client.send(it, relayList = relayList) Client.send(it, relayList = relayList)
@ -1474,6 +1476,7 @@ class Account(
Client.send(draftEvent, relayList = relayList) Client.send(draftEvent, relayList = relayList)
LocalCache.justConsume(draftEvent, null) LocalCache.justConsume(draftEvent, null)
LocalCache.justConsume(it, null) LocalCache.justConsume(it, null)
LocalCache.addDraft(draftTag, it.id())
} }
} else { } else {
Client.send(it, relayList = relayList) Client.send(it, relayList = relayList)
@ -1564,6 +1567,7 @@ class Account(
Client.send(draftEvent, relayList = relayList) Client.send(draftEvent, relayList = relayList)
LocalCache.justConsume(draftEvent, null) LocalCache.justConsume(draftEvent, null)
LocalCache.justConsume(it, null) LocalCache.justConsume(it, null)
LocalCache.addDraft(draftTag, it.id())
} }
} else { } else {
Client.send(it, relayList = relayList) Client.send(it, relayList = relayList)
@ -1615,6 +1619,7 @@ class Account(
Client.send(draftEvent) Client.send(draftEvent)
LocalCache.justConsume(draftEvent, null) LocalCache.justConsume(draftEvent, null)
LocalCache.justConsume(it, null) LocalCache.justConsume(it, null)
LocalCache.addDraft(draftTag, it.id())
} }
} else { } else {
Client.send(it) Client.send(it)
@ -1659,6 +1664,7 @@ class Account(
Client.send(draftEvent) Client.send(draftEvent)
LocalCache.justConsume(draftEvent, null) LocalCache.justConsume(draftEvent, null)
LocalCache.justConsume(it, null) LocalCache.justConsume(it, null)
LocalCache.addDraft(draftTag, it.id())
} }
} else { } else {
Client.send(it) Client.send(it)
@ -1730,6 +1736,7 @@ class Account(
Client.send(draftEvent) Client.send(draftEvent)
LocalCache.justConsume(draftEvent, null) LocalCache.justConsume(draftEvent, null)
LocalCache.justConsume(it, null) LocalCache.justConsume(it, null)
LocalCache.addDraft(draftTag, it.id())
} }
} else { } else {
Client.send(it) Client.send(it)

Wyświetl plik

@ -129,7 +129,7 @@ object LocalCache {
val users = LargeCache<HexKey, User>() val users = LargeCache<HexKey, User>()
val notes = LargeCache<HexKey, Note>() val notes = LargeCache<HexKey, Note>()
val addressables = LargeCache<String, AddressableNote>() val addressables = LargeCache<String, AddressableNote>()
val drafts = ConcurrentHashMap<String, MutableList<HexKey>>()
val channels = ConcurrentHashMap<HexKey, Channel>() val channels = ConcurrentHashMap<HexKey, Channel>()
val awaitingPaymentRequests = ConcurrentHashMap<HexKey, Pair<Note?, (LnZapPaymentResponseEvent) -> Unit>>(10) val awaitingPaymentRequests = ConcurrentHashMap<HexKey, Pair<Note?, (LnZapPaymentResponseEvent) -> Unit>>(10)
@ -143,11 +143,18 @@ object LocalCache {
} }
fun draftNotes(draftTag: String): List<Note> { fun draftNotes(draftTag: String): List<Note> {
return notes.filter { _, it -> return drafts[draftTag]?.mapNotNull {
it.event?.tags()?.filter { it.size > 1 && it[0] == "d" }?.map { checkGetOrCreateNote(it)
it[1] } ?: listOf()
}?.firstOrNull() == draftTag }
}
fun addDraft(
key: String,
value: String,
) {
val data = drafts[key] ?: mutableListOf()
data.add(value)
drafts[key] = data
} }
fun getOrCreateUser(key: HexKey): User { fun getOrCreateUser(key: HexKey): User {

Wyświetl plik

@ -276,11 +276,20 @@ object NostrAccountDataSource : NostrDataSource("AccountData") {
when (event) { when (event) {
is DraftEvent -> { is DraftEvent -> {
// Avoid decrypting over and over again if the event already exist. // Avoid decrypting over and over again if the event already exist.
val note = LocalCache.getNoteIfExists(event.id) val note = LocalCache.getNoteIfExists(event.id)
if (note != null && relay.brief in note.relays) return if (note != null && relay.brief in note.relays) return
event.plainContent(account.signer) { event.plainContent(account.signer) {
val tag =
event.tags().filter { it.size > 1 && it[0] == "d" }.map {
it[1]
}.firstOrNull()
LocalCache.justConsume(it, relay) LocalCache.justConsume(it, relay)
tag?.let { lTag ->
LocalCache.addDraft(lTag, it.id())
}
} }
} }

Wyświetl plik

@ -83,7 +83,7 @@ enum class UserSuggestionAnchor {
@Stable @Stable
open class NewPostViewModel() : ViewModel() { open class NewPostViewModel() : ViewModel() {
var draftTag: String = UUID.randomUUID().toString() private var draftTag: String = UUID.randomUUID().toString()
var accountViewModel: AccountViewModel? = null var accountViewModel: AccountViewModel? = null
var account: Account? = null var account: Account? = null
var requiresNIP24: Boolean = false var requiresNIP24: Boolean = false
@ -309,7 +309,9 @@ open class NewPostViewModel() : ViewModel() {
draft: Note, draft: Note,
accountViewModel: AccountViewModel, accountViewModel: AccountViewModel,
) { ) {
Log.d("draft", draft.event?.toJson().toString()) draftTag = LocalCache.drafts.filter {
it.value.contains(draft.idHex)
}.keys.firstOrNull() ?: draftTag
canAddInvoice = accountViewModel.userProfile().info?.lnAddress() != null canAddInvoice = accountViewModel.userProfile().info?.lnAddress() != null
canAddZapRaiser = accountViewModel.userProfile().info?.lnAddress() != null canAddZapRaiser = accountViewModel.userProfile().info?.lnAddress() != null