kopia lustrzana https://github.com/vitorpamplona/amethyst
fix delete on close
rodzic
204eaa4606
commit
f7ab925b1d
|
@ -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)
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
Ładowanie…
Reference in New Issue