@Override protected void onPostExecute(Pair<Long, Recipients> groupInfo) { final long threadId = groupInfo.first; final Recipients recipients = groupInfo.second; if (threadId > -1) { Intent intent = getIntent(); intent.putExtra(GROUP_THREAD_EXTRA, threadId); intent.putExtra(GROUP_RECIPIENT_EXTRA, recipients.getIds()); setResult(RESULT_OK, intent); finish(); } else if (threadId == RES_BAD_NUMBER) { Toast.makeText( getApplicationContext(), R.string.GroupCreateActivity_contacts_invalid_number, Toast.LENGTH_LONG) .show(); disableWhisperGroupProgressUi(); } else if (threadId == RES_MMS_EXCEPTION) { Toast.makeText( getApplicationContext(), R.string.GroupCreateActivity_contacts_mms_exception, Toast.LENGTH_LONG) .show(); setResult(RESULT_CANCELED); finish(); } }
@Override protected void onPostExecute(Pair<Long, Recipients> groupInfo) { super.onPostExecute(groupInfo); final long threadId = groupInfo.first; final Recipients recipients = groupInfo.second; if (threadId > -1) { Intent intent = new Intent(GroupCreateActivity.this, ConversationActivity.class); intent.putExtra(ConversationActivity.THREAD_ID_EXTRA, threadId); intent.putExtra( ConversationActivity.DISTRIBUTION_TYPE_EXTRA, ThreadDatabase.DistributionTypes.DEFAULT); intent.putExtra(ConversationActivity.RECIPIENTS_EXTRA, recipients.getIds()); startActivity(intent); finish(); } else if (threadId == RES_BAD_NUMBER) { Toast.makeText( getApplicationContext(), R.string.GroupCreateActivity_contacts_invalid_number, Toast.LENGTH_LONG) .show(); disableWhisperGroupProgressUi(); } else if (threadId == RES_MMS_EXCEPTION) { Toast.makeText( getApplicationContext(), R.string.GroupCreateActivity_contacts_mms_exception, Toast.LENGTH_LONG) .show(); finish(); } }
private void handleUntrustedIdentityMessage( MasterSecret masterSecret, TextSecureEnvelope envelope, Optional<Long> smsMessageId) { try { EncryptingSmsDatabase database = DatabaseFactory.getEncryptingSmsDatabase(context); Recipients recipients = RecipientFactory.getRecipientsFromString(context, envelope.getSource(), false); long recipientId = recipients.getPrimaryRecipient().getRecipientId(); PreKeyWhisperMessage whisperMessage = new PreKeyWhisperMessage(envelope.getMessage()); IdentityKey identityKey = whisperMessage.getIdentityKey(); String encoded = Base64.encodeBytes(envelope.getMessage()); IncomingTextMessage textMessage = new IncomingTextMessage( envelope.getSource(), envelope.getSourceDevice(), envelope.getTimestamp(), encoded, Optional.<TextSecureGroup>absent()); if (!smsMessageId.isPresent()) { IncomingPreKeyBundleMessage bundleMessage = new IncomingPreKeyBundleMessage(textMessage, encoded); Pair<Long, Long> messageAndThreadId = database.insertMessageInbox(masterSecret, bundleMessage); database.setMismatchedIdentity(messageAndThreadId.first, recipientId, identityKey); MessageNotifier.updateNotification(context, masterSecret, messageAndThreadId.second); } else { database.updateMessageBody(masterSecret, smsMessageId.get(), encoded); database.markAsPreKeyBundle(smsMessageId.get()); database.setMismatchedIdentity(smsMessageId.get(), recipientId, identityKey); } } catch (InvalidMessageException | InvalidVersionException e) { throw new AssertionError(e); } }
@Override protected Void doInBackground(Void... voids) { final GroupDatabase db = DatabaseFactory.getGroupDatabase(GroupCreateActivity.this); final Recipients recipients = db.getGroupMembers(groupId, false); if (recipients != null) { final List<Recipient> recipientList = recipients.getRecipientsList(); if (recipientList != null) { if (existingContacts == null) existingContacts = new HashSet<>(recipientList.size()); existingContacts.addAll(recipientList); } } GroupDatabase.GroupRecord group = db.getGroup(groupId); if (group != null) { existingTitle = group.getTitle(); final byte[] existingAvatar = group.getAvatar(); if (existingAvatar != null) { existingAvatarBmp = BitmapFactory.decodeByteArray(existingAvatar, 0, existingAvatar.length); } } return null; }