Fixes crash when typing a new post without permissions to do a draft post.

This commit is contained in:
Vitor Pamplona
2025-08-21 14:29:34 -04:00
parent 4a7a09c43a
commit fe141d1ee3
8 changed files with 31 additions and 20 deletions
@@ -1145,6 +1145,8 @@ class Account(
template: EventTemplate<out Event>,
broadcast: Set<Event> = emptySet(),
) {
if (!isWriteable()) return
val extraRelays = cache.getAddressableNoteIfExists(DraftWrapEvent.createAddressTag(signer.pubKey, draftTag))?.relays ?: emptyList()
val rumor = RumorAssembler.assembleRumor(signer.pubKey, template)
@@ -1163,6 +1165,8 @@ class Account(
}
suspend fun deleteDraft(draftTag: String) {
if (!isWriteable()) return
val extraRelays = cache.getAddressableNoteIfExists(DraftWrapEvent.createAddressTag(signer.pubKey, draftTag))?.relays ?: emptyList()
val deletedDraft = DraftWrapEvent.createDeletedEvent(draftTag, signer)
@@ -317,7 +317,7 @@ open class CommentPostViewModel :
cancel()
accountViewModel.account.signAndComputeBroadcast(template, extraNotesToBroadcast)
accountViewModel.deleteDraft(version)
accountViewModel.account.deleteDraft(version)
}
suspend fun sendDraftSync() {
@@ -1506,10 +1506,6 @@ class AccountViewModel(
fun dataSources() = app.sources
suspend fun deleteDraft(draftTag: String) {
account.deleteDraft(draftTag)
}
suspend fun createTempDraftNote(noteEvent: DraftWrapEvent): Note? = draftNoteCache.update(noteEvent)
fun createTempDraftNote(
@@ -112,7 +112,9 @@ class ChatNewMessageViewModel :
draftTag.versions.collectLatest {
// don't save the first
if (it > 0) {
sendDraftSync()
accountViewModel.runIOCatching {
sendDraftSync()
}
}
}
}
@@ -349,7 +351,7 @@ class ChatNewMessageViewModel :
val version = draftTag.current
innerSendPost(null)
cancel()
accountViewModel.deleteDraft(version)
accountViewModel.account.deleteDraft(version)
}
suspend fun sendDraftSync() {
@@ -106,7 +106,9 @@ open class ChannelNewMessageViewModel :
draftTag.versions.collectLatest {
// don't save the first
if (it > 0) {
sendDraftSync()
accountViewModel.runIOCatching {
sendDraftSync()
}
}
}
}
@@ -260,7 +262,7 @@ open class ChannelNewMessageViewModel :
}
fun sendPost(onDone: suspend () -> Unit) {
viewModelScope.launch(Dispatchers.IO) {
accountViewModel.runIOCatching {
sendPostSync()
onDone()
}
@@ -274,7 +276,7 @@ open class ChannelNewMessageViewModel :
cancel()
accountViewModel.account.signAndSendPrivately(template, channelRelays)
accountViewModel.deleteDraft(version)
accountViewModel.account.deleteDraft(version)
}
suspend fun sendDraftSync() {
@@ -104,20 +104,22 @@ open class NewProductViewModel :
IZapRaiser {
val draftTag = DraftTagState()
var accountViewModel: AccountViewModel? = null
var account: Account? = null
init {
viewModelScope.launch(Dispatchers.IO) {
draftTag.versions.collectLatest {
// don't save the first
if (it > 0) {
sendDraftSync()
accountViewModel?.runIOCatching {
sendDraftSync()
}
}
}
}
}
var accountViewModel: AccountViewModel? = null
var account: Account? = null
var productImages by mutableStateOf<List<ProductImageMeta>>(emptyList())
val iMetaDescription = IMetaAttachments()
@@ -288,14 +290,15 @@ open class NewProductViewModel :
}
suspend fun sendPostSync() {
val accountViewModel = accountViewModel ?: return
val template = createTemplate() ?: return
accountViewModel?.account?.signAndSendPrivatelyOrBroadcast(
accountViewModel.account.signAndSendPrivatelyOrBroadcast(
template,
relayList = { relayList },
)
accountViewModel?.deleteDraft(draftTag.current)
accountViewModel.account.deleteDraft(draftTag.current)
cancel()
}
@@ -146,7 +146,9 @@ open class ShortNotePostViewModel :
draftTag.versions.collectLatest {
// don't save the first
if (it > 0) {
sendDraftSync()
accountViewModel.runIOCatching {
sendDraftSync()
}
}
}
}
@@ -481,7 +483,7 @@ open class ShortNotePostViewModel :
cancel()
accountViewModel.account.signAndComputeBroadcast(template, extraNotesToBroadcast)
accountViewModel.deleteDraft(version)
accountViewModel.account.deleteDraft(version)
}
suspend fun sendDraftSync() {
@@ -127,7 +127,9 @@ class NewPublicMessageViewModel :
draftTag.versions.collectLatest {
// don't save the first
if (it > 0) {
sendDraftSync()
accountViewModel.runIOCatching {
sendDraftSync()
}
}
}
}
@@ -319,7 +321,7 @@ class NewPublicMessageViewModel :
cancel()
accountViewModel.account.signAndComputeBroadcast(template, extraNotesToBroadcast)
accountViewModel.deleteDraft(version)
accountViewModel.account.deleteDraft(version)
}
suspend fun sendDraftSync() {