mirror of
https://github.com/oxen-io/session-android.git
synced 2025-12-04 22:31:53 +00:00
UX for unencrypted fallback case
This commit is contained in:
committed by
Moxie Marlinspike
parent
40629a3bcf
commit
832763f695
@@ -31,11 +31,12 @@ import org.thoughtcrime.securesms.notifications.MessageNotifier;
|
||||
import org.thoughtcrime.securesms.recipients.Recipients;
|
||||
import org.thoughtcrime.securesms.service.SendReceiveService.ToastHandler;
|
||||
import org.thoughtcrime.securesms.sms.IncomingIdentityUpdateMessage;
|
||||
import org.thoughtcrime.securesms.transport.InsecureFallbackApprovalException;
|
||||
import org.thoughtcrime.securesms.transport.RetryLaterException;
|
||||
import org.thoughtcrime.securesms.transport.SecureFallbackApprovalException;
|
||||
import org.thoughtcrime.securesms.transport.UndeliverableMessageException;
|
||||
import org.thoughtcrime.securesms.transport.UniversalTransport;
|
||||
import org.thoughtcrime.securesms.transport.UntrustedIdentityException;
|
||||
import org.thoughtcrime.securesms.transport.UserInterventionRequiredException;
|
||||
import org.whispersystems.textsecure.crypto.MasterSecret;
|
||||
|
||||
import ws.com.google.android.mms.MmsException;
|
||||
@@ -84,16 +85,18 @@ public class MmsSender {
|
||||
result.getResponseStatus());
|
||||
|
||||
systemStateListener.unregisterForConnectivityChange();
|
||||
} catch (UserInterventionRequiredException uire) {
|
||||
Log.w("MmsSender", uire);
|
||||
database.markAsPendingApproval(message.getDatabaseMessageId());
|
||||
Recipients recipients = threads.getRecipientsForThreadId(threadId);
|
||||
MessageNotifier.notifyMessageDeliveryFailed(context, recipients, threadId);
|
||||
} catch (InsecureFallbackApprovalException ifae) {
|
||||
Log.w("MmsSender", ifae);
|
||||
database.markAsPendingInsecureSmsFallback(message.getDatabaseMessageId());
|
||||
notifyMessageDeliveryFailed(context, threads, threadId);
|
||||
} catch (SecureFallbackApprovalException sfae) {
|
||||
Log.w("MmsSender", sfae);
|
||||
database.markAsPendingSecureSmsFallback(message.getDatabaseMessageId());
|
||||
notifyMessageDeliveryFailed(context, threads, threadId);
|
||||
} catch (UndeliverableMessageException e) {
|
||||
Log.w("MmsSender", e);
|
||||
database.markAsSentFailed(message.getDatabaseMessageId());
|
||||
Recipients recipients = threads.getRecipientsForThreadId(threadId);
|
||||
MessageNotifier.notifyMessageDeliveryFailed(context, recipients, threadId);
|
||||
notifyMessageDeliveryFailed(context, threads, threadId);
|
||||
} catch (UntrustedIdentityException uie) {
|
||||
IncomingIdentityUpdateMessage identityUpdateMessage = IncomingIdentityUpdateMessage.createFor(message.getTo()[0].getString(), uie.getIdentityKey());
|
||||
DatabaseFactory.getEncryptingSmsDatabase(context).insertMessageInbox(masterSecret, identityUpdateMessage);
|
||||
@@ -117,6 +120,11 @@ public class MmsSender {
|
||||
}
|
||||
}
|
||||
|
||||
private static void notifyMessageDeliveryFailed(Context context, ThreadDatabase threads, long threadId) {
|
||||
Recipients recipients = threads.getRecipientsForThreadId(threadId);
|
||||
MessageNotifier.notifyMessageDeliveryFailed(context, recipients, threadId);
|
||||
}
|
||||
|
||||
private void scheduleQuickRetryAlarm() {
|
||||
((AlarmManager)context.getSystemService(Context.ALARM_SERVICE))
|
||||
.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis() + (30 * 1000),
|
||||
|
||||
@@ -36,12 +36,12 @@ import org.thoughtcrime.securesms.notifications.MessageNotifier;
|
||||
import org.thoughtcrime.securesms.recipients.Recipients;
|
||||
import org.thoughtcrime.securesms.service.SendReceiveService.ToastHandler;
|
||||
import org.thoughtcrime.securesms.sms.IncomingIdentityUpdateMessage;
|
||||
import org.thoughtcrime.securesms.transport.InsecureFallbackApprovalException;
|
||||
import org.thoughtcrime.securesms.transport.RetryLaterException;
|
||||
import org.thoughtcrime.securesms.transport.SecureFallbackApprovalException;
|
||||
import org.thoughtcrime.securesms.transport.UndeliverableMessageException;
|
||||
import org.thoughtcrime.securesms.transport.UniversalTransport;
|
||||
import org.thoughtcrime.securesms.transport.UntrustedIdentityException;
|
||||
import org.thoughtcrime.securesms.transport.UserInterventionRequiredException;
|
||||
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import org.whispersystems.textsecure.crypto.MasterSecret;
|
||||
import org.whispersystems.textsecure.storage.Session;
|
||||
|
||||
@@ -86,9 +86,13 @@ public class SmsSender {
|
||||
database.markAsSending(record.getId());
|
||||
|
||||
transport.deliver(record);
|
||||
} catch (UserInterventionRequiredException uire) {
|
||||
Log.w("SmsSender", uire);
|
||||
DatabaseFactory.getSmsDatabase(context).markAsPendingApproval(record.getId());
|
||||
} catch (InsecureFallbackApprovalException ifae) {
|
||||
Log.w("SmsSender", ifae);
|
||||
DatabaseFactory.getSmsDatabase(context).markAsPendingInsecureSmsFallback(record.getId());
|
||||
MessageNotifier.notifyMessageDeliveryFailed(context, record.getRecipients(), record.getThreadId());
|
||||
} catch (SecureFallbackApprovalException sfae) {
|
||||
Log.w("SmsSender", sfae);
|
||||
DatabaseFactory.getSmsDatabase(context).markAsPendingSecureSmsFallback(record.getId());
|
||||
MessageNotifier.notifyMessageDeliveryFailed(context, record.getRecipients(), record.getThreadId());
|
||||
} catch (UntrustedIdentityException e) {
|
||||
Log.w("SmsSender", e);
|
||||
|
||||
Reference in New Issue
Block a user