use of org.thoughtcrime.securesms.jobs.DirectoryRefreshJob in project Signal-Android by WhisperSystems.
the class RegistrationUtil method maybeMarkRegistrationComplete.
/**
* There's several events where a registration may or may not be considered complete based on what
* path a user has taken. This will only truly mark registration as complete if all of the
* requirements are met.
*/
public static void maybeMarkRegistrationComplete(@NonNull Context context) {
if (!SignalStore.registrationValues().isRegistrationComplete() && SignalStore.account().isRegistered() && !Recipient.self().getProfileName().isEmpty() && (SignalStore.kbsValues().hasPin() || SignalStore.kbsValues().hasOptedOut())) {
Log.i(TAG, "Marking registration completed.", new Throwable());
SignalStore.registrationValues().setRegistrationComplete();
ApplicationDependencies.getJobManager().startChain(new StorageSyncJob()).then(new DirectoryRefreshJob(false)).enqueue();
} else if (!SignalStore.registrationValues().isRegistrationComplete()) {
Log.i(TAG, "Registration is not yet complete.", new Throwable());
}
}
use of org.thoughtcrime.securesms.jobs.DirectoryRefreshJob in project Signal-Android by WhisperSystems.
the class RecipientIdJobMigrationTest method migrate_directoryRefreshJob_nonNull.
@Test
public void migrate_directoryRefreshJob_nonNull() throws Exception {
JobData testData = new JobData("DirectoryRefreshJob", "DirectoryRefreshJob", new Data.Builder().putString("address", "+16101234567").putBoolean("notify_of_new_users", true).build());
mockRecipientResolve("+16101234567", 1);
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
JobData converted = subject.migrate(testData);
assertEquals("DirectoryRefreshJob", converted.getFactoryKey());
assertEquals("DirectoryRefreshJob", converted.getQueueKey());
assertTrue(converted.getData().getBoolean("notify_of_new_users"));
assertEquals("1", converted.getData().getString("recipient"));
assertFalse(converted.getData().hasString("address"));
new DirectoryRefreshJob.Factory().create(mock(Job.Parameters.class), converted.getData());
}
use of org.thoughtcrime.securesms.jobs.DirectoryRefreshJob in project Signal-Android by WhisperSystems.
the class LegacyMigrationJob method performMigration.
@Override
void performMigration() throws RetryLaterException {
Log.i(TAG, "Running background upgrade..");
int lastSeenVersion = VersionTracker.getLastSeenVersion(context);
MasterSecret masterSecret = KeyCachingService.getMasterSecret(context);
if (lastSeenVersion < SQLCIPHER && masterSecret != null) {
SignalDatabase.onApplicationLevelUpgrade(context, masterSecret, lastSeenVersion, (progress, total) -> {
Log.i(TAG, "onApplicationLevelUpgrade: " + progress + "/" + total);
});
} else if (lastSeenVersion < SQLCIPHER) {
throw new RetryLaterException();
}
if (lastSeenVersion < NO_V1_VERSION) {
File v1sessions = new File(context.getFilesDir(), "sessions");
if (v1sessions.exists() && v1sessions.isDirectory()) {
File[] contents = v1sessions.listFiles();
if (contents != null) {
for (File session : contents) {
session.delete();
}
}
v1sessions.delete();
}
}
if (lastSeenVersion < SIGNED_PREKEY_VERSION) {
CreateSignedPreKeyJob.enqueueIfNeeded();
}
if (lastSeenVersion < NO_DECRYPT_QUEUE_VERSION) {
scheduleMessagesInPushDatabase(context);
}
if (lastSeenVersion < PUSH_DECRYPT_SERIAL_ID_VERSION) {
scheduleMessagesInPushDatabase(context);
}
if (lastSeenVersion < MIGRATE_SESSION_PLAINTEXT) {
// new TextSecureSessionStore(context, masterSecret).migrateSessions();
// new TextSecurePreKeyStore(context, masterSecret).migrateRecords();
scheduleMessagesInPushDatabase(context);
;
}
if (lastSeenVersion < CONTACTS_ACCOUNT_VERSION) {
ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false));
}
if (lastSeenVersion < MEDIA_DOWNLOAD_CONTROLS_VERSION) {
schedulePendingIncomingParts(context);
}
if (lastSeenVersion < REDPHONE_SUPPORT_VERSION) {
ApplicationDependencies.getJobManager().add(new RefreshAttributesJob());
ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false));
}
if (lastSeenVersion < PROFILES) {
ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(false));
}
if (lastSeenVersion < SCREENSHOTS) {
boolean screenSecurity = PreferenceManager.getDefaultSharedPreferences(context).getBoolean(TextSecurePreferences.SCREEN_SECURITY_PREF, true);
TextSecurePreferences.setScreenSecurityEnabled(context, screenSecurity);
}
if (lastSeenVersion < PERSISTENT_BLOBS) {
File externalDir = context.getExternalFilesDir(null);
if (externalDir != null && externalDir.isDirectory() && externalDir.exists()) {
for (File blob : externalDir.listFiles()) {
if (blob.exists() && blob.isFile())
blob.delete();
}
}
}
if (lastSeenVersion < INTERNALIZE_CONTACTS) {
if (SignalStore.account().isRegistered()) {
TextSecurePreferences.setHasSuccessfullyRetrievedDirectory(context, true);
}
}
if (lastSeenVersion < SQLCIPHER) {
scheduleMessagesInPushDatabase(context);
}
if (lastSeenVersion < SQLCIPHER_COMPLETE) {
File file = context.getDatabasePath("messages.db");
if (file != null && file.exists())
file.delete();
}
if (lastSeenVersion < REMOVE_JOURNAL) {
File file = context.getDatabasePath("messages.db-journal");
if (file != null && file.exists())
file.delete();
}
if (lastSeenVersion < REMOVE_CACHE) {
FileUtils.deleteDirectoryContents(context.getCacheDir());
}
if (lastSeenVersion < IMAGE_CACHE_CLEANUP) {
FileUtils.deleteDirectoryContents(context.getExternalCacheDir());
GlideApp.get(context).clearDiskCache();
}
if (lastSeenVersion < COLOR_MIGRATION) {
long startTime = System.currentTimeMillis();
// noinspection deprecation
SignalDatabase.recipients().updateSystemContactColors();
Log.i(TAG, "Color migration took " + (System.currentTimeMillis() - startTime) + " ms");
}
if (lastSeenVersion < UNIDENTIFIED_DELIVERY) {
Log.i(TAG, "Scheduling UD attributes refresh.");
ApplicationDependencies.getJobManager().add(new RefreshAttributesJob());
}
if (lastSeenVersion < SIGNALING_KEY_DEPRECATION) {
Log.i(TAG, "Scheduling a RefreshAttributesJob to remove the signaling key remotely.");
ApplicationDependencies.getJobManager().add(new RefreshAttributesJob());
}
}
use of org.thoughtcrime.securesms.jobs.DirectoryRefreshJob in project Signal-Android by signalapp.
the class DirectoryRefreshListener method onAlarm.
@Override
protected long onAlarm(Context context, long scheduledTime) {
if (scheduledTime != 0 && SignalStore.account().isRegistered()) {
ApplicationDependencies.getJobManager().add(new DirectoryRefreshJob(true));
}
long interval = TimeUnit.SECONDS.toMillis(FeatureFlags.cdsRefreshIntervalSeconds());
long newTime = System.currentTimeMillis() + interval;
TextSecurePreferences.setDirectoryRefreshTime(context, newTime);
return newTime;
}
use of org.thoughtcrime.securesms.jobs.DirectoryRefreshJob in project Signal-Android by signalapp.
the class RecipientIdJobMigrationTest method migrate_directoryRefreshJob_null.
@Test
public void migrate_directoryRefreshJob_null() throws Exception {
JobData testData = new JobData("DirectoryRefreshJob", "DirectoryRefreshJob", new Data.Builder().putString("address", null).putBoolean("notify_of_new_users", true).build());
RecipientIdJobMigration subject = new RecipientIdJobMigration(mock(Application.class));
JobData converted = subject.migrate(testData);
assertEquals("DirectoryRefreshJob", converted.getFactoryKey());
assertEquals("DirectoryRefreshJob", converted.getQueueKey());
assertNull(converted.getData().getString("recipient"));
assertTrue(converted.getData().getBoolean("notify_of_new_users"));
assertFalse(converted.getData().hasString("address"));
new DirectoryRefreshJob.Factory().create(mock(Job.Parameters.class), converted.getData());
}
Aggregations