Send friend request accept message back to the user.

This commit is contained in:
Mikunj 2019-06-06 10:39:24 +10:00
parent 858b34306b
commit 75a8123d1e
2 changed files with 25 additions and 3 deletions

View File

@ -5,6 +5,7 @@ import android.content.Context;
import org.thoughtcrime.securesms.gcm.FcmService; import org.thoughtcrime.securesms.gcm.FcmService;
import org.thoughtcrime.securesms.jobs.AttachmentUploadJob; import org.thoughtcrime.securesms.jobs.AttachmentUploadJob;
import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob; import org.thoughtcrime.securesms.jobs.MultiDeviceConfigurationUpdateJob;
import org.thoughtcrime.securesms.jobs.PushDecryptJob;
import org.thoughtcrime.securesms.jobs.RefreshUnidentifiedDeliveryAbilityJob; import org.thoughtcrime.securesms.jobs.RefreshUnidentifiedDeliveryAbilityJob;
import org.thoughtcrime.securesms.jobs.RotateProfileKeyJob; import org.thoughtcrime.securesms.jobs.RotateProfileKeyJob;
import org.thoughtcrime.securesms.jobs.TypingSendJob; import org.thoughtcrime.securesms.jobs.TypingSendJob;
@ -96,7 +97,8 @@ import dagger.Provides;
MultiDeviceConfigurationUpdateJob.class, MultiDeviceConfigurationUpdateJob.class,
RefreshUnidentifiedDeliveryAbilityJob.class, RefreshUnidentifiedDeliveryAbilityJob.class,
TypingSendJob.class, TypingSendJob.class,
AttachmentUploadJob.class}) AttachmentUploadJob.class,
PushDecryptJob.class})
public class SignalCommunicationModule { public class SignalCommunicationModule {
private static final String TAG = SignalCommunicationModule.class.getSimpleName(); private static final String TAG = SignalCommunicationModule.class.getSimpleName();

View File

@ -54,6 +54,7 @@ import org.thoughtcrime.securesms.database.SmsDatabase;
import org.thoughtcrime.securesms.database.ThreadDatabase; import org.thoughtcrime.securesms.database.ThreadDatabase;
import org.thoughtcrime.securesms.database.model.MessageRecord; import org.thoughtcrime.securesms.database.model.MessageRecord;
import org.thoughtcrime.securesms.database.model.MmsMessageRecord; import org.thoughtcrime.securesms.database.model.MmsMessageRecord;
import org.thoughtcrime.securesms.dependencies.InjectableType;
import org.thoughtcrime.securesms.groups.GroupMessageProcessor; import org.thoughtcrime.securesms.groups.GroupMessageProcessor;
import org.thoughtcrime.securesms.jobmanager.Data; import org.thoughtcrime.securesms.jobmanager.Data;
import org.thoughtcrime.securesms.jobmanager.Job; import org.thoughtcrime.securesms.jobmanager.Job;
@ -86,6 +87,8 @@ import org.whispersystems.libsignal.state.PreKeyBundle;
import org.whispersystems.libsignal.state.SessionStore; import org.whispersystems.libsignal.state.SessionStore;
import org.whispersystems.libsignal.state.SignalProtocolStore; import org.whispersystems.libsignal.state.SignalProtocolStore;
import org.whispersystems.libsignal.util.guava.Optional; import org.whispersystems.libsignal.util.guava.Optional;
import org.whispersystems.signalservice.api.SignalServiceMessageSender;
import org.whispersystems.signalservice.api.crypto.UnidentifiedAccessPair;
import org.whispersystems.signalservice.api.messages.SignalServiceContent; import org.whispersystems.signalservice.api.messages.SignalServiceContent;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage;
import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage.Preview; import org.whispersystems.signalservice.api.messages.SignalServiceDataMessage.Preview;
@ -115,7 +118,9 @@ import java.util.Collections;
import java.util.LinkedList; import java.util.LinkedList;
import java.util.List; import java.util.List;
public class PushDecryptJob extends BaseJob { import javax.inject.Inject;
public class PushDecryptJob extends BaseJob implements InjectableType {
public static final String KEY = "PushDecryptJob"; public static final String KEY = "PushDecryptJob";
@ -127,6 +132,8 @@ public class PushDecryptJob extends BaseJob {
private long messageId; private long messageId;
private long smsMessageId; private long smsMessageId;
@Inject SignalServiceMessageSender messageSender;
public PushDecryptJob(Context context) { public PushDecryptJob(Context context) {
this(context, -1); this(context, -1);
} }
@ -834,7 +841,8 @@ public class PushDecryptJob extends BaseJob {
// we can end up in a deadlock where both users' threads' friend request statuses are // we can end up in a deadlock where both users' threads' friend request statuses are
// `REQUEST_SENT`. // `REQUEST_SENT`.
database.setFriendRequestStatus(threadId, ThreadDatabase.LokiFriendRequestStatus.FRIENDS); database.setFriendRequestStatus(threadId, ThreadDatabase.LokiFriendRequestStatus.FRIENDS);
// TODO: Send empty message here // Accept the friend request
sendEmptyMessageTo(envelope.getSource());
} else if (friendRequestStatus != ThreadDatabase.LokiFriendRequestStatus.FRIENDS) { } else if (friendRequestStatus != ThreadDatabase.LokiFriendRequestStatus.FRIENDS) {
// Checking that the sender of the message isn't already a friend is necessary because otherwise // Checking that the sender of the message isn't already a friend is necessary because otherwise
// the following situation can occur: Alice and Bob are friends. Bob loses his database and his // the following situation can occur: Alice and Bob are friends. Bob loses his database and his
@ -851,6 +859,18 @@ public class PushDecryptJob extends BaseJob {
} }
} }
private void sendEmptyMessageTo(String pubKey) {
try {
SignalServiceAddress address = new SignalServiceAddress(pubKey);
SignalServiceDataMessage message = new SignalServiceDataMessage(System.currentTimeMillis(), "");
Optional<UnidentifiedAccessPair> access = Optional.absent();
messageSender.sendMessage(address, access, message);
} catch (Exception e) {
Log.w(TAG, "Failed to send empty message to " + pubKey);
}
}
private long handleSynchronizeSentTextMessage(@NonNull SentTranscriptMessage message) private long handleSynchronizeSentTextMessage(@NonNull SentTranscriptMessage message)
throws MmsException throws MmsException
{ {