mirror of
https://github.com/oxen-io/session-android.git
synced 2025-04-21 18:11:41 +00:00
parent
944f5aad0d
commit
66c9fd44df
@ -40,6 +40,7 @@ import org.thoughtcrime.securesms.sms.IncomingEncryptedMessage;
|
|||||||
import org.thoughtcrime.securesms.sms.IncomingEndSessionMessage;
|
import org.thoughtcrime.securesms.sms.IncomingEndSessionMessage;
|
||||||
import org.thoughtcrime.securesms.sms.IncomingPreKeyBundleMessage;
|
import org.thoughtcrime.securesms.sms.IncomingPreKeyBundleMessage;
|
||||||
import org.thoughtcrime.securesms.sms.IncomingTextMessage;
|
import org.thoughtcrime.securesms.sms.IncomingTextMessage;
|
||||||
|
import org.thoughtcrime.securesms.sms.OutgoingEndSessionMessage;
|
||||||
import org.thoughtcrime.securesms.sms.OutgoingTextMessage;
|
import org.thoughtcrime.securesms.sms.OutgoingTextMessage;
|
||||||
import org.thoughtcrime.securesms.util.Base64;
|
import org.thoughtcrime.securesms.util.Base64;
|
||||||
import org.thoughtcrime.securesms.util.GroupUtil;
|
import org.thoughtcrime.securesms.util.GroupUtil;
|
||||||
@ -300,6 +301,38 @@ public class PushDecryptJob extends ContextJob {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private long handleSynchronizeSentEndSessionMessage(@NonNull MasterSecretUnion masterSecret,
|
||||||
|
@NonNull SentTranscriptMessage message,
|
||||||
|
@NonNull Optional<Long> smsMessageId)
|
||||||
|
{
|
||||||
|
EncryptingSmsDatabase database = DatabaseFactory.getEncryptingSmsDatabase(context);
|
||||||
|
Recipients recipients = getSyncMessageDestination(message);
|
||||||
|
String body = message.getMessage().getBody().or("");
|
||||||
|
OutgoingTextMessage outgoingTextMessage = new OutgoingTextMessage(recipients, body);
|
||||||
|
OutgoingEndSessionMessage outgoingEndSessionMessage = new OutgoingEndSessionMessage(outgoingTextMessage);
|
||||||
|
|
||||||
|
long threadId = DatabaseFactory.getThreadDatabase(context).getThreadIdFor(recipients);
|
||||||
|
|
||||||
|
if (recipients.isSingleRecipient() && !recipients.isGroupRecipient()) {
|
||||||
|
SessionStore sessionStore = new TextSecureSessionStore(context);
|
||||||
|
sessionStore.deleteAllSessions(recipients.getPrimaryRecipient().getNumber());
|
||||||
|
|
||||||
|
SecurityEvent.broadcastSecurityUpdateEvent(context);
|
||||||
|
|
||||||
|
long messageId = database.insertMessageOutbox(masterSecret, threadId, outgoingEndSessionMessage,
|
||||||
|
false, message.getTimestamp());
|
||||||
|
database.markAsSent(messageId);
|
||||||
|
database.markAsPush(messageId);
|
||||||
|
database.markAsSecure(messageId);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (smsMessageId.isPresent()) {
|
||||||
|
database.deleteMessage(smsMessageId.get());
|
||||||
|
}
|
||||||
|
|
||||||
|
return threadId;
|
||||||
|
}
|
||||||
|
|
||||||
private void handleGroupMessage(@NonNull MasterSecretUnion masterSecret,
|
private void handleGroupMessage(@NonNull MasterSecretUnion masterSecret,
|
||||||
@NonNull SignalServiceEnvelope envelope,
|
@NonNull SignalServiceEnvelope envelope,
|
||||||
@NonNull SignalServiceDataMessage message,
|
@NonNull SignalServiceDataMessage message,
|
||||||
@ -357,7 +390,9 @@ public class PushDecryptJob extends ContextJob {
|
|||||||
|
|
||||||
Long threadId;
|
Long threadId;
|
||||||
|
|
||||||
if (message.getMessage().isGroupUpdate()) {
|
if (message.getMessage().isEndSession()) {
|
||||||
|
threadId = handleSynchronizeSentEndSessionMessage(masterSecret, message, smsMessageId);
|
||||||
|
} else if (message.getMessage().isGroupUpdate()) {
|
||||||
threadId = GroupMessageProcessor.process(context, masterSecret, envelope, message.getMessage(), true);
|
threadId = GroupMessageProcessor.process(context, masterSecret, envelope, message.getMessage(), true);
|
||||||
} else if (message.getMessage().isExpirationUpdate()) {
|
} else if (message.getMessage().isExpirationUpdate()) {
|
||||||
threadId = handleSynchronizeSentExpirationUpdate(masterSecret, message, smsMessageId);
|
threadId = handleSynchronizeSentExpirationUpdate(masterSecret, message, smsMessageId);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user