Drop V2 suffix from MCPv2 classes.

This commit is contained in:
Cody Henthorne
2023-08-16 14:46:55 -04:00
committed by Clark Chen
parent 18f9c6b1f0
commit f566e10710
25 changed files with 84 additions and 86 deletions

View File

@@ -46,13 +46,13 @@ class EditMessageSyncProcessorTest {
@get:Rule @get:Rule
val harness = SignalActivityRule() val harness = SignalActivityRule()
private lateinit var processorV2: MessageContentProcessorV2 private lateinit var processorV2: MessageContentProcessor
private lateinit var testResult: TestResults private lateinit var testResult: TestResults
private var envelopeTimestamp: Long = 0 private var envelopeTimestamp: Long = 0
@Before @Before
fun setup() { fun setup() {
processorV2 = MessageContentProcessorV2(harness.context) processorV2 = MessageContentProcessor(harness.context)
envelopeTimestamp = System.currentTimeMillis() envelopeTimestamp = System.currentTimeMillis()
testResult = TestResults() testResult = TestResults()
} }

View File

@@ -20,17 +20,17 @@ import org.whispersystems.signalservice.internal.push.SignalServiceProtos.GroupC
@Suppress("ClassName") @Suppress("ClassName")
@RunWith(AndroidJUnit4::class) @RunWith(AndroidJUnit4::class)
class MessageContentProcessorV2__recipientStatusTest { class MessageContentProcessor__recipientStatusTest {
@get:Rule @get:Rule
val harness = SignalActivityRule() val harness = SignalActivityRule()
private lateinit var processorV2: MessageContentProcessorV2 private lateinit var processor: MessageContentProcessor
private var envelopeTimestamp: Long = 0 private var envelopeTimestamp: Long = 0
@Before @Before
fun setup() { fun setup() {
processorV2 = MessageContentProcessorV2(harness.context) processor = MessageContentProcessor(harness.context)
envelopeTimestamp = System.currentTimeMillis() envelopeTimestamp = System.currentTimeMillis()
} }
@@ -49,7 +49,7 @@ class MessageContentProcessorV2__recipientStatusTest {
timestamp = envelopeTimestamp timestamp = envelopeTimestamp
} }
processorV2.process( processor.process(
envelope = MessageContentFuzzer.envelope(envelopeTimestamp), envelope = MessageContentFuzzer.envelope(envelopeTimestamp),
content = MessageContentFuzzer.syncSentTextMessage(initialTextMessage, deliveredTo = listOf(harness.others[0])), content = MessageContentFuzzer.syncSentTextMessage(initialTextMessage, deliveredTo = listOf(harness.others[0])),
metadata = MessageContentFuzzer.envelopeMetadata(harness.self.id, harness.self.id, groupId), metadata = MessageContentFuzzer.envelopeMetadata(harness.self.id, harness.self.id, groupId),
@@ -61,7 +61,7 @@ class MessageContentProcessorV2__recipientStatusTest {
val firstMessageId = firstSyncMessages[0].id val firstMessageId = firstSyncMessages[0].id
val firstReceiptInfo = SignalDatabase.groupReceipts.getGroupReceiptInfo(firstMessageId) val firstReceiptInfo = SignalDatabase.groupReceipts.getGroupReceiptInfo(firstMessageId)
processorV2.process( processor.process(
envelope = MessageContentFuzzer.envelope(envelopeTimestamp), envelope = MessageContentFuzzer.envelope(envelopeTimestamp),
content = MessageContentFuzzer.syncSentTextMessage(initialTextMessage, deliveredTo = listOf(harness.others[0], harness.others[1]), recipientUpdate = true), content = MessageContentFuzzer.syncSentTextMessage(initialTextMessage, deliveredTo = listOf(harness.others[0], harness.others[1]), recipientUpdate = true),
metadata = MessageContentFuzzer.envelopeMetadata(harness.self.id, harness.self.id, groupId), metadata = MessageContentFuzzer.envelopeMetadata(harness.self.id, harness.self.id, groupId),

View File

@@ -59,14 +59,14 @@ class MessageProcessingPerformanceTest {
mockkStatic(UnidentifiedAccessUtil::class) mockkStatic(UnidentifiedAccessUtil::class)
every { UnidentifiedAccessUtil.getCertificateValidator() } returns FakeClientHelpers.noOpCertificateValidator every { UnidentifiedAccessUtil.getCertificateValidator() } returns FakeClientHelpers.noOpCertificateValidator
mockkObject(MessageContentProcessorV2) mockkObject(MessageContentProcessor)
every { MessageContentProcessorV2.create(harness.application) } returns TimingMessageContentProcessorV2(harness.application) every { MessageContentProcessor.create(harness.application) } returns TimingMessageContentProcessor(harness.application)
} }
@After @After
fun after() { fun after() {
unmockkStatic(UnidentifiedAccessUtil::class) unmockkStatic(UnidentifiedAccessUtil::class)
unmockkStatic(MessageContentProcessorV2::class) unmockkStatic(MessageContentProcessor::class)
} }
@Test @Test
@@ -107,7 +107,7 @@ class MessageProcessingPerformanceTest {
// Wait until they've all been fully decrypted + processed // Wait until they've all been fully decrypted + processed
harness harness
.inMemoryLogger .inMemoryLogger
.getLockForUntil(TimingMessageContentProcessorV2.endTagPredicate(lastTimestamp)) .getLockForUntil(TimingMessageContentProcessor.endTagPredicate(lastTimestamp))
.awaitFor(1.minutes) .awaitFor(1.minutes)
harness.inMemoryLogger.flush() harness.inMemoryLogger.flush()
@@ -126,7 +126,7 @@ class MessageProcessingPerformanceTest {
// Calculate MessageContentProcessor // Calculate MessageContentProcessor
val takeLast: List<Entry> = entries.filter { it.tag == TimingMessageContentProcessorV2.TAG }.drop(2) val takeLast: List<Entry> = entries.filter { it.tag == TimingMessageContentProcessor.TAG }.drop(2)
val iterator = takeLast.iterator() val iterator = takeLast.iterator()
var processCount = 0L var processCount = 0L
var processDuration = 0L var processDuration = 0L
@@ -142,7 +142,7 @@ class MessageProcessingPerformanceTest {
// Calculate messages per second from "retrieving" first message post session initialization to processing last message // Calculate messages per second from "retrieving" first message post session initialization to processing last message
val start = entries.first { it.message == "Retrieved envelope! $firstTimestamp" } val start = entries.first { it.message == "Retrieved envelope! $firstTimestamp" }
val end = entries.first { it.message == TimingMessageContentProcessorV2.endTag(lastTimestamp) } val end = entries.first { it.message == TimingMessageContentProcessor.endTag(lastTimestamp) }
val duration = (end.timestamp - start.timestamp).toFloat() / 1000f val duration = (end.timestamp - start.timestamp).toFloat() / 1000f
val messagePerSecond = messageCount.toFloat() / duration val messagePerSecond = messageCount.toFloat() / duration
@@ -157,7 +157,7 @@ class MessageProcessingPerformanceTest {
val aliceProcessFirstMessageLatch = harness val aliceProcessFirstMessageLatch = harness
.inMemoryLogger .inMemoryLogger
.getLockForUntil(TimingMessageContentProcessorV2.endTagPredicate(firstPreKeyMessageTimestamp)) .getLockForUntil(TimingMessageContentProcessor.endTagPredicate(firstPreKeyMessageTimestamp))
Thread { aliceClient.process(encryptedEnvelope, System.currentTimeMillis()) }.start() Thread { aliceClient.process(encryptedEnvelope, System.currentTimeMillis()) }.start()
aliceProcessFirstMessageLatch.awaitFor(15.seconds) aliceProcessFirstMessageLatch.awaitFor(15.seconds)

View File

@@ -7,9 +7,9 @@ import org.thoughtcrime.securesms.util.SignalLocalMetrics
import org.whispersystems.signalservice.api.crypto.EnvelopeMetadata import org.whispersystems.signalservice.api.crypto.EnvelopeMetadata
import org.whispersystems.signalservice.internal.push.SignalServiceProtos import org.whispersystems.signalservice.internal.push.SignalServiceProtos
class TimingMessageContentProcessorV2(context: Context) : MessageContentProcessorV2(context) { class TimingMessageContentProcessor(context: Context) : MessageContentProcessor(context) {
companion object { companion object {
val TAG = Log.tag(TimingMessageContentProcessorV2::class.java) val TAG = Log.tag(TimingMessageContentProcessor::class.java)
fun endTagPredicate(timestamp: Long): LogPredicate = { entry -> fun endTagPredicate(timestamp: Long): LogPredicate = { entry ->
entry.tag == TAG && entry.message == endTag(timestamp) entry.tag == TAG && entry.message == endTag(timestamp)

View File

@@ -40,7 +40,7 @@ import org.thoughtcrime.securesms.jobs.JobManagerFactories;
import org.thoughtcrime.securesms.jobs.MarkerJob; import org.thoughtcrime.securesms.jobs.MarkerJob;
import org.thoughtcrime.securesms.jobs.PreKeysSyncJob; import org.thoughtcrime.securesms.jobs.PreKeysSyncJob;
import org.thoughtcrime.securesms.jobs.PushGroupSendJob; import org.thoughtcrime.securesms.jobs.PushGroupSendJob;
import org.thoughtcrime.securesms.jobs.PushProcessMessageJobV2; import org.thoughtcrime.securesms.jobs.PushProcessMessageJob;
import org.thoughtcrime.securesms.jobs.ReactionSendJob; import org.thoughtcrime.securesms.jobs.ReactionSendJob;
import org.thoughtcrime.securesms.jobs.TypingSendJob; import org.thoughtcrime.securesms.jobs.TypingSendJob;
import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.keyvalue.SignalStore;
@@ -170,7 +170,7 @@ public class ApplicationDependencyProvider implements ApplicationDependencies.Pr
.setConstraintObservers(JobManagerFactories.getConstraintObservers(context)) .setConstraintObservers(JobManagerFactories.getConstraintObservers(context))
.setJobStorage(new FastJobStorage(JobDatabase.getInstance(context))) .setJobStorage(new FastJobStorage(JobDatabase.getInstance(context)))
.setJobMigrator(new JobMigrator(TextSecurePreferences.getJobManagerVersion(context), JobManager.CURRENT_VERSION, JobManagerFactories.getJobMigrations(context))) .setJobMigrator(new JobMigrator(TextSecurePreferences.getJobManagerVersion(context), JobManager.CURRENT_VERSION, JobManagerFactories.getJobMigrations(context)))
.addReservedJobRunner(new FactoryJobPredicate(PushProcessMessageJobV2.KEY, MarkerJob.KEY)) .addReservedJobRunner(new FactoryJobPredicate(PushProcessMessageJob.KEY, MarkerJob.KEY))
.addReservedJobRunner(new FactoryJobPredicate(IndividualSendJob.KEY, PushGroupSendJob.KEY, ReactionSendJob.KEY, TypingSendJob.KEY, GroupCallUpdateSendJob.KEY)) .addReservedJobRunner(new FactoryJobPredicate(IndividualSendJob.KEY, PushGroupSendJob.KEY, ReactionSendJob.KEY, TypingSendJob.KEY, GroupCallUpdateSendJob.KEY))
.build(); .build();
return new JobManager(context, config); return new JobManager(context, config);

View File

@@ -5,7 +5,7 @@ import org.signal.core.util.logging.Log
import org.thoughtcrime.securesms.jobmanager.JobMigration import org.thoughtcrime.securesms.jobmanager.JobMigration
import org.thoughtcrime.securesms.jobmanager.JsonJobData import org.thoughtcrime.securesms.jobmanager.JsonJobData
import org.thoughtcrime.securesms.jobs.FailingJob import org.thoughtcrime.securesms.jobs.FailingJob
import org.thoughtcrime.securesms.jobs.PushProcessMessageErrorV2Job import org.thoughtcrime.securesms.jobs.PushProcessMessageErrorJob
import org.thoughtcrime.securesms.messages.MessageState import org.thoughtcrime.securesms.messages.MessageState
import org.thoughtcrime.securesms.util.Base64 import org.thoughtcrime.securesms.util.Base64
import org.whispersystems.signalservice.api.crypto.protos.CompleteMessage import org.whispersystems.signalservice.api.crypto.protos.CompleteMessage
@@ -48,7 +48,7 @@ class PushProcessMessageJobMigration : JobMigration(10) {
else -> { else -> {
Log.i(TAG, "Migrating push process error job for state: $state") Log.i(TAG, "Migrating push process error job for state: $state")
jobData.withFactoryKey(PushProcessMessageErrorV2Job.KEY) jobData.withFactoryKey(PushProcessMessageErrorJob.KEY)
} }
} }
} else { } else {

View File

@@ -50,7 +50,7 @@ public class AutomaticSessionResetJob extends BaseJob {
public AutomaticSessionResetJob(@NonNull RecipientId recipientId, int deviceId, long sentTimestamp) { public AutomaticSessionResetJob(@NonNull RecipientId recipientId, int deviceId, long sentTimestamp) {
this(new Parameters.Builder() this(new Parameters.Builder()
.setQueue(PushProcessMessageJobV2.getQueueName(recipientId)) .setQueue(PushProcessMessageJob.getQueueName(recipientId))
.addConstraint(DecryptionsDrainedConstraint.KEY) .addConstraint(DecryptionsDrainedConstraint.KEY)
.setMaxInstancesForQueue(1) .setMaxInstancesForQueue(1)
.build(), .build(),

View File

@@ -37,7 +37,7 @@ internal class CallLinkPeekJob private constructor(
constructor(callLinkRecipientId: RecipientId) : this( constructor(callLinkRecipientId: RecipientId) : this(
Parameters.Builder() Parameters.Builder()
.setQueue(PushProcessMessageJobV2.getQueueName(callLinkRecipientId)) .setQueue(PushProcessMessageJob.getQueueName(callLinkRecipientId))
.setMaxInstancesForQueue(1) .setMaxInstancesForQueue(1)
.setLifespan(TimeUnit.MINUTES.toMillis(1)) .setLifespan(TimeUnit.MINUTES.toMillis(1))
.addConstraint(NetworkConstraint.KEY) .addConstraint(NetworkConstraint.KEY)

View File

@@ -37,7 +37,7 @@ final class ForceUpdateGroupV2WorkerJob extends BaseJob {
private final GroupId.V2 groupId; private final GroupId.V2 groupId;
ForceUpdateGroupV2WorkerJob(@NonNull GroupId.V2 groupId) { ForceUpdateGroupV2WorkerJob(@NonNull GroupId.V2 groupId) {
this(new Parameters.Builder().setQueue(PushProcessMessageJobV2.getQueueName(Recipient.externalGroupExact(groupId).getId())) this(new Parameters.Builder().setQueue(PushProcessMessageJob.getQueueName(Recipient.externalGroupExact(groupId).getId()))
.addConstraint(NetworkConstraint.KEY) .addConstraint(NetworkConstraint.KEY)
.setMaxAttempts(Parameters.UNLIMITED) .setMaxAttempts(Parameters.UNLIMITED)
.build(), .build(),

View File

@@ -21,7 +21,7 @@ final class GroupCallPeekWorkerJob extends BaseJob {
public GroupCallPeekWorkerJob(@NonNull RecipientId groupRecipientId) { public GroupCallPeekWorkerJob(@NonNull RecipientId groupRecipientId) {
this(new Parameters.Builder() this(new Parameters.Builder()
.setQueue(PushProcessMessageJobV2.getQueueName(groupRecipientId)) .setQueue(PushProcessMessageJob.getQueueName(groupRecipientId))
.setMaxInstancesForQueue(2) .setMaxInstancesForQueue(2)
.build(), .build(),
groupRecipientId); groupRecipientId);

View File

@@ -170,8 +170,8 @@ public final class JobManagerFactories {
put(PushGroupSilentUpdateSendJob.KEY, new PushGroupSilentUpdateSendJob.Factory()); put(PushGroupSilentUpdateSendJob.KEY, new PushGroupSilentUpdateSendJob.Factory());
put(MessageFetchJob.KEY, new MessageFetchJob.Factory()); put(MessageFetchJob.KEY, new MessageFetchJob.Factory());
put(PushProcessEarlyMessagesJob.KEY, new PushProcessEarlyMessagesJob.Factory()); put(PushProcessEarlyMessagesJob.KEY, new PushProcessEarlyMessagesJob.Factory());
put(PushProcessMessageErrorV2Job.KEY, new PushProcessMessageErrorV2Job.Factory()); put(PushProcessMessageErrorJob.KEY, new PushProcessMessageErrorJob.Factory());
put(PushProcessMessageJobV2.KEY, new PushProcessMessageJobV2.Factory()); put(PushProcessMessageJob.KEY, new PushProcessMessageJob.Factory());
put(ReactionSendJob.KEY, new ReactionSendJob.Factory()); put(ReactionSendJob.KEY, new ReactionSendJob.Factory());
put(RebuildMessageSearchIndexJob.KEY, new RebuildMessageSearchIndexJob.Factory()); put(RebuildMessageSearchIndexJob.KEY, new RebuildMessageSearchIndexJob.Factory());
put(RefreshAttributesJob.KEY, new RefreshAttributesJob.Factory()); put(RefreshAttributesJob.KEY, new RefreshAttributesJob.Factory());

View File

@@ -20,7 +20,7 @@ class LeaveGroupV2WorkerJob(parameters: Parameters, private val groupId: GroupId
constructor(groupId: GroupId.V2) : this( constructor(groupId: GroupId.V2) : this(
parameters = Parameters.Builder() parameters = Parameters.Builder()
.setQueue(PushProcessMessageJobV2.getQueueName(Recipient.externalGroupExact(groupId).id)) .setQueue(PushProcessMessageJob.getQueueName(Recipient.externalGroupExact(groupId).id))
.addConstraint(NetworkConstraint.KEY) .addConstraint(NetworkConstraint.KEY)
.setMaxAttempts(Parameters.UNLIMITED) .setMaxAttempts(Parameters.UNLIMITED)
.setMaxInstancesForQueue(2) .setMaxInstancesForQueue(2)

View File

@@ -6,7 +6,7 @@ import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.database.model.ServiceMessageId import org.thoughtcrime.securesms.database.model.ServiceMessageId
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobmanager.Job import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2 import org.thoughtcrime.securesms.messages.MessageContentProcessor
import org.thoughtcrime.securesms.util.EarlyMessageCacheEntry import org.thoughtcrime.securesms.util.EarlyMessageCacheEntry
/** /**
@@ -46,7 +46,7 @@ class PushProcessEarlyMessagesJob private constructor(parameters: Parameters) :
if (earlyEntries != null) { if (earlyEntries != null) {
for (entry in earlyEntries) { for (entry in earlyEntries) {
Log.i(TAG, "[${id.sentTimestamp}] Processing early V2 content for $id") Log.i(TAG, "[${id.sentTimestamp}] Processing early V2 content for $id")
MessageContentProcessorV2.create(context).process(entry.envelope, entry.content, entry.metadata, entry.serverDeliveredTimestamp, processingEarlyContent = true) MessageContentProcessor.create(context).process(entry.envelope, entry.content, entry.metadata, entry.serverDeliveredTimestamp, processingEarlyContent = true)
} }
} else { } else {
Log.w(TAG, "[${id.sentTimestamp}] Saw $id in the cache, but when we went to retrieve it, it was already gone.") Log.w(TAG, "[${id.sentTimestamp}] Saw $id in the cache, but when we went to retrieve it, it was already gone.")
@@ -76,13 +76,13 @@ class PushProcessEarlyMessagesJob private constructor(parameters: Parameters) :
const val KEY = "PushProcessEarlyMessageJob" const val KEY = "PushProcessEarlyMessageJob"
/** /**
* Enqueues a job to run after the most-recently-enqueued [PushProcessMessageJobV2]. * Enqueues a job to run after the most-recently-enqueued [PushProcessMessageJob].
*/ */
@JvmStatic @JvmStatic
fun enqueue() { fun enqueue() {
val jobManger = ApplicationDependencies.getJobManager() val jobManger = ApplicationDependencies.getJobManager()
val youngestProcessJobId: String? = jobManger.find { it.factoryKey == PushProcessMessageJobV2.KEY } val youngestProcessJobId: String? = jobManger.find { it.factoryKey == PushProcessMessageJob.KEY }
.maxByOrNull { it.createTime } .maxByOrNull { it.createTime }
?.id ?.id

View File

@@ -14,14 +14,14 @@ import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobmanager.JsonJobData import org.thoughtcrime.securesms.jobmanager.JsonJobData
import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraint import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraint
import org.thoughtcrime.securesms.messages.ExceptionMetadata import org.thoughtcrime.securesms.messages.ExceptionMetadata
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2 import org.thoughtcrime.securesms.messages.MessageContentProcessor
import org.thoughtcrime.securesms.messages.MessageState import org.thoughtcrime.securesms.messages.MessageState
import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.Recipient
/** /**
* Process messages that did not decrypt/validate successfully. * Process messages that did not decrypt/validate successfully.
*/ */
class PushProcessMessageErrorV2Job private constructor( class PushProcessMessageErrorJob private constructor(
parameters: Parameters, parameters: Parameters,
private val messageState: MessageState, private val messageState: MessageState,
private val exceptionMetadata: ExceptionMetadata, private val exceptionMetadata: ExceptionMetadata,
@@ -55,15 +55,15 @@ class PushProcessMessageErrorV2Job private constructor(
return return
} }
MessageContentProcessorV2.create(context).processException(messageState, exceptionMetadata, timestamp) MessageContentProcessor.create(context).processException(messageState, exceptionMetadata, timestamp)
} }
override fun onShouldRetry(e: Exception): Boolean = false override fun onShouldRetry(e: Exception): Boolean = false
override fun onFailure() = Unit override fun onFailure() = Unit
class Factory : Job.Factory<PushProcessMessageErrorV2Job?> { class Factory : Job.Factory<PushProcessMessageErrorJob?> {
override fun create(parameters: Parameters, serializedData: ByteArray?): PushProcessMessageErrorV2Job { override fun create(parameters: Parameters, serializedData: ByteArray?): PushProcessMessageErrorJob {
val data = JsonJobData.deserialize(serializedData) val data = JsonJobData.deserialize(serializedData)
val state = MessageState.values()[data.getInt(KEY_MESSAGE_STATE)] val state = MessageState.values()[data.getInt(KEY_MESSAGE_STATE)]
@@ -75,14 +75,14 @@ class PushProcessMessageErrorV2Job private constructor(
groupId = GroupId.parseNullableOrThrow(data.getStringOrDefault(KEY_EXCEPTION_GROUP_ID, null)) groupId = GroupId.parseNullableOrThrow(data.getStringOrDefault(KEY_EXCEPTION_GROUP_ID, null))
) )
return PushProcessMessageErrorV2Job(parameters, state, exceptionMetadata, data.getLong(KEY_TIMESTAMP)) return PushProcessMessageErrorJob(parameters, state, exceptionMetadata, data.getLong(KEY_TIMESTAMP))
} }
} }
companion object { companion object {
const val KEY = "PushProcessMessageErrorV2Job" const val KEY = "PushProcessMessageErrorV2Job"
val TAG = Log.tag(PushProcessMessageErrorV2Job::class.java) val TAG = Log.tag(PushProcessMessageErrorJob::class.java)
private const val KEY_MESSAGE_STATE = "message_state" private const val KEY_MESSAGE_STATE = "message_state"
private const val KEY_TIMESTAMP = "timestamp" private const val KEY_TIMESTAMP = "timestamp"
@@ -99,7 +99,7 @@ class PushProcessMessageErrorV2Job private constructor(
return Parameters.Builder() return Parameters.Builder()
.setMaxAttempts(Parameters.UNLIMITED) .setMaxAttempts(Parameters.UNLIMITED)
.addConstraint(ChangeNumberConstraint.KEY) .addConstraint(ChangeNumberConstraint.KEY)
.setQueue(PushProcessMessageJobV2.getQueueName(recipient.id)) .setQueue(PushProcessMessageJob.getQueueName(recipient.id))
.build() .build()
} }
} }

View File

@@ -10,7 +10,7 @@ import org.thoughtcrime.securesms.groups.GroupsV1MigratedCache
import org.thoughtcrime.securesms.jobmanager.Job import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraint import org.thoughtcrime.securesms.jobmanager.impl.ChangeNumberConstraint
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2 import org.thoughtcrime.securesms.messages.MessageContentProcessor
import org.thoughtcrime.securesms.messages.MessageDecryptor import org.thoughtcrime.securesms.messages.MessageDecryptor
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupId import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupId
import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.RecipientId
@@ -21,16 +21,15 @@ import org.whispersystems.signalservice.api.crypto.protos.CompleteMessage
import org.whispersystems.signalservice.api.groupsv2.NoCredentialForRedemptionTimeException import org.whispersystems.signalservice.api.groupsv2.NoCredentialForRedemptionTimeException
import org.whispersystems.signalservice.api.push.ServiceId import org.whispersystems.signalservice.api.push.ServiceId
import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException import org.whispersystems.signalservice.api.push.exceptions.PushNetworkException
import org.whispersystems.signalservice.internal.push.SignalServiceProtos
import org.whispersystems.signalservice.internal.push.SignalServiceProtos.Content import org.whispersystems.signalservice.internal.push.SignalServiceProtos.Content
import org.whispersystems.signalservice.internal.push.SignalServiceProtos.Envelope import org.whispersystems.signalservice.internal.push.SignalServiceProtos.Envelope
import java.io.IOException import java.io.IOException
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
import org.whispersystems.signalservice.api.crypto.protos.EnvelopeMetadata as EnvelopeMetadataProto import org.whispersystems.signalservice.api.crypto.protos.EnvelopeMetadata as EnvelopeMetadataProto
class PushProcessMessageJobV2 private constructor( class PushProcessMessageJob private constructor(
parameters: Parameters, parameters: Parameters,
private val envelope: SignalServiceProtos.Envelope, private val envelope: Envelope,
private val content: Content, private val content: Content,
private val metadata: EnvelopeMetadata, private val metadata: EnvelopeMetadata,
private val serverDeliveredTimestamp: Long private val serverDeliveredTimestamp: Long
@@ -59,7 +58,7 @@ class PushProcessMessageJobV2 private constructor(
} }
public override fun onRun() { public override fun onRun() {
val processor = MessageContentProcessorV2.create(context) val processor = MessageContentProcessor.create(context)
processor.process(envelope, content, metadata, serverDeliveredTimestamp) processor.process(envelope, content, metadata, serverDeliveredTimestamp)
} }
@@ -71,11 +70,11 @@ class PushProcessMessageJobV2 private constructor(
override fun onFailure() = Unit override fun onFailure() = Unit
class Factory : Job.Factory<PushProcessMessageJobV2?> { class Factory : Job.Factory<PushProcessMessageJob?> {
override fun create(parameters: Parameters, data: ByteArray?): PushProcessMessageJobV2 { override fun create(parameters: Parameters, data: ByteArray?): PushProcessMessageJob {
return try { return try {
val completeMessage = CompleteMessage.ADAPTER.decode(data!!) val completeMessage = CompleteMessage.ADAPTER.decode(data!!)
PushProcessMessageJobV2( PushProcessMessageJob(
parameters = parameters, parameters = parameters,
envelope = Envelope.parseFrom(completeMessage.envelope.toByteArray()), envelope = Envelope.parseFrom(completeMessage.envelope.toByteArray()),
content = Content.parseFrom(completeMessage.content.toByteArray()), content = Content.parseFrom(completeMessage.content.toByteArray()),
@@ -99,7 +98,7 @@ class PushProcessMessageJobV2 private constructor(
const val KEY = "PushProcessMessageJobV2" const val KEY = "PushProcessMessageJobV2"
const val QUEUE_PREFIX = "__PUSH_PROCESS_JOB__" const val QUEUE_PREFIX = "__PUSH_PROCESS_JOB__"
private val TAG = Log.tag(PushProcessMessageJobV2::class.java) private val TAG = Log.tag(PushProcessMessageJob::class.java)
/** /**
* Cache to keep track of empty 1:1 processing queues. Once a 1:1 queue is empty * Cache to keep track of empty 1:1 processing queues. Once a 1:1 queue is empty
@@ -114,7 +113,7 @@ class PushProcessMessageJobV2 private constructor(
return QUEUE_PREFIX + recipientId.toQueueKey() return QUEUE_PREFIX + recipientId.toQueueKey()
} }
fun processOrDefer(messageProcessor: MessageContentProcessorV2, result: MessageDecryptor.Result.Success, localReceiveMetric: SignalLocalMetrics.MessageReceive): PushProcessMessageJobV2? { fun processOrDefer(messageProcessor: MessageContentProcessor, result: MessageDecryptor.Result.Success, localReceiveMetric: SignalLocalMetrics.MessageReceive): PushProcessMessageJob? {
val queueName: String val queueName: String
val groupContext = GroupUtil.getGroupContextIfPresent(result.content) val groupContext = GroupUtil.getGroupContextIfPresent(result.content)
@@ -146,7 +145,7 @@ class PushProcessMessageJobV2 private constructor(
if (requireNetwork) { if (requireNetwork) {
builder.addConstraint(NetworkConstraint.KEY).setLifespan(TimeUnit.DAYS.toMillis(30)) builder.addConstraint(NetworkConstraint.KEY).setLifespan(TimeUnit.DAYS.toMillis(30))
} }
PushProcessMessageJobV2(builder.build(), result.envelope.toBuilder().clearContent().build(), result.content, result.metadata, result.serverDeliveredTimestamp) PushProcessMessageJob(builder.build(), result.envelope.toBuilder().clearContent().build(), result.content, result.metadata, result.serverDeliveredTimestamp)
} else { } else {
try { try {
messageProcessor.process(result.envelope, result.content, result.metadata, result.serverDeliveredTimestamp, localMetric = localReceiveMetric) messageProcessor.process(result.envelope, result.content, result.metadata, result.serverDeliveredTimestamp, localMetric = localReceiveMetric)

View File

@@ -41,7 +41,7 @@ final class RequestGroupV2InfoWorkerJob extends BaseJob {
@WorkerThread @WorkerThread
RequestGroupV2InfoWorkerJob(@NonNull GroupId.V2 groupId, int toRevision) { RequestGroupV2InfoWorkerJob(@NonNull GroupId.V2 groupId, int toRevision) {
this(new Parameters.Builder() this(new Parameters.Builder()
.setQueue(PushProcessMessageJobV2.getQueueName(Recipient.externalGroupExact(groupId).getId())) .setQueue(PushProcessMessageJob.getQueueName(Recipient.externalGroupExact(groupId).getId()))
.addConstraint(NetworkConstraint.KEY) .addConstraint(NetworkConstraint.KEY)
.setLifespan(TimeUnit.DAYS.toMillis(1)) .setLifespan(TimeUnit.DAYS.toMillis(1))
.setMaxAttempts(Parameters.UNLIMITED) .setMaxAttempts(Parameters.UNLIMITED)

View File

@@ -3,7 +3,7 @@ package org.thoughtcrime.securesms.messages
import org.signal.ringrtc.CallId import org.signal.ringrtc.CallId
import org.thoughtcrime.securesms.database.model.IdentityRecord import org.thoughtcrime.securesms.database.model.IdentityRecord
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.log import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.log
import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.ringrtc.RemotePeer import org.thoughtcrime.securesms.ringrtc.RemotePeer

View File

@@ -48,16 +48,16 @@ import org.thoughtcrime.securesms.jobs.PaymentLedgerUpdateJob
import org.thoughtcrime.securesms.jobs.PaymentTransactionCheckJob import org.thoughtcrime.securesms.jobs.PaymentTransactionCheckJob
import org.thoughtcrime.securesms.jobs.ProfileKeySendJob import org.thoughtcrime.securesms.jobs.ProfileKeySendJob
import org.thoughtcrime.securesms.jobs.PushProcessEarlyMessagesJob import org.thoughtcrime.securesms.jobs.PushProcessEarlyMessagesJob
import org.thoughtcrime.securesms.jobs.PushProcessMessageJobV2 import org.thoughtcrime.securesms.jobs.PushProcessMessageJob
import org.thoughtcrime.securesms.jobs.RefreshAttributesJob import org.thoughtcrime.securesms.jobs.RefreshAttributesJob
import org.thoughtcrime.securesms.jobs.RetrieveProfileJob import org.thoughtcrime.securesms.jobs.RetrieveProfileJob
import org.thoughtcrime.securesms.jobs.SendDeliveryReceiptJob import org.thoughtcrime.securesms.jobs.SendDeliveryReceiptJob
import org.thoughtcrime.securesms.jobs.TrimThreadJob import org.thoughtcrime.securesms.jobs.TrimThreadJob
import org.thoughtcrime.securesms.linkpreview.LinkPreview import org.thoughtcrime.securesms.linkpreview.LinkPreview
import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil import org.thoughtcrime.securesms.linkpreview.LinkPreviewUtil
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.debug import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.debug
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.log import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.log
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.warn import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.warn
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupMasterKey import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupMasterKey
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.hasGroupContext import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.hasGroupContext
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.hasRemoteDelete import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.hasRemoteDelete
@@ -128,10 +128,10 @@ object DataMessageProcessor {
val groupSecretParams = if (message.hasGroupContext) GroupSecretParams.deriveFromMasterKey(message.groupV2.groupMasterKey) else null val groupSecretParams = if (message.hasGroupContext) GroupSecretParams.deriveFromMasterKey(message.groupV2.groupMasterKey) else null
val groupId: GroupId.V2? = if (groupSecretParams != null) GroupId.v2(groupSecretParams.publicParams.groupIdentifier) else null val groupId: GroupId.V2? = if (groupSecretParams != null) GroupId.v2(groupSecretParams.publicParams.groupIdentifier) else null
var groupProcessResult: MessageContentProcessorV2.Gv2PreProcessResult? = null var groupProcessResult: MessageContentProcessor.Gv2PreProcessResult? = null
if (groupId != null) { if (groupId != null) {
groupProcessResult = MessageContentProcessorV2.handleGv2PreProcessing(context, envelope.timestamp, content, metadata, groupId, message.groupV2, senderRecipient, groupSecretParams) groupProcessResult = MessageContentProcessor.handleGv2PreProcessing(context, envelope.timestamp, content, metadata, groupId, message.groupV2, senderRecipient, groupSecretParams)
if (groupProcessResult == MessageContentProcessorV2.Gv2PreProcessResult.IGNORE) { if (groupProcessResult == MessageContentProcessor.Gv2PreProcessResult.IGNORE) {
return return
} }
localMetrics?.onGv2Processed() localMetrics?.onGv2Processed()
@@ -157,7 +157,7 @@ object DataMessageProcessor {
if (groupId != null) { if (groupId != null) {
val unknownGroup = when (groupProcessResult) { val unknownGroup = when (groupProcessResult) {
MessageContentProcessorV2.Gv2PreProcessResult.GROUP_UP_TO_DATE -> threadRecipient.isUnknownGroup MessageContentProcessor.Gv2PreProcessResult.GROUP_UP_TO_DATE -> threadRecipient.isUnknownGroup
else -> SignalDatabase.groups.isUnknownGroup(groupId) else -> SignalDatabase.groups.isUnknownGroup(groupId)
} }
if (unknownGroup) { if (unknownGroup) {
@@ -177,17 +177,17 @@ object DataMessageProcessor {
SignalExecutors.BOUNDED.execute { ApplicationDependencies.getJobManager().add(SendDeliveryReceiptJob(senderRecipient.id, message.timestamp, messageId)) } SignalExecutors.BOUNDED.execute { ApplicationDependencies.getJobManager().add(SendDeliveryReceiptJob(senderRecipient.id, message.timestamp, messageId)) }
} else if (!metadata.sealedSender) { } else if (!metadata.sealedSender) {
if (RecipientUtil.shouldHaveProfileKey(threadRecipient)) { if (RecipientUtil.shouldHaveProfileKey(threadRecipient)) {
Log.w(MessageContentProcessorV2.TAG, "Received an unsealed sender message from " + senderRecipient.id + ", but they should already have our profile key. Correcting.") Log.w(MessageContentProcessor.TAG, "Received an unsealed sender message from " + senderRecipient.id + ", but they should already have our profile key. Correcting.")
if (groupId != null) { if (groupId != null) {
Log.i(MessageContentProcessorV2.TAG, "Message was to a GV2 group. Ensuring our group profile keys are up to date.") Log.i(MessageContentProcessor.TAG, "Message was to a GV2 group. Ensuring our group profile keys are up to date.")
ApplicationDependencies ApplicationDependencies
.getJobManager() .getJobManager()
.startChain(RefreshAttributesJob(false)) .startChain(RefreshAttributesJob(false))
.then(GroupV2UpdateSelfProfileKeyJob.withQueueLimits(groupId)) .then(GroupV2UpdateSelfProfileKeyJob.withQueueLimits(groupId))
.enqueue() .enqueue()
} else if (!threadRecipient.isGroup) { } else if (!threadRecipient.isGroup) {
Log.i(MessageContentProcessorV2.TAG, "Message was to a 1:1. Ensuring this user has our profile key.") Log.i(MessageContentProcessor.TAG, "Message was to a 1:1. Ensuring this user has our profile key.")
val profileSendJob = ProfileKeySendJob.create(SignalDatabase.threads.getOrCreateThreadIdFor(threadRecipient), true) val profileSendJob = ProfileKeySendJob.create(SignalDatabase.threads.getOrCreateThreadIdFor(threadRecipient), true)
if (profileSendJob != null) { if (profileSendJob != null) {
ApplicationDependencies ApplicationDependencies
@@ -612,7 +612,7 @@ object DataMessageProcessor {
val paymentNotification = message.payment.notification val paymentNotification = message.payment.notification
val uuid = UUID.randomUUID() val uuid = UUID.randomUUID()
val queue = "Payment_" + PushProcessMessageJobV2.getQueueName(senderRecipientId) val queue = "Payment_" + PushProcessMessageJob.getQueueName(senderRecipientId)
try { try {
SignalDatabase.payments.createIncomingPayment( SignalDatabase.payments.createIncomingPayment(

View File

@@ -14,8 +14,8 @@ import org.thoughtcrime.securesms.groups.GroupId
import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob import org.thoughtcrime.securesms.jobs.AttachmentDownloadJob
import org.thoughtcrime.securesms.jobs.PushProcessEarlyMessagesJob import org.thoughtcrime.securesms.jobs.PushProcessEarlyMessagesJob
import org.thoughtcrime.securesms.jobs.SendDeliveryReceiptJob import org.thoughtcrime.securesms.jobs.SendDeliveryReceiptJob
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.log import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.log
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.warn import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.warn
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupId import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupId
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.isMediaMessage import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.isMediaMessage
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.toPointersWithinLimit import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.toPointersWithinLimit
@@ -80,7 +80,7 @@ object EditMessageProcessor {
return return
} }
if (groupId != null && MessageContentProcessorV2.handleGv2PreProcessing(context, envelope.timestamp, content, metadata, groupId, message.groupV2, senderRecipient) == MessageContentProcessorV2.Gv2PreProcessResult.IGNORE) { if (groupId != null && MessageContentProcessor.handleGv2PreProcessing(context, envelope.timestamp, content, metadata, groupId, message.groupV2, senderRecipient) == MessageContentProcessor.Gv2PreProcessResult.IGNORE) {
warn(envelope.timestamp, "[handleEditMessage] Group processor indicated we should ignore this.") warn(envelope.timestamp, "[handleEditMessage] Group processor indicated we should ignore this.")
return return
} }

View File

@@ -20,8 +20,8 @@ import org.thoughtcrime.securesms.jobmanager.impl.BackoffUtil
import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint import org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint
import org.thoughtcrime.securesms.jobs.ForegroundServiceUtil import org.thoughtcrime.securesms.jobs.ForegroundServiceUtil
import org.thoughtcrime.securesms.jobs.ForegroundServiceUtil.startWhenCapable import org.thoughtcrime.securesms.jobs.ForegroundServiceUtil.startWhenCapable
import org.thoughtcrime.securesms.jobs.PushProcessMessageErrorV2Job import org.thoughtcrime.securesms.jobs.PushProcessMessageErrorJob
import org.thoughtcrime.securesms.jobs.PushProcessMessageJobV2 import org.thoughtcrime.securesms.jobs.PushProcessMessageJob
import org.thoughtcrime.securesms.jobs.UnableToStartException import org.thoughtcrime.securesms.jobs.UnableToStartException
import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.messages.MessageDecryptor.FollowUpOperation import org.thoughtcrime.securesms.messages.MessageDecryptor.FollowUpOperation
@@ -35,7 +35,6 @@ import org.whispersystems.signalservice.api.util.UuidUtil
import org.whispersystems.signalservice.api.websocket.WebSocketConnectionState import org.whispersystems.signalservice.api.websocket.WebSocketConnectionState
import org.whispersystems.signalservice.api.websocket.WebSocketUnavailableException import org.whispersystems.signalservice.api.websocket.WebSocketUnavailableException
import org.whispersystems.signalservice.internal.push.SignalServiceProtos import org.whispersystems.signalservice.internal.push.SignalServiceProtos
import java.util.*
import java.util.concurrent.CopyOnWriteArrayList import java.util.concurrent.CopyOnWriteArrayList
import java.util.concurrent.Semaphore import java.util.concurrent.Semaphore
import java.util.concurrent.TimeUnit import java.util.concurrent.TimeUnit
@@ -94,7 +93,7 @@ class IncomingMessageObserver(private val context: Application) {
} }
} }
private val messageContentProcessor = MessageContentProcessorV2(context) private val messageContentProcessor = MessageContentProcessor(context)
private var appVisible = false private var appVisible = false
private var lastInteractionTime: Long = System.currentTimeMillis() private var lastInteractionTime: Long = System.currentTimeMillis()
@@ -282,14 +281,14 @@ class IncomingMessageObserver(private val context: Application) {
SignalLocalMetrics.MessageLatency.onMessageReceived(envelope.serverTimestamp, serverDeliveredTimestamp, envelope.urgent) SignalLocalMetrics.MessageLatency.onMessageReceived(envelope.serverTimestamp, serverDeliveredTimestamp, envelope.urgent)
when (result) { when (result) {
is MessageDecryptor.Result.Success -> { is MessageDecryptor.Result.Success -> {
val job = PushProcessMessageJobV2.processOrDefer(messageContentProcessor, result, localReceiveMetric) val job = PushProcessMessageJob.processOrDefer(messageContentProcessor, result, localReceiveMetric)
if (job != null) { if (job != null) {
return result.followUpOperations + FollowUpOperation { job } return result.followUpOperations + FollowUpOperation { job }
} }
} }
is MessageDecryptor.Result.Error -> { is MessageDecryptor.Result.Error -> {
return result.followUpOperations + FollowUpOperation { return result.followUpOperations + FollowUpOperation {
PushProcessMessageErrorV2Job( PushProcessMessageErrorJob(
result.toMessageState(), result.toMessageState(),
result.errorMetadata.toExceptionMetadata(), result.errorMetadata.toExceptionMetadata(),
result.envelope.timestamp result.envelope.timestamp

View File

@@ -58,7 +58,7 @@ import org.whispersystems.signalservice.internal.push.SignalServiceProtos.Typing
import java.io.IOException import java.io.IOException
import java.util.Optional import java.util.Optional
open class MessageContentProcessorV2(private val context: Context) { open class MessageContentProcessor(private val context: Context) {
enum class Gv2PreProcessResult { enum class Gv2PreProcessResult {
IGNORE, IGNORE,
@@ -71,8 +71,8 @@ open class MessageContentProcessorV2(private val context: Context) {
@JvmStatic @JvmStatic
@JvmOverloads @JvmOverloads
fun create(context: Context = ApplicationDependencies.getApplication()): MessageContentProcessorV2 { fun create(context: Context = ApplicationDependencies.getApplication()): MessageContentProcessor {
return MessageContentProcessorV2(context) return MessageContentProcessor(context)
} }
fun debug(message: String) { fun debug(message: String) {

View File

@@ -6,8 +6,8 @@ import org.thoughtcrime.securesms.database.SignalDatabase
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.jobs.PushProcessEarlyMessagesJob import org.thoughtcrime.securesms.jobs.PushProcessEarlyMessagesJob
import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.log import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.log
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.warn import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.warn
import org.thoughtcrime.securesms.recipients.Recipient import org.thoughtcrime.securesms.recipients.Recipient
import org.thoughtcrime.securesms.recipients.RecipientId import org.thoughtcrime.securesms.recipients.RecipientId
import org.thoughtcrime.securesms.util.EarlyMessageCacheEntry import org.thoughtcrime.securesms.util.EarlyMessageCacheEntry

View File

@@ -9,8 +9,8 @@ import org.thoughtcrime.securesms.database.model.databaseprotos.ChatColor
import org.thoughtcrime.securesms.database.model.databaseprotos.StoryTextPost import org.thoughtcrime.securesms.database.model.databaseprotos.StoryTextPost
import org.thoughtcrime.securesms.database.model.toBodyRangeList import org.thoughtcrime.securesms.database.model.toBodyRangeList
import org.thoughtcrime.securesms.dependencies.ApplicationDependencies import org.thoughtcrime.securesms.dependencies.ApplicationDependencies
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.log import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.log
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.warn import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.warn
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupId import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupId
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.toPointer import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.toPointer
import org.thoughtcrime.securesms.mms.IncomingMediaMessage import org.thoughtcrime.securesms.mms.IncomingMediaMessage

View File

@@ -52,8 +52,8 @@ import org.thoughtcrime.securesms.jobs.RefreshOwnProfileJob
import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob
import org.thoughtcrime.securesms.keyvalue.SignalStore import org.thoughtcrime.securesms.keyvalue.SignalStore
import org.thoughtcrime.securesms.linkpreview.LinkPreview import org.thoughtcrime.securesms.linkpreview.LinkPreview
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.log import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.log
import org.thoughtcrime.securesms.messages.MessageContentProcessorV2.Companion.warn import org.thoughtcrime.securesms.messages.MessageContentProcessor.Companion.warn
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupId import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupId
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupMasterKey import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.groupMasterKey
import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.hasGroupContext import org.thoughtcrime.securesms.messages.SignalServiceProtoUtil.hasGroupContext
@@ -183,7 +183,7 @@ object SyncMessageProcessor {
val groupId: GroupId.V2? = if (dataMessage.hasGroupContext) GroupId.v2(dataMessage.groupV2.groupMasterKey) else null val groupId: GroupId.V2? = if (dataMessage.hasGroupContext) GroupId.v2(dataMessage.groupV2.groupMasterKey) else null
if (groupId != null) { if (groupId != null) {
if (MessageContentProcessorV2.handleGv2PreProcessing(context, envelope.timestamp, content, metadata, groupId, dataMessage.groupV2, senderRecipient) == MessageContentProcessorV2.Gv2PreProcessResult.IGNORE) { if (MessageContentProcessor.handleGv2PreProcessing(context, envelope.timestamp, content, metadata, groupId, dataMessage.groupV2, senderRecipient) == MessageContentProcessor.Gv2PreProcessResult.IGNORE) {
return return
} }
} }
@@ -604,7 +604,7 @@ object SyncMessageProcessor {
val dataMessage: DataMessage = sent.message val dataMessage: DataMessage = sent.message
val groupId: GroupId.V2? = dataMessage.groupV2.groupId val groupId: GroupId.V2? = dataMessage.groupV2.groupId
if (MessageContentProcessorV2.updateGv2GroupFromServerOrP2PChange(context, envelope.timestamp, dataMessage.groupV2, SignalDatabase.groups.getGroup(GroupId.v2(dataMessage.groupV2.groupMasterKey))) == null) { if (MessageContentProcessor.updateGv2GroupFromServerOrP2PChange(context, envelope.timestamp, dataMessage.groupV2, SignalDatabase.groups.getGroup(GroupId.v2(dataMessage.groupV2.groupMasterKey))) == null) {
log(envelope.timestamp, "Ignoring GV2 message for group we are not currently in $groupId") log(envelope.timestamp, "Ignoring GV2 message for group we are not currently in $groupId")
} }
} }

View File

@@ -10,7 +10,7 @@ import org.thoughtcrime.securesms.jobmanager.Job
import org.thoughtcrime.securesms.jobmanager.JobTracker import org.thoughtcrime.securesms.jobmanager.JobTracker
import org.thoughtcrime.securesms.jobmanager.JobTracker.JobListener import org.thoughtcrime.securesms.jobmanager.JobTracker.JobListener
import org.thoughtcrime.securesms.jobs.MarkerJob import org.thoughtcrime.securesms.jobs.MarkerJob
import org.thoughtcrime.securesms.jobs.PushProcessMessageJobV2 import org.thoughtcrime.securesms.jobs.PushProcessMessageJob
import org.thoughtcrime.securesms.util.NetworkUtil import org.thoughtcrime.securesms.util.NetworkUtil
import org.thoughtcrime.securesms.util.PowerManagerCompat import org.thoughtcrime.securesms.util.PowerManagerCompat
import org.thoughtcrime.securesms.util.ServiceUtil import org.thoughtcrime.securesms.util.ServiceUtil
@@ -81,7 +81,7 @@ object WebSocketDrainer {
val queueListener = QueueFindingJobListener() val queueListener = QueueFindingJobListener()
jobManager.addListener( jobManager.addListener(
{ job: Job -> job.parameters.queue?.startsWith(PushProcessMessageJobV2.QUEUE_PREFIX) ?: false }, { job: Job -> job.parameters.queue?.startsWith(PushProcessMessageJob.QUEUE_PREFIX) ?: false },
queueListener queueListener
) )