Exit edit message mode on message send.

This commit is contained in:
Clark
2023-07-28 13:44:58 -04:00
committed by Greyson Parrelli
parent 66792f2d56
commit b11d653fc0
6 changed files with 50 additions and 15 deletions

View File

@@ -1085,6 +1085,10 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
return null;
}
}.executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR);
for (MessageRecord messageRecord : messageRecords) {
listener.onDeleteMessage(messageRecord.getId());
}
});
int deleteForEveryoneResId = isNoteToSelfDelete ? R.string.ConversationFragment_delete_everywhere : R.string.ConversationFragment_delete_for_everyone;
@@ -1110,6 +1114,9 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
private void handleDeleteForEveryone(Set<MessageRecord> messageRecords) {
Runnable deleteForEveryone = () -> {
for (MessageRecord messageRecord : messageRecords) {
listener.onRemoteDeleteMessage(messageRecord.getId());
}
SignalExecutors.BOUNDED.execute(() -> {
for (MessageRecord message : messageRecords) {
MessageSender.sendRemoteDelete(message.getId());
@@ -1477,6 +1484,8 @@ public class ConversationFragment extends LoggingFragment implements Multiselect
void onRegisterVoiceNoteCallbacks(@NonNull Observer<VoiceNotePlaybackState> onPlaybackStartObserver);
void onUnregisterVoiceNoteCallbacks(@NonNull Observer<VoiceNotePlaybackState> onPlaybackStartObserver);
void onInviteToSignal();
void onDeleteMessage(long id);
void onRemoteDeleteMessage(long targetId);
boolean isInBubble();
}

View File

@@ -4054,6 +4054,22 @@ public class ConversationParentFragment extends Fragment
handleInviteLink();
}
@Override
public void onDeleteMessage(long id) {
MessageId messageId = inputPanel.getEditMessageId();
if (messageId != null && messageId.getId() == id) {
inputPanel.exitEditMessageMode();
}
}
@Override
public void onRemoteDeleteMessage(long targetId) {
MessageId messageId = inputPanel.getEditMessageId();
if (messageId != null && messageId.getId() == targetId) {
inputPanel.exitEditMessageMode();
}
}
@Override
public void onCursorChanged() {
if (!reactionDelegate.isShowing()) {

View File

@@ -2119,10 +2119,17 @@ class ConversationFragment :
}
private fun handleDeleteMessages(messageParts: Set<MultiselectPart>) {
val records = messageParts.map(MultiselectPart::getMessageRecord).toSet()
disposables += DeleteDialog.show(
context = requireContext(),
messageRecords = messageParts.map(MultiselectPart::getMessageRecord).toSet()
).subscribe()
messageRecords = records
).subscribe { (deleted: Boolean, _: Boolean) ->
if (!deleted) return@subscribe
val editMessageId = inputPanel.editMessageId?.id
if (editMessageId != null && records.any { it.id == editMessageId }) {
inputPanel.exitEditMessageMode()
}
}
}
private inner class SwipeAvailabilityProvider : ConversationItemSwipeCallback.SwipeAvailabilityProvider {