That fuck shit the fascists are using
at master 90 lines 2.8 kB view raw
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}