diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/ChatNewMessageViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/ChatNewMessageViewModel.kt index fc6aafef4..fe0b1cb69 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/ChatNewMessageViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/ChatNewMessageViewModel.kt @@ -301,6 +301,8 @@ open class ChatNewMessageViewModel : ViewModel() { TextFieldValue(draftEvent.content) } + iMetaAttachments.addAll(draftEvent.imetas()) + requiresNIP17 = draftEvent is NIP17Group nip17 = draftEvent is NIP17Group @@ -348,9 +350,15 @@ open class ChatNewMessageViewModel : ViewModel() { val uploadState = uploadState ?: return if (nip17) { - ChatFileUploader(room, account).uploadNIP17(uploadState, viewModelScope, onError, context, onceUploaded) + ChatFileUploader(room, account).uploadNIP17(uploadState, viewModelScope, onError, context) { + saveDraft() + onceUploaded() + } } else { - ChatFileUploader(room, account).uploadNIP04(uploadState, viewModelScope, onError, context, onceUploaded) + ChatFileUploader(room, account).uploadNIP04(uploadState, viewModelScope, onError, context) { + saveDraft() + onceUploaded() + } } } @@ -433,6 +441,8 @@ open class ChatNewMessageViewModel : ViewModel() { userSuggestions.reset() userSuggestionsMainMessage = null + iMetaAttachments.reset() + if (emojiSearch.value.isNotEmpty()) { emojiSearch.tryEmit("") } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/IMetaAttachments.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/IMetaAttachments.kt index f23225595..f82f9b8de 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/IMetaAttachments.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/privateDM/send/IMetaAttachments.kt @@ -67,6 +67,10 @@ class IMetaAttachments { } } + fun addAll(imetas: List) { + iMetaAttachments = iMetaAttachments + imetas + } + fun remove(url: String) { iMetaAttachments = iMetaAttachments.filter { it.url != url } } @@ -101,4 +105,8 @@ class IMetaAttachments { } fun filterIsIn(urls: Set) = iMetaAttachments.filter { it.url in urls } + + fun reset() { + iMetaAttachments = emptyList() + } } diff --git a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/send/ChannelNewMessageViewModel.kt b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/send/ChannelNewMessageViewModel.kt index 9ac1ec88d..b7cd0da8e 100644 --- a/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/send/ChannelNewMessageViewModel.kt +++ b/amethyst/src/main/java/com/vitorpamplona/amethyst/ui/screen/loggedIn/chats/publicChannels/send/ChannelNewMessageViewModel.kt @@ -262,6 +262,8 @@ open class ChannelNewMessageViewModel : ViewModel() { message = TextFieldValue(draftEvent.content) + iMetaAttachments.addAll(draftEvent.imetas()) + urlPreview = findUrlInMessage() } @@ -351,6 +353,7 @@ open class ChannelNewMessageViewModel : ViewModel() { uploadState.reset() onceUploaded() + saveDraft() } else { val errorMessages = results.errors.map { stringRes(context, it.errorResource, *it.params) }.distinct() @@ -496,6 +499,8 @@ open class ChannelNewMessageViewModel : ViewModel() { userSuggestions.reset() userSuggestionsMainMessage = null + iMetaAttachments.reset() + if (emojiSearch.value.isNotEmpty()) { emojiSearch.tryEmit("") }