mirror of
https://github.com/signalapp/Signal-Android.git
synced 2026-02-26 04:33:36 +00:00
Fix signal backup daily schedule bug.
This commit is contained in:
committed by
Greyson Parrelli
parent
901a81fb74
commit
6a456a288d
@@ -47,6 +47,8 @@ public final class SettingsValues extends SignalStoreValues {
|
||||
public static final String BACKUPS_ENABLED = "settings.backups.enabled";
|
||||
public static final String BACKUPS_SCHEDULE_HOUR = "settings.backups.schedule.hour";
|
||||
public static final String BACKUPS_SCHEDULE_MINUTE = "settings.backups.schedule.minute";
|
||||
public static final String SIGNAL_BACKUPS_SCHEDULE_HOUR = "settings.signal.backups.schedule.hour";
|
||||
public static final String SIGNAL_BACKUPS_SCHEDULE_MINUTE = "settings.signal.backups.schedule.minute";
|
||||
public static final String SMS_DELIVERY_REPORTS_ENABLED = "settings.sms.delivery.reports.enabled";
|
||||
public static final String WIFI_CALLING_COMPATIBILITY_MODE_ENABLED = "settings.wifi.calling.compatibility.mode.enabled";
|
||||
public static final String MESSAGE_NOTIFICATIONS_ENABLED = "settings.message.notifications.enabled";
|
||||
@@ -108,6 +110,9 @@ public final class SettingsValues extends SignalStoreValues {
|
||||
// Initialize backup time to a 5min interval between 1-5am
|
||||
setBackupSchedule(new Random().nextInt(5) + 1, new Random().nextInt(12) * 5);
|
||||
}
|
||||
if (!store.containsKey(SIGNAL_BACKUPS_SCHEDULE_HOUR)) {
|
||||
initSignalBackupsSchedule();
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -315,11 +320,40 @@ public final class SettingsValues extends SignalStoreValues {
|
||||
return getInteger(BACKUPS_SCHEDULE_MINUTE, BACKUP_DEFAULT_MINUTE);
|
||||
}
|
||||
|
||||
public int getSignalBackupHour() {
|
||||
int hour = getInteger(SIGNAL_BACKUPS_SCHEDULE_HOUR, -1);
|
||||
if (hour < 0) {
|
||||
initSignalBackupsSchedule();
|
||||
return getInteger(SIGNAL_BACKUPS_SCHEDULE_HOUR, BACKUP_DEFAULT_HOUR);
|
||||
} else {
|
||||
return hour;
|
||||
}
|
||||
}
|
||||
|
||||
public int getSignalBackupMinute() {
|
||||
int minute = getInteger(SIGNAL_BACKUPS_SCHEDULE_MINUTE, -1);
|
||||
if (minute < 0) {
|
||||
initSignalBackupsSchedule();
|
||||
return getInteger(SIGNAL_BACKUPS_SCHEDULE_MINUTE, BACKUP_DEFAULT_MINUTE);
|
||||
} else {
|
||||
return minute;
|
||||
}
|
||||
}
|
||||
|
||||
public void setBackupSchedule(int hour, int minute) {
|
||||
putInteger(BACKUPS_SCHEDULE_HOUR, hour);
|
||||
putInteger(BACKUPS_SCHEDULE_MINUTE, minute);
|
||||
}
|
||||
|
||||
private void initSignalBackupsSchedule() {
|
||||
setSignalBackupSchedule(new Random().nextInt(5) + 1, new Random().nextInt(12) * 5);
|
||||
}
|
||||
|
||||
public void setSignalBackupSchedule(int hour, int minute) {
|
||||
putInteger(SIGNAL_BACKUPS_SCHEDULE_HOUR, hour);
|
||||
putInteger(SIGNAL_BACKUPS_SCHEDULE_MINUTE, minute);
|
||||
}
|
||||
|
||||
public boolean isSmsDeliveryReportsEnabled() {
|
||||
return getBoolean(SMS_DELIVERY_REPORTS_ENABLED, TextSecurePreferences.isSmsDeliveryReportsEnabled(AppDependencies.getApplication()));
|
||||
}
|
||||
|
||||
@@ -24,7 +24,7 @@ class MessageBackupListener : PersistentAlarmManagerListener() {
|
||||
@VisibleForTesting
|
||||
public override fun getNextScheduledExecutionTime(context: Context): Long {
|
||||
val nextTime = SignalStore.backup.nextBackupTime
|
||||
return if (nextTime > (System.currentTimeMillis() + 2.days.inWholeMilliseconds)) {
|
||||
return if (nextTime < 0 || nextTime > (System.currentTimeMillis() + 2.days.inWholeMilliseconds)) {
|
||||
setNextBackupTimeToIntervalFromNow()
|
||||
} else {
|
||||
nextTime
|
||||
@@ -62,11 +62,11 @@ class MessageBackupListener : PersistentAlarmManagerListener() {
|
||||
return next.plusSeconds(jitter.toLong())
|
||||
}
|
||||
|
||||
fun setNextBackupTimeToIntervalFromNow(maxJitterSeconds: Int = BACKUP_JITTER_WINDOW_SECONDS): Long {
|
||||
val now = LocalDateTime.now()
|
||||
val hour = SignalStore.settings.backupHour
|
||||
val minute = SignalStore.settings.backupMinute
|
||||
val next = getNextDailyBackupTimeFromNowWithJitter(now, hour, minute, maxJitterSeconds).plusDays(1)
|
||||
@VisibleForTesting
|
||||
fun setNextBackupTimeToIntervalFromNow(now: LocalDateTime = LocalDateTime.now(), maxJitterSeconds: Int = BACKUP_JITTER_WINDOW_SECONDS, randomSource: Random = Random()): Long {
|
||||
val hour = SignalStore.settings.signalBackupHour
|
||||
val minute = SignalStore.settings.signalBackupMinute
|
||||
val next = getNextDailyBackupTimeFromNowWithJitter(now, hour, minute, maxJitterSeconds, randomSource)
|
||||
val nextTime = next.toMillis()
|
||||
SignalStore.backup.nextBackupTime = nextTime
|
||||
return nextTime
|
||||
|
||||
Reference in New Issue
Block a user