That fuck shit the fascists are using
1package org.tm.archive.migrations;
2
3import android.content.Context;
4import android.text.TextUtils;
5
6import androidx.annotation.NonNull;
7import androidx.annotation.Nullable;
8
9import org.signal.core.util.logging.Log;
10import org.tm.archive.database.SignalDatabase;
11import org.tm.archive.dependencies.ApplicationDependencies;
12import org.tm.archive.jobmanager.Job;
13import org.tm.archive.jobmanager.impl.NetworkConstraint;
14import org.tm.archive.keyvalue.SignalStore;
15import org.tm.archive.recipients.Recipient;
16import org.tm.archive.recipients.RecipientId;
17import org.whispersystems.signalservice.api.push.ServiceId.ACI;
18
19import java.io.IOException;
20import java.util.Objects;
21
22/**
23 * Couple migrations steps need to happen after we move to UUIDS.
24 * - We need to get our own UUID.
25 * - We need to fetch the new UUID sealed sender cert.
26 * - We need to do a directory sync so we can guarantee that all active users have UUIDs.
27 */
28public class UuidMigrationJob extends MigrationJob {
29
30 public static final String KEY = "UuidMigrationJob";
31
32 private static final String TAG = Log.tag(UuidMigrationJob.class);
33
34 UuidMigrationJob() {
35 this(new Parameters.Builder().addConstraint(NetworkConstraint.KEY).build());
36 }
37
38 private UuidMigrationJob(@NonNull Parameters parameters) {
39 super(parameters);
40 }
41
42 @Override
43 public @NonNull String getFactoryKey() {
44 return KEY;
45 }
46
47 @Override
48 boolean isUiBlocking() {
49 return false;
50 }
51
52 @Override
53 void performMigration() throws Exception {
54 if (!SignalStore.account().isRegistered() || TextUtils.isEmpty(SignalStore.account().getE164())) {
55 Log.w(TAG, "Not registered! Skipping migration, as it wouldn't do anything.");
56 return;
57 }
58
59 ensureSelfRecipientExists(context);
60 fetchOwnUuid(context);
61 }
62
63 @Override
64 boolean shouldRetry(@NonNull Exception e) {
65 return e instanceof IOException;
66 }
67
68 private static void ensureSelfRecipientExists(@NonNull Context context) {
69 SignalDatabase.recipients().getOrInsertFromE164(Objects.requireNonNull(SignalStore.account().getE164()));
70 }
71
72 private static void fetchOwnUuid(@NonNull Context context) throws IOException {
73 RecipientId self = Recipient.self().getId();
74 ACI localUuid = ACI.parseOrNull(ApplicationDependencies.getSignalServiceAccountManager().getWhoAmI().getAci());
75
76 if (localUuid == null) {
77 throw new IOException("Invalid UUID!");
78 }
79
80 SignalDatabase.recipients().markRegisteredOrThrow(self, localUuid);
81 SignalStore.account().setAci(localUuid);
82 }
83
84 public static class Factory implements Job.Factory<UuidMigrationJob> {
85 @Override
86 public @NonNull UuidMigrationJob create(@NonNull Parameters parameters, @Nullable byte[] serializedData) {
87 return new UuidMigrationJob(parameters);
88 }
89 }
90}