mirror of
https://github.com/oxen-io/session-android.git
synced 2025-08-26 07:21:10 +00:00
Do not unnecessarily refresh known-unregistered users during migration.
This commit is contained in:
@@ -96,10 +96,13 @@ public final class GroupsV1MigrationUtil {
|
|||||||
throw new InvalidMigrationStateException();
|
throw new InvalidMigrationStateException();
|
||||||
}
|
}
|
||||||
|
|
||||||
RecipientUtil.ensureUuidsAreAvailable(context, groupRecipient.getParticipants());
|
|
||||||
groupRecipient = groupRecipient.fresh();
|
|
||||||
|
|
||||||
List<Recipient> registeredMembers = RecipientUtil.getEligibleForSending(groupRecipient.getParticipants());
|
List<Recipient> registeredMembers = RecipientUtil.getEligibleForSending(groupRecipient.getParticipants());
|
||||||
|
|
||||||
|
if (RecipientUtil.ensureUuidsAreAvailable(context, registeredMembers)) {
|
||||||
|
Log.i(TAG, "Newly-discovered UUIDs. Getting fresh recipients.");
|
||||||
|
registeredMembers = Stream.of(registeredMembers).map(Recipient::fresh).toList();
|
||||||
|
}
|
||||||
|
|
||||||
List<Recipient> possibleMembers = forced ? getMigratableManualMigrationMembers(registeredMembers)
|
List<Recipient> possibleMembers = forced ? getMigratableManualMigrationMembers(registeredMembers)
|
||||||
: getMigratableAutoMigrationMembers(registeredMembers);
|
: getMigratableAutoMigrationMembers(registeredMembers);
|
||||||
|
|
||||||
|
@@ -61,6 +61,11 @@ public class GroupV1MigrationJob extends BaseJob {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void enqueuePossibleAutoMigrate(@NonNull RecipientId recipientId) {
|
public static void enqueuePossibleAutoMigrate(@NonNull RecipientId recipientId) {
|
||||||
|
if (!FeatureFlags.groupsV1MigrationJob()) {
|
||||||
|
Log.w(TAG, "Migration job is disabled.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
SignalExecutors.BOUNDED.execute(() -> {
|
SignalExecutors.BOUNDED.execute(() -> {
|
||||||
if (Recipient.resolved(recipientId).isPushV1Group()) {
|
if (Recipient.resolved(recipientId).isPushV1Group()) {
|
||||||
ApplicationDependencies.getJobManager().add(new GroupV1MigrationJob(recipientId));
|
ApplicationDependencies.getJobManager().add(new GroupV1MigrationJob(recipientId));
|
||||||
@@ -69,6 +74,11 @@ public class GroupV1MigrationJob extends BaseJob {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void enqueueRoutineMigrationsIfNecessary(@NonNull Application application) {
|
public static void enqueueRoutineMigrationsIfNecessary(@NonNull Application application) {
|
||||||
|
if (!FeatureFlags.groupsV1MigrationJob()) {
|
||||||
|
Log.w(TAG, "Migration job is disabled.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (!SignalStore.registrationValues().isRegistrationComplete() ||
|
if (!SignalStore.registrationValues().isRegistrationComplete() ||
|
||||||
!TextSecurePreferences.isPushRegistered(application) ||
|
!TextSecurePreferences.isPushRegistered(application) ||
|
||||||
TextSecurePreferences.getLocalUuid(application) == null)
|
TextSecurePreferences.getLocalUuid(application) == null)
|
||||||
@@ -82,12 +92,15 @@ public class GroupV1MigrationJob extends BaseJob {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
long timeSinceRefresh = System.currentTimeMillis() - SignalStore.misc().getLastProfileRefreshTime();
|
long timeSinceRefresh = System.currentTimeMillis() - SignalStore.misc().getLastGv1RoutineMigrationTime();
|
||||||
|
|
||||||
if (timeSinceRefresh < REFRESH_INTERVAL) {
|
if (timeSinceRefresh < REFRESH_INTERVAL) {
|
||||||
Log.i(TAG, "Too soon to refresh. Did the last refresh " + timeSinceRefresh + " ms ago.");
|
Log.i(TAG, "Too soon to refresh. Did the last refresh " + timeSinceRefresh + " ms ago.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
SignalStore.misc().setLastGv1RoutineMigrationTime(System.currentTimeMillis());
|
||||||
|
|
||||||
SignalExecutors.BOUNDED.execute(() -> {
|
SignalExecutors.BOUNDED.execute(() -> {
|
||||||
JobManager jobManager = ApplicationDependencies.getJobManager();
|
JobManager jobManager = ApplicationDependencies.getJobManager();
|
||||||
List<ThreadRecord> threads = DatabaseFactory.getThreadDatabase(application).getRecentV1Groups(ROUTINE_LIMIT);
|
List<ThreadRecord> threads = DatabaseFactory.getThreadDatabase(application).getRecentV1Groups(ROUTINE_LIMIT);
|
||||||
|
@@ -93,7 +93,7 @@ public class RecipientUtil {
|
|||||||
.toList();
|
.toList();
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void ensureUuidsAreAvailable(@NonNull Context context, @NonNull Collection<Recipient> recipients)
|
public static boolean ensureUuidsAreAvailable(@NonNull Context context, @NonNull Collection<Recipient> recipients)
|
||||||
throws IOException
|
throws IOException
|
||||||
{
|
{
|
||||||
List<Recipient> recipientsWithoutUuids = Stream.of(recipients)
|
List<Recipient> recipientsWithoutUuids = Stream.of(recipients)
|
||||||
@@ -103,6 +103,9 @@ public class RecipientUtil {
|
|||||||
|
|
||||||
if (recipientsWithoutUuids.size() > 0) {
|
if (recipientsWithoutUuids.size() > 0) {
|
||||||
DirectoryHelper.refreshDirectoryFor(context, recipientsWithoutUuids, false);
|
DirectoryHelper.refreshDirectoryFor(context, recipientsWithoutUuids, false);
|
||||||
|
return true;
|
||||||
|
} else {
|
||||||
|
return false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -64,6 +64,7 @@ public final class FeatureFlags {
|
|||||||
private static final String GV1_AUTO_MIGRATE = "android.groupsV1Migration.auto.4";
|
private static final String GV1_AUTO_MIGRATE = "android.groupsV1Migration.auto.4";
|
||||||
private static final String GV1_MANUAL_MIGRATE = "android.groupsV1Migration.manual";
|
private static final String GV1_MANUAL_MIGRATE = "android.groupsV1Migration.manual";
|
||||||
private static final String GV1_FORCED_MIGRATE = "android.groupsV1Migration.forced";
|
private static final String GV1_FORCED_MIGRATE = "android.groupsV1Migration.forced";
|
||||||
|
private static final String GV1_MIGRATION_JOB = "android.groupsV1Migration.job";
|
||||||
private static final String SEND_VIEWED_RECEIPTS = "android.sendViewedReceipts";
|
private static final String SEND_VIEWED_RECEIPTS = "android.sendViewedReceipts";
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -81,6 +82,7 @@ public final class FeatureFlags {
|
|||||||
DONATE_MEGAPHONE,
|
DONATE_MEGAPHONE,
|
||||||
VIEWED_RECEIPTS,
|
VIEWED_RECEIPTS,
|
||||||
GV1_AUTO_MIGRATE,
|
GV1_AUTO_MIGRATE,
|
||||||
|
GV1_MIGRATION_JOB,
|
||||||
GV1_MANUAL_MIGRATE,
|
GV1_MANUAL_MIGRATE,
|
||||||
GV1_FORCED_MIGRATE,
|
GV1_FORCED_MIGRATE,
|
||||||
GROUP_CALLING,
|
GROUP_CALLING,
|
||||||
@@ -107,7 +109,8 @@ public final class FeatureFlags {
|
|||||||
private static final Set<String> HOT_SWAPPABLE = SetUtil.newHashSet(
|
private static final Set<String> HOT_SWAPPABLE = SetUtil.newHashSet(
|
||||||
VERIFY_V2,
|
VERIFY_V2,
|
||||||
CLIENT_EXPIRATION,
|
CLIENT_EXPIRATION,
|
||||||
GROUP_CALLING
|
GROUP_CALLING,
|
||||||
|
GV1_MIGRATION_JOB
|
||||||
);
|
);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -238,6 +241,11 @@ public final class FeatureFlags {
|
|||||||
return getBoolean(GV1_AUTO_MIGRATE, false);
|
return getBoolean(GV1_AUTO_MIGRATE, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/** Whether or not we should run the job to proactively migrate groups. */
|
||||||
|
public static boolean groupsV1MigrationJob() {
|
||||||
|
return getBoolean(GV1_MIGRATION_JOB, false);
|
||||||
|
}
|
||||||
|
|
||||||
/** Whether or not manual migration from GV1->GV2 is enabled. */
|
/** Whether or not manual migration from GV1->GV2 is enabled. */
|
||||||
public static boolean groupsV1ManualMigration() {
|
public static boolean groupsV1ManualMigration() {
|
||||||
return getBoolean(GV1_MANUAL_MIGRATE, false) && groupsV1AutoMigration();
|
return getBoolean(GV1_MANUAL_MIGRATE, false) && groupsV1AutoMigration();
|
||||||
|
Reference in New Issue
Block a user