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)
|
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)
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
Ładowanie…
Reference in New Issue