|
|
@ -39,6 +39,8 @@ import org.thoughtcrime.securesms.jobs.PushGroupSendJob;
|
|
|
|
import org.thoughtcrime.securesms.jobs.PushMediaSendJob;
|
|
|
|
import org.thoughtcrime.securesms.jobs.PushMediaSendJob;
|
|
|
|
import org.thoughtcrime.securesms.jobs.PushTextSendJob;
|
|
|
|
import org.thoughtcrime.securesms.jobs.PushTextSendJob;
|
|
|
|
import org.thoughtcrime.securesms.jobs.SmsSendJob;
|
|
|
|
import org.thoughtcrime.securesms.jobs.SmsSendJob;
|
|
|
|
|
|
|
|
import org.thoughtcrime.securesms.linkpreview.LinkPreviewRepository;
|
|
|
|
|
|
|
|
import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil;
|
|
|
|
import org.thoughtcrime.securesms.logging.Log;
|
|
|
|
import org.thoughtcrime.securesms.logging.Log;
|
|
|
|
import org.thoughtcrime.securesms.mms.MmsException;
|
|
|
|
import org.thoughtcrime.securesms.mms.MmsException;
|
|
|
|
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
|
|
|
|
import org.thoughtcrime.securesms.mms.OutgoingMediaMessage;
|
|
|
@ -46,6 +48,7 @@ import org.thoughtcrime.securesms.push.AccountManagerFactory;
|
|
|
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
|
|
|
import org.thoughtcrime.securesms.recipients.Recipient;
|
|
|
|
import org.thoughtcrime.securesms.service.ExpiringMessageManager;
|
|
|
|
import org.thoughtcrime.securesms.service.ExpiringMessageManager;
|
|
|
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
|
|
|
import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
|
|
|
|
|
|
|
import org.thoughtcrime.securesms.util.Util;
|
|
|
|
import org.whispersystems.libsignal.util.guava.Optional;
|
|
|
|
import org.whispersystems.libsignal.util.guava.Optional;
|
|
|
|
import org.whispersystems.signalservice.api.SignalServiceAccountManager;
|
|
|
|
import org.whispersystems.signalservice.api.SignalServiceAccountManager;
|
|
|
|
import org.whispersystems.signalservice.api.push.ContactTokenDetails;
|
|
|
|
import org.whispersystems.signalservice.api.push.ContactTokenDetails;
|
|
|
@ -93,7 +96,6 @@ public class MessageSender {
|
|
|
|
final boolean forceSms,
|
|
|
|
final boolean forceSms,
|
|
|
|
final SmsDatabase.InsertListener insertListener)
|
|
|
|
final SmsDatabase.InsertListener insertListener)
|
|
|
|
{
|
|
|
|
{
|
|
|
|
try {
|
|
|
|
|
|
|
|
ThreadDatabase threadDatabase = DatabaseFactory.getThreadDatabase(context);
|
|
|
|
ThreadDatabase threadDatabase = DatabaseFactory.getThreadDatabase(context);
|
|
|
|
MmsDatabase database = DatabaseFactory.getMmsDatabase(context);
|
|
|
|
MmsDatabase database = DatabaseFactory.getMmsDatabase(context);
|
|
|
|
|
|
|
|
|
|
|
@ -106,15 +108,30 @@ public class MessageSender {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
Recipient recipient = message.getRecipient();
|
|
|
|
Recipient recipient = message.getRecipient();
|
|
|
|
long messageId = database.insertMessageOutbox(message, allocatedThreadId, forceSms, insertListener);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (message.getLinkPreviews().isEmpty() && message.getAttachments().isEmpty() && LinkPreviewUtil.isWhitelistedMediaUrl(message.getBody())) {
|
|
|
|
|
|
|
|
new LinkPreviewRepository(context).fetchGIF(context, message.getBody(), attachmentOrNull -> Util.runOnMain(() -> {
|
|
|
|
|
|
|
|
if (attachmentOrNull.isPresent()) {
|
|
|
|
|
|
|
|
Attachment attachment = attachmentOrNull.get();
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
message.getAttachments().add(attachment);
|
|
|
|
|
|
|
|
long messageId = database.insertMessageOutbox(message, allocatedThreadId, forceSms, insertListener);
|
|
|
|
|
|
|
|
sendMediaMessage(context, recipient, forceSms, messageId, message.getExpiresIn());
|
|
|
|
|
|
|
|
} catch (Exception e) {
|
|
|
|
|
|
|
|
// TODO: Handle
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
try {
|
|
|
|
|
|
|
|
long messageId = database.insertMessageOutbox(message, allocatedThreadId, forceSms, insertListener);
|
|
|
|
sendMediaMessage(context, recipient, forceSms, messageId, message.getExpiresIn());
|
|
|
|
sendMediaMessage(context, recipient, forceSms, messageId, message.getExpiresIn());
|
|
|
|
|
|
|
|
|
|
|
|
return allocatedThreadId;
|
|
|
|
|
|
|
|
} catch (MmsException e) {
|
|
|
|
} catch (MmsException e) {
|
|
|
|
Log.w(TAG, e);
|
|
|
|
// TODO: Handle
|
|
|
|
return threadId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
}));
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
return allocatedThreadId;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
public static void resendGroupMessage(Context context, MessageRecord messageRecord, Address filterAddress) {
|
|
|
|
public static void resendGroupMessage(Context context, MessageRecord messageRecord, Address filterAddress) {
|
|
|
|