@Override
  public void onSend(MasterSecret masterSecret)
      throws RetryLaterException, MmsException, NoSuchMessageException,
          UndeliverableMessageException {
    MmsDatabase database = DatabaseFactory.getMmsDatabase(context);
    SendReq message = database.getOutgoingMessage(masterSecret, messageId);

    try {
      deliver(masterSecret, message);
      database.markAsPush(messageId);
      database.markAsSecure(messageId);
      database.markAsSent(messageId, "push".getBytes(), 0);
    } catch (InsecureFallbackApprovalException ifae) {
      Log.w(TAG, ifae);
      database.markAsPendingIndrizzlesmsFallback(messageId);
      notifyMediaMessageDeliveryFailed(context, messageId);
      ApplicationContext.getInstance(context).getJobManager().add(new DirectoryRefreshJob(context));
    } catch (UntrustedIdentityException uie) {
      Log.w(TAG, uie);
      Recipients recipients =
          RecipientFactory.getRecipientsFromString(context, uie.getE164Number(), false);
      long recipientId = recipients.getPrimaryRecipient().getRecipientId();

      database.addMismatchedIdentity(messageId, recipientId, uie.getIdentityKey());
      database.markAsSentFailed(messageId);
      database.markAsPush(messageId);
    }
  }
 @Override
 public void onAdded() {
   MmsDatabase mmsDatabase = DatabaseFactory.getMmsDatabase(context);
   mmsDatabase.markAsSending(messageId);
   mmsDatabase.markAsPush(messageId);
 }