diff --git a/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftViewModel.kt b/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftViewModel.kt index a7e6e35897..f4af515faa 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftViewModel.kt +++ b/app/src/main/java/org/thoughtcrime/securesms/conversation/drafts/DraftViewModel.kt @@ -16,6 +16,7 @@ import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.util.Base64 import org.thoughtcrime.securesms.util.concurrent.ListenableFuture import org.thoughtcrime.securesms.util.rx.RxStore +import java.util.concurrent.ExecutionException /** * ViewModel responsible for holding Voice Note draft state. The intention is to allow @@ -46,8 +47,20 @@ class DraftViewModel @JvmOverloads constructor( } fun saveEphemeralVoiceNoteDraft(voiceNoteDraftFuture: ListenableFuture) { - store.update { - saveDrafts(it.copy(voiceNoteDraft = voiceNoteDraftFuture.get().asDraft())) + store.update { draftState -> + val draft: VoiceNoteDraft? = try { + voiceNoteDraftFuture.get() + } catch (e: ExecutionException) { + null + } catch (e: InterruptedException) { + null + } + + if (draft != null) { + saveDrafts(draftState.copy(voiceNoteDraft = draft.asDraft())) + } else { + draftState + } } }