Search in sources :

Example 41 with Data

use of org.thoughtcrime.securesms.jobmanager.Data in project Signal-Android by signalapp.

the class RetrieveProfileJobMigration method migrateRetrieveProfileJob.

@NonNull
private static JobData migrateRetrieveProfileJob(@NonNull JobData jobData) {
    Data data = jobData.getData();
    if (data.hasString("recipient")) {
        Log.i(TAG, "Migrating job.");
        String recipient = data.getString("recipient");
        return jobData.withData(new Data.Builder().putStringArray("recipients", new String[] { recipient }).build());
    } else {
        return jobData;
    }
}
Also used : Data(org.thoughtcrime.securesms.jobmanager.Data) NonNull(androidx.annotation.NonNull)

Example 42 with Data

use of org.thoughtcrime.securesms.jobmanager.Data in project Signal-Android by signalapp.

the class PushProcessMessageQueueJobMigration method migratePushProcessMessageJob.

@NonNull
private static JobData migratePushProcessMessageJob(@NonNull Context context, @NonNull JobData jobData) throws IOException {
    Data data = jobData.getData();
    String suffix = "";
    if (data.getInt("message_state") == 0) {
        SignalServiceContent content = SignalServiceContent.deserialize(Base64.decode(data.getString("message_content")));
        if (content != null && content.getDataMessage().isPresent() && content.getDataMessage().get().getGroupContext().isPresent()) {
            Log.i(TAG, "Migrating a group message.");
            try {
                GroupId groupId = GroupUtil.idFromGroupContext(content.getDataMessage().get().getGroupContext().get());
                Recipient recipient = Recipient.externalGroupExact(context, groupId);
                suffix = recipient.getId().toQueueKey();
            } catch (BadGroupIdException e) {
                Log.w(TAG, "Bad groupId! Using default queue.");
            }
        } else if (content != null) {
            Log.i(TAG, "Migrating an individual message.");
            suffix = RecipientId.from(content.getSender()).toQueueKey();
        }
    } else {
        Log.i(TAG, "Migrating an exception message.");
        String exceptionSender = data.getString("exception_sender");
        GroupId exceptionGroup = GroupId.parseNullableOrThrow(data.getStringOrDefault("exception_groupId", null));
        if (exceptionGroup != null) {
            suffix = Recipient.externalGroupExact(context, exceptionGroup).getId().toQueueKey();
        } else if (exceptionSender != null) {
            suffix = Recipient.external(context, exceptionSender).getId().toQueueKey();
        }
    }
    return jobData.withQueueKey("__PUSH_PROCESS_JOB__" + suffix);
}
Also used : SignalServiceContent(org.whispersystems.signalservice.api.messages.SignalServiceContent) Data(org.thoughtcrime.securesms.jobmanager.Data) Recipient(org.thoughtcrime.securesms.recipients.Recipient) BadGroupIdException(org.thoughtcrime.securesms.groups.BadGroupIdException) GroupId(org.thoughtcrime.securesms.groups.GroupId) NonNull(androidx.annotation.NonNull)

Aggregations

Data (org.thoughtcrime.securesms.jobmanager.Data)42 NonNull (androidx.annotation.NonNull)34 Recipient (org.thoughtcrime.securesms.recipients.Recipient)26 IOException (java.io.IOException)10 Stream (com.annimon.stream.Stream)6 List (java.util.List)6 ApplicationDependencies (org.thoughtcrime.securesms.dependencies.ApplicationDependencies)6 Job (org.thoughtcrime.securesms.jobmanager.Job)6 RecipientId (org.thoughtcrime.securesms.recipients.RecipientId)6 Context (android.content.Context)4 TimeUnit (java.util.concurrent.TimeUnit)4 Test (org.junit.Test)4 Log (org.signal.core.util.logging.Log)4 NetworkConstraint (org.thoughtcrime.securesms.jobmanager.impl.NetworkConstraint)4 SignalStore (org.thoughtcrime.securesms.keyvalue.SignalStore)4 WorkerThread (androidx.annotation.WorkerThread)2 HashSet (java.util.HashSet)2 LinkedList (java.util.LinkedList)2 Set (java.util.Set)2 Assert.assertEquals (org.junit.Assert.assertEquals)2