mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-04-22 09:49:30 +01:00
Exit edit message mode on message send.
This commit is contained in:
@@ -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();
|
||||
}
|
||||
|
||||
|
||||
@@ -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()) {
|
||||
|
||||
@@ -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 {
|
||||
|
||||
Reference in New Issue
Block a user