mirror of
https://github.com/oxen-io/session-android.git
synced 2024-12-24 16:57:50 +00:00
Only update thread friend request status on message send if we haven't sent a previous request.
Always send self sync messages to our primary device. Cache conversation input enabled so that subsequent calls don't cause it to flicker.
This commit is contained in:
parent
5c1ec4c06d
commit
41e0934dd4
@ -329,6 +329,7 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
protected HidingLinearLayout quickAttachmentToggle;
|
||||
protected HidingLinearLayout inlineAttachmentToggle;
|
||||
private InputPanel inputPanel;
|
||||
private boolean alwaysEnableInputPanel = false;
|
||||
|
||||
private LinkPreviewViewModel linkPreviewViewModel;
|
||||
private ConversationSearchViewModel searchViewModel;
|
||||
@ -2202,7 +2203,14 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
}
|
||||
|
||||
private void updateInputPanel() {
|
||||
if (recipient.isGroupRecipient() || isNoteToSelf()) {
|
||||
/*
|
||||
alwaysEnableInputPanel caches whether we have enabled the input once.
|
||||
|
||||
This stops the case where the input panel disables and enables rapidly.
|
||||
- This can occur when we are not friends with the current thread BUT multi-device tells us that we are friends with another one of their devices.
|
||||
*/
|
||||
|
||||
if (recipient.isGroupRecipient() || isNoteToSelf() || alwaysEnableInputPanel) {
|
||||
setInputPanelEnabled(true);
|
||||
return;
|
||||
}
|
||||
@ -2212,9 +2220,12 @@ public class ConversationActivity extends PassphraseRequiredActionBarActivity
|
||||
boolean isPending = friendRequestStatus == LokiThreadFriendRequestStatus.REQUEST_SENDING || friendRequestStatus == LokiThreadFriendRequestStatus.REQUEST_SENT || friendRequestStatus == LokiThreadFriendRequestStatus.REQUEST_RECEIVED;
|
||||
setInputPanelEnabled(!isPending);
|
||||
|
||||
alwaysEnableInputPanel = friendRequestStatus == LokiThreadFriendRequestStatus.FRIENDS;
|
||||
|
||||
// This promise correctly updates the UI for multidevice
|
||||
if (friendRequestStatus != LokiThreadFriendRequestStatus.FRIENDS) {
|
||||
MultiDeviceUtilities.shouldEnableUserInput(this, recipient).success(shouldEnableInput -> {
|
||||
alwaysEnableInputPanel = shouldEnableInput;
|
||||
setInputPanelEnabled(shouldEnableInput);
|
||||
return Unit.INSTANCE;
|
||||
});
|
||||
|
@ -303,7 +303,8 @@ public abstract class PushSendJob extends SendJob {
|
||||
}
|
||||
|
||||
protected SignalServiceSyncMessage buildSelfSendSyncMessage(@NonNull Context context, @NonNull SignalServiceDataMessage message, Optional<UnidentifiedAccessPair> syncAccess) {
|
||||
String localNumber = TextSecurePreferences.getLocalNumber(context);
|
||||
String primary = TextSecurePreferences.getMasterHexEncodedPublicKey(context);
|
||||
String localNumber = primary != null ? primary : TextSecurePreferences.getLocalNumber(context);
|
||||
SentTranscriptMessage transcript = new SentTranscriptMessage(localNumber,
|
||||
message.getTimestamp(),
|
||||
message,
|
||||
|
@ -1,12 +1,8 @@
|
||||
package org.thoughtcrime.securesms.loki
|
||||
|
||||
import android.content.Context
|
||||
import nl.komponents.kovenant.Promise
|
||||
import nl.komponents.kovenant.ui.alwaysUi
|
||||
import nl.komponents.kovenant.ui.successUi
|
||||
import org.thoughtcrime.securesms.database.DatabaseFactory
|
||||
import org.thoughtcrime.securesms.util.Util
|
||||
import org.whispersystems.signalservice.loki.api.LokiStorageAPI
|
||||
import org.whispersystems.signalservice.loki.messaging.LokiMessageFriendRequestStatus
|
||||
import org.whispersystems.signalservice.loki.messaging.LokiThreadFriendRequestStatus
|
||||
import java.lang.IllegalStateException
|
||||
@ -20,13 +16,20 @@ object FriendRequestHandler {
|
||||
val recipient = DatabaseFactory.getThreadDatabase(context).getRecipientForThreadId(threadId) ?: return
|
||||
if (!recipient.address.isPhone) { return }
|
||||
|
||||
// Update thread status
|
||||
val threadFriendStatus = when (type) {
|
||||
ActionType.Sending -> LokiThreadFriendRequestStatus.REQUEST_SENDING
|
||||
ActionType.Failed -> LokiThreadFriendRequestStatus.NONE
|
||||
ActionType.Sent -> LokiThreadFriendRequestStatus.REQUEST_SENT
|
||||
val currentFriendStatus = DatabaseFactory.getLokiThreadDatabase(context).getFriendRequestStatus(threadId)
|
||||
// Update thread status if we haven't sent a friend request before
|
||||
if (currentFriendStatus != LokiThreadFriendRequestStatus.REQUEST_RECEIVED &&
|
||||
currentFriendStatus != LokiThreadFriendRequestStatus.REQUEST_SENT &&
|
||||
currentFriendStatus != LokiThreadFriendRequestStatus.FRIENDS
|
||||
) {
|
||||
val threadFriendStatus = when (type) {
|
||||
ActionType.Sending -> LokiThreadFriendRequestStatus.REQUEST_SENDING
|
||||
ActionType.Failed -> LokiThreadFriendRequestStatus.NONE
|
||||
ActionType.Sent -> LokiThreadFriendRequestStatus.REQUEST_SENT
|
||||
}
|
||||
DatabaseFactory.getLokiThreadDatabase(context).setFriendRequestStatus(threadId, threadFriendStatus)
|
||||
}
|
||||
DatabaseFactory.getLokiThreadDatabase(context).setFriendRequestStatus(threadId, threadFriendStatus)
|
||||
|
||||
|
||||
// Update message status
|
||||
if (messageId >= 0) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user