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

Wyświetl plik

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

Wyświetl plik

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

Wyświetl plik

@ -83,7 +83,7 @@ enum class UserSuggestionAnchor {
@Stable
open class NewPostViewModel() : ViewModel() {
var draftTag: String = UUID.randomUUID().toString()
private var draftTag: String = UUID.randomUUID().toString()
var accountViewModel: AccountViewModel? = null
var account: Account? = null
var requiresNIP24: Boolean = false
@ -309,7 +309,9 @@ open class NewPostViewModel() : ViewModel() {
draft: Note,
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
canAddZapRaiser = accountViewModel.userProfile().info?.lnAddress() != null