mirror of
https://github.com/oxen-io/session-android.git
synced 2025-02-17 12:28:24 +00:00
Refactor & temporarily disable problematic code
This commit is contained in:
parent
40200fe5e1
commit
5cb98d8fc3
@ -40,7 +40,7 @@ public class CleanPreKeysJob extends BaseJob implements InjectableType {
|
||||
public CleanPreKeysJob() {
|
||||
this(new Job.Parameters.Builder()
|
||||
.setQueue("CleanPreKeysJob")
|
||||
.setMaxAttempts(5)
|
||||
.setMaxAttempts(3)
|
||||
.build());
|
||||
}
|
||||
|
||||
|
@ -3,11 +3,6 @@ package org.thoughtcrime.securesms.jobs;
|
||||
import android.content.Context;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.text.TextUtils;
|
||||
|
||||
import org.thoughtcrime.securesms.jobmanager.Data;
|
||||
import org.thoughtcrime.securesms.jobmanager.Job;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
import android.webkit.MimeTypeMap;
|
||||
|
||||
import com.android.mms.dom.smil.parser.SmilXmlSerializer;
|
||||
@ -30,6 +25,10 @@ import org.thoughtcrime.securesms.database.DatabaseFactory;
|
||||
import org.thoughtcrime.securesms.database.MmsDatabase;
|
||||
import org.thoughtcrime.securesms.database.NoSuchMessageException;
|
||||
import org.thoughtcrime.securesms.database.ThreadDatabase;
|
||||
import org.thoughtcrime.securesms.jobmanager.Data;
|
||||
import org.thoughtcrime.securesms.jobmanager.Job;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
import org.thoughtcrime.securesms.mms.CompatMmsConnection;
|
||||
import org.thoughtcrime.securesms.mms.MediaConstraints;
|
||||
import org.thoughtcrime.securesms.mms.MmsException;
|
||||
@ -64,7 +63,7 @@ public class MmsSendJob extends SendJob {
|
||||
this(new Job.Parameters.Builder()
|
||||
.setQueue("mms-operation")
|
||||
.addConstraint(NetworkConstraint.KEY)
|
||||
.setMaxAttempts(15)
|
||||
.setMaxAttempts(25)
|
||||
.build(),
|
||||
messageId);
|
||||
}
|
||||
|
@ -943,13 +943,13 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
|
||||
} else {
|
||||
notifyTypingStoppedFromIncomingMessage(masterRecipient, content.getSender(), content.getSenderDevice());
|
||||
|
||||
Address sender = masterRecipient.getAddress();
|
||||
Address masterAddress = masterRecipient.getAddress();
|
||||
|
||||
if (message.isGroupMessage()) {
|
||||
sender = getMessageMasterDestination(content.getSender()).getAddress();
|
||||
masterAddress = getMessageMasterDestination(content.getSender()).getAddress();
|
||||
}
|
||||
|
||||
IncomingTextMessage tm = new IncomingTextMessage(sender,
|
||||
IncomingTextMessage tm = new IncomingTextMessage(masterAddress,
|
||||
content.getSenderDevice(),
|
||||
message.getTimestamp(), body,
|
||||
message.getGroupInfo(),
|
||||
@ -1180,16 +1180,17 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
|
||||
@NonNull SignalServiceReceiptMessage message)
|
||||
{
|
||||
// Redirect message to master device conversation
|
||||
Address sender = Address.fromSerialized(content.getSender());
|
||||
if (sender.isPhone()) {
|
||||
Recipient masterDevice = getMessageMasterDestination(content.getSender());
|
||||
sender = masterDevice.getAddress();
|
||||
Address masterAddress = Address.fromSerialized(content.getSender());
|
||||
|
||||
if (masterAddress.isPhone()) {
|
||||
Recipient masterRecipient = getMessageMasterDestination(content.getSender());
|
||||
masterAddress = masterRecipient.getAddress();
|
||||
}
|
||||
|
||||
for (long timestamp : message.getTimestamps()) {
|
||||
Log.i(TAG, String.format("Received encrypted delivery receipt: (XXXXX, %d)", timestamp));
|
||||
DatabaseFactory.getMmsSmsDatabase(context)
|
||||
.incrementDeliveryReceiptCount(new SyncMessageId(sender, timestamp), System.currentTimeMillis());
|
||||
.incrementDeliveryReceiptCount(new SyncMessageId(masterAddress, timestamp), System.currentTimeMillis());
|
||||
}
|
||||
}
|
||||
|
||||
@ -1200,17 +1201,18 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
|
||||
if (TextSecurePreferences.isReadReceiptsEnabled(context)) {
|
||||
|
||||
// Redirect message to master device conversation
|
||||
Address sender = Address.fromSerialized(content.getSender());
|
||||
if (sender.isPhone()) {
|
||||
Recipient masterDevice = getMessageMasterDestination(content.getSender());
|
||||
sender = masterDevice.getAddress();
|
||||
Address masterAddress = Address.fromSerialized(content.getSender());
|
||||
|
||||
if (masterAddress.isPhone()) {
|
||||
Recipient masterRecipient = getMessageMasterDestination(content.getSender());
|
||||
masterAddress = masterRecipient.getAddress();
|
||||
}
|
||||
|
||||
for (long timestamp : message.getTimestamps()) {
|
||||
Log.i(TAG, String.format("Received encrypted read receipt: (XXXXX, %d)", timestamp));
|
||||
|
||||
DatabaseFactory.getMmsSmsDatabase(context)
|
||||
.incrementReadReceiptCount(new SyncMessageId(sender, timestamp), content.getTimestamp());
|
||||
.incrementReadReceiptCount(new SyncMessageId(masterAddress, timestamp), content.getTimestamp());
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1368,11 +1370,11 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
|
||||
}
|
||||
|
||||
private Optional<InsertResult> insertPlaceholder(@NonNull String sender, int senderDevice, long timestamp) {
|
||||
Recipient masterDevice = getMessageMasterDestination(sender);
|
||||
SmsDatabase database = DatabaseFactory.getSmsDatabase(context);
|
||||
IncomingTextMessage textMessage = new IncomingTextMessage(masterDevice.getAddress(),
|
||||
senderDevice, timestamp, "",
|
||||
Optional.absent(), 0, false);
|
||||
Recipient masterRecipient = getMessageMasterDestination(sender);
|
||||
SmsDatabase database = DatabaseFactory.getSmsDatabase(context);
|
||||
IncomingTextMessage textMessage = new IncomingTextMessage(masterRecipient.getAddress(),
|
||||
senderDevice, timestamp, "",
|
||||
Optional.absent(), 0, false);
|
||||
|
||||
textMessage = new IncomingEncryptedMessage(textMessage, "");
|
||||
return database.insertMessageInbox(textMessage);
|
||||
@ -1448,6 +1450,10 @@ public class PushDecryptJob extends BaseJob implements InjectableType {
|
||||
return true;
|
||||
}
|
||||
|
||||
if (SessionMetaProtocol.shouldIgnoreMessage(content)) {
|
||||
return true;
|
||||
}
|
||||
|
||||
Recipient sender = Recipient.from(context, Address.fromSerialized(content.getSender()), false);
|
||||
|
||||
if (content.getDeviceLink().isPresent()) {
|
||||
|
@ -9,8 +9,6 @@ import android.text.TextUtils;
|
||||
import com.annimon.stream.Stream;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import org.signal.libsignal.metadata.certificate.InvalidCertificateException;
|
||||
import org.signal.libsignal.metadata.certificate.SenderCertificate;
|
||||
import org.thoughtcrime.securesms.ApplicationContext;
|
||||
import org.thoughtcrime.securesms.TextSecureExpiredException;
|
||||
import org.thoughtcrime.securesms.attachments.Attachment;
|
||||
@ -68,7 +66,7 @@ public abstract class PushSendJob extends SendJob {
|
||||
.setQueue(destination.serialize())
|
||||
.addConstraint(NetworkConstraint.KEY)
|
||||
.setLifespan(TimeUnit.DAYS.toMillis(1))
|
||||
.setMaxAttempts(3)
|
||||
.setMaxAttempts(1)
|
||||
.build();
|
||||
}
|
||||
|
||||
|
@ -29,7 +29,7 @@ public class RefreshPreKeysJob extends BaseJob implements InjectableType {
|
||||
this(new Job.Parameters.Builder()
|
||||
.setQueue("RefreshPreKeysJob")
|
||||
.addConstraint(NetworkConstraint.KEY)
|
||||
.setMaxAttempts(5)
|
||||
.setMaxAttempts(3)
|
||||
.build());
|
||||
}
|
||||
|
||||
|
@ -49,7 +49,7 @@ public class RetrieveProfileAvatarJob extends BaseJob implements InjectableType
|
||||
.setQueue("RetrieveProfileAvatarJob" + recipient.getAddress().serialize())
|
||||
.addConstraint(NetworkConstraint.KEY)
|
||||
.setLifespan(TimeUnit.HOURS.toMillis(1))
|
||||
.setMaxAttempts(2)
|
||||
.setMaxAttempts(3)
|
||||
.build(),
|
||||
recipient,
|
||||
profileAvatar);
|
||||
|
@ -30,7 +30,7 @@ public class RotateSignedPreKeyJob extends BaseJob implements InjectableType {
|
||||
public RotateSignedPreKeyJob() {
|
||||
this(new Job.Parameters.Builder()
|
||||
.addConstraint(NetworkConstraint.KEY)
|
||||
.setMaxAttempts(5)
|
||||
.setMaxAttempts(3)
|
||||
.build());
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,6 @@ package org.thoughtcrime.securesms.jobs;
|
||||
import android.support.annotation.NonNull;
|
||||
|
||||
import org.greenrobot.eventbus.EventBus;
|
||||
import network.loki.messenger.BuildConfig;
|
||||
import org.thoughtcrime.securesms.events.ReminderUpdateEvent;
|
||||
import org.thoughtcrime.securesms.jobmanager.Data;
|
||||
import org.thoughtcrime.securesms.jobmanager.Job;
|
||||
@ -15,6 +14,8 @@ import org.thoughtcrime.securesms.util.TextSecurePreferences;
|
||||
import java.net.InetAddress;
|
||||
import java.net.UnknownHostException;
|
||||
|
||||
import network.loki.messenger.BuildConfig;
|
||||
|
||||
public class ServiceOutageDetectionJob extends BaseJob {
|
||||
|
||||
public static final String KEY = "ServiceOutageDetectionJob";
|
||||
@ -29,7 +30,7 @@ public class ServiceOutageDetectionJob extends BaseJob {
|
||||
this(new Job.Parameters.Builder()
|
||||
.setQueue("ServiceOutageDetectionJob")
|
||||
.addConstraint(NetworkConstraint.KEY)
|
||||
.setMaxAttempts(5)
|
||||
.setMaxAttempts(3)
|
||||
.setMaxInstances(1)
|
||||
.build());
|
||||
}
|
||||
|
@ -32,7 +32,7 @@ public class SmsSendJob extends SendJob {
|
||||
public static final String KEY = "SmsSendJob";
|
||||
|
||||
private static final String TAG = SmsSendJob.class.getSimpleName();
|
||||
private static final int MAX_ATTEMPTS = 15;
|
||||
private static final int MAX_ATTEMPTS = 25;
|
||||
private static final String KEY_MESSAGE_ID = "message_id";
|
||||
private static final String KEY_RUN_ATTEMPT = "run_attempt";
|
||||
|
||||
|
@ -11,14 +11,12 @@ import android.net.Uri;
|
||||
import android.support.annotation.NonNull;
|
||||
import android.support.annotation.Nullable;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import org.thoughtcrime.securesms.jobmanager.Data;
|
||||
import org.thoughtcrime.securesms.jobmanager.Job;
|
||||
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint;
|
||||
import org.thoughtcrime.securesms.logging.Log;
|
||||
|
||||
import com.fasterxml.jackson.annotation.JsonProperty;
|
||||
|
||||
import network.loki.messenger.BuildConfig;
|
||||
import org.thoughtcrime.securesms.service.UpdateApkReadyListener;
|
||||
import org.thoughtcrime.securesms.util.FileUtils;
|
||||
import org.thoughtcrime.securesms.util.Hex;
|
||||
@ -29,6 +27,7 @@ import java.io.FileInputStream;
|
||||
import java.io.IOException;
|
||||
import java.security.MessageDigest;
|
||||
|
||||
import network.loki.messenger.BuildConfig;
|
||||
import okhttp3.OkHttpClient;
|
||||
import okhttp3.Request;
|
||||
import okhttp3.Response;
|
||||
@ -43,7 +42,7 @@ public class UpdateApkJob extends BaseJob {
|
||||
this(new Job.Parameters.Builder()
|
||||
.setQueue("UpdateApkJob")
|
||||
.addConstraint(NetworkConstraint.KEY)
|
||||
.setMaxAttempts(2)
|
||||
.setMaxAttempts(3)
|
||||
.build());
|
||||
}
|
||||
|
||||
|
@ -165,7 +165,7 @@ class LokiPublicChatPoller(private val context: Context, private val group: Loki
|
||||
}
|
||||
val senderHexEncodedPublicKey = masterHexEncodedPublicKey ?: message.hexEncodedPublicKey
|
||||
val serviceDataMessage = getDataMessage(message)
|
||||
val serviceContent = SignalServiceContent(serviceDataMessage, senderHexEncodedPublicKey, SignalServiceAddress.DEFAULT_DEVICE_ID, message.timestamp, false, false)
|
||||
val serviceContent = SignalServiceContent(serviceDataMessage, senderHexEncodedPublicKey, SignalServiceAddress.DEFAULT_DEVICE_ID, message.timestamp, false, false, false, false, false)
|
||||
if (serviceDataMessage.quote.isPresent || (serviceDataMessage.attachments.isPresent && serviceDataMessage.attachments.get().size > 0) || serviceDataMessage.previews.isPresent) {
|
||||
PushDecryptJob(context).handleMediaMessage(serviceContent, serviceDataMessage, Optional.absent(), Optional.of(message.serverID))
|
||||
} else {
|
||||
|
@ -28,10 +28,10 @@ object FriendRequestProtocol {
|
||||
val allUserDevices = MultiDeviceProtocol.shared.getAllLinkedDevices(userPublicKey)
|
||||
// Accept all outstanding friend requests associated with this user and try to establish sessions with the
|
||||
// subset of their devices that haven't sent a friend request.
|
||||
val linkedDevices = MultiDeviceProtocol.shared.getAllLinkedDevices(recipient.address.serialize())
|
||||
val allContactDevices = MultiDeviceProtocol.shared.getAllLinkedDevices(recipient.address.serialize())
|
||||
val threadDB = DatabaseFactory.getThreadDatabase(context)
|
||||
val lokiThreadDB = DatabaseFactory.getLokiThreadDatabase(context)
|
||||
for (device in linkedDevices) {
|
||||
for (device in allContactDevices) {
|
||||
val deviceAsRecipient = recipient(context, device)
|
||||
val deviceThreadID = threadDB.getThreadIdFor(deviceAsRecipient)
|
||||
val deviceFRStatus = lokiThreadDB.getFriendRequestStatus(deviceThreadID)
|
||||
|
@ -2,6 +2,7 @@ package org.thoughtcrime.securesms.loki.protocol
|
||||
|
||||
import android.content.Context
|
||||
import android.util.Log
|
||||
import network.loki.messenger.BuildConfig
|
||||
import nl.komponents.kovenant.Promise
|
||||
import org.thoughtcrime.securesms.ApplicationContext
|
||||
import org.thoughtcrime.securesms.crypto.IdentityKeyUtil
|
||||
@ -54,6 +55,7 @@ object MultiDeviceProtocol {
|
||||
outgoingMediaMessage.body.isNotBlank() || outgoingMediaMessage.attachments.isNotEmpty()
|
||||
}
|
||||
}
|
||||
if (isFRMessage && !hasVisibleContent && BuildConfig.DEBUG) { throw IllegalStateException() }
|
||||
val shouldSendAutoGeneratedFR = !isContactFriend && !isFRMessage
|
||||
&& !SessionMetaProtocol.shared.isNoteToSelf(recipient.address.serialize()) && !recipient.address.isGroup // Group threads work through session requests
|
||||
&& hasVisibleContent
|
||||
|
@ -12,6 +12,14 @@ import org.whispersystems.signalservice.loki.protocol.todo.LokiThreadFriendReque
|
||||
|
||||
object SessionMetaProtocol {
|
||||
|
||||
private val timestamps = mutableSetOf<Long>()
|
||||
|
||||
@JvmStatic
|
||||
fun shouldIgnoreMessage(content: SignalServiceContent): Boolean {
|
||||
val timestamp = content.timestamp
|
||||
return timestamps.contains(timestamp)
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun handleProfileUpdateIfNeeded(context: Context, content: SignalServiceContent) {
|
||||
val rawDisplayName = content.senderDisplayName.orNull() ?: return
|
||||
|
@ -66,7 +66,7 @@ class LokiRSSFeedPoller(private val context: Context, private val feed: LokiRSSF
|
||||
val id = feed.id.toByteArray()
|
||||
val x1 = SignalServiceGroup(SignalServiceGroup.Type.UPDATE, id, SignalServiceGroup.GroupType.RSS_FEED, null, null, null, null)
|
||||
val x2 = SignalServiceDataMessage(timestamp, x1, null, body)
|
||||
val x3 = SignalServiceContent(x2, "Loki", SignalServiceAddress.DEFAULT_DEVICE_ID, timestamp, false, false)
|
||||
val x3 = SignalServiceContent(x2, "Loki", SignalServiceAddress.DEFAULT_DEVICE_ID, timestamp, false, false, false, false, false)
|
||||
PushDecryptJob(context).handleTextMessage(x3, x2, Optional.absent(), Optional.absent())
|
||||
}
|
||||
}.fail { exception ->
|
||||
|
Loading…
x
Reference in New Issue
Block a user