mirror of
https://github.com/vitorpamplona/amethyst.git
synced 2025-09-28 14:27:00 +02:00
Providing a delete fix for empty drafts.
This commit is contained in:
@@ -675,13 +675,28 @@ class Account(
|
||||
myRelayList.addAll(it.relays)
|
||||
}
|
||||
|
||||
client.send(deletionEvent, outboxRelays.flow.value + myRelayList)
|
||||
client.send(deletionEvent, myRelayList)
|
||||
cache.justConsumeMyOwnEvent(deletionEvent)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fun delete(
|
||||
event: Event,
|
||||
additionalRelays: Set<NormalizedRelayUrl>,
|
||||
) {
|
||||
if (!isWriteable()) return
|
||||
if (event.pubKey != signer.pubKey) return
|
||||
|
||||
signer.sign(
|
||||
DeletionEvent.build(listOf(event)),
|
||||
) { deletionEvent ->
|
||||
client.send(deletionEvent, outboxRelays.flow.value + additionalRelays)
|
||||
cache.justConsumeMyOwnEvent(deletionEvent)
|
||||
}
|
||||
}
|
||||
|
||||
suspend fun createHTTPAuthorization(
|
||||
url: String,
|
||||
method: String,
|
||||
@@ -1438,9 +1453,10 @@ class Account(
|
||||
noteEvent.createDeletedEvent(signer) {
|
||||
client.send(it, outboxRelays.flow.value + note.relays)
|
||||
cache.justConsumeMyOwnEvent(it)
|
||||
|
||||
delete(it, note.relays.toSet())
|
||||
}
|
||||
}
|
||||
delete(note)
|
||||
}
|
||||
}
|
||||
|
||||
|
@@ -2784,6 +2784,12 @@ object LocalCache : ILocalCache {
|
||||
if (consumeBaseReplaceable(event, relay, wasVerified)) {
|
||||
return true
|
||||
}
|
||||
} else {
|
||||
// passes to the AccountViewModel for further delete.
|
||||
val note = Note(event.id)
|
||||
note.loadEvent(event, getOrCreateUser(event.pubKey), emptyList())
|
||||
relay?.let { note.addRelay(it) }
|
||||
refreshObservers(note)
|
||||
}
|
||||
|
||||
return false
|
||||
|
@@ -28,7 +28,7 @@ import com.vitorpamplona.quartz.nip37Drafts.DraftEvent
|
||||
import com.vitorpamplona.quartz.nip51Lists.BookmarkListEvent
|
||||
import com.vitorpamplona.quartz.nip56Reports.ReportEvent
|
||||
|
||||
val DraftsAndReportsFromKeyKinds =
|
||||
val ReportsAndBookmarksFromKeyKinds =
|
||||
listOf(
|
||||
DraftEvent.KIND,
|
||||
ReportEvent.KIND,
|
||||
@@ -47,7 +47,7 @@ fun filterDraftsAndReportsFromKey(
|
||||
relay = relay,
|
||||
filter =
|
||||
Filter(
|
||||
kinds = DraftsAndReportsFromKeyKinds,
|
||||
kinds = ReportsAndBookmarksFromKeyKinds,
|
||||
authors = listOf(pubkey),
|
||||
since = since,
|
||||
),
|
||||
|
@@ -68,9 +68,13 @@ class PrecacheNewNotesProcessor(
|
||||
|
||||
is DraftEvent -> {
|
||||
// Avoid decrypting over and over again if the event already exist.
|
||||
if (!event.isDeleted() && event.preCachedDraft(account.signer) == null && event.pubKey == account.signer.pubKey) {
|
||||
event.cachedDraft(account.signer) {
|
||||
cache.indexDraftAsRealEvent(event, it)
|
||||
if (event.pubKey == account.signer.pubKey) {
|
||||
if (!event.isDeleted()) {
|
||||
if (event.preCachedDraft(account.signer) == null) {
|
||||
event.cachedDraft(account.signer) {
|
||||
cache.indexDraftAsRealEvent(event, it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -135,6 +139,21 @@ class PrecacheNewNotesProcessor(
|
||||
newNotes.forEach {
|
||||
consume(it)
|
||||
}
|
||||
|
||||
val toDelete =
|
||||
newNotes.mapNotNull {
|
||||
val noteEvent = it.event
|
||||
if (noteEvent is DraftEvent && noteEvent.isDeleted()) {
|
||||
it
|
||||
} else {
|
||||
null
|
||||
}
|
||||
}
|
||||
|
||||
if (toDelete.isNotEmpty()) {
|
||||
Log.w("PrecacheNewNotesProcessor", "Deleting ${toDelete.size} draft notes that should have been deleted already")
|
||||
account.delete(toDelete)
|
||||
}
|
||||
} catch (e: Exception) {
|
||||
if (e is CancellationException) throw e
|
||||
Log.e("PrecacheNewNotesProcessor", "This shouldn't happen", e)
|
||||
|
Reference in New Issue
Block a user