diff --git a/app/src/main/java/org/thoughtcrime/securesms/AppInitialization.java b/app/src/main/java/org/thoughtcrime/securesms/AppInitialization.java index ca811b7b9b..9f08460ff0 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/AppInitialization.java +++ b/app/src/main/java/org/thoughtcrime/securesms/AppInitialization.java @@ -58,4 +58,25 @@ public final class AppInitialization { ApplicationDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_HANDS.getPackId(), BlessedPacks.SWOON_HANDS.getPackKey())); ApplicationDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_FACES.getPackId(), BlessedPacks.SWOON_FACES.getPackKey())); } + + /** + * Temporary migration method that does the safest bits of {@link #onFirstEverAppLaunch(Context)} + */ + public static void onRepairFirstEverAppLaunch(@NonNull Context context) { + Log.w(TAG, "onRepairFirstEverAppLaunch()"); + + InsightsOptOut.userRequestedOptOut(context); + TextSecurePreferences.setAppMigrationVersion(context, ApplicationMigrations.CURRENT_VERSION); + TextSecurePreferences.setJobManagerVersion(context, JobManager.CURRENT_VERSION); + TextSecurePreferences.setLastExperienceVersionCode(context, Util.getCanonicalVersionCode()); + TextSecurePreferences.setHasSeenStickerIntroTooltip(context, true); + TextSecurePreferences.setPasswordDisabled(context, true); + TextSecurePreferences.setLastExperienceVersionCode(context, Util.getCanonicalVersionCode()); + ApplicationDependencies.getMegaphoneRepository().onFirstEverAppLaunch(); + SignalStore.onFirstEverAppLaunch(); + ApplicationDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.ZOZO.getPackId(), BlessedPacks.ZOZO.getPackKey(), false)); + ApplicationDependencies.getJobManager().add(StickerPackDownloadJob.forInstall(BlessedPacks.BANDIT.getPackId(), BlessedPacks.BANDIT.getPackKey(), false)); + ApplicationDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_HANDS.getPackId(), BlessedPacks.SWOON_HANDS.getPackKey())); + ApplicationDependencies.getJobManager().add(StickerPackDownloadJob.forReference(BlessedPacks.SWOON_FACES.getPackId(), BlessedPacks.SWOON_FACES.getPackKey())); + } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java index ae5332a3aa..66e9837d72 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java +++ b/app/src/main/java/org/thoughtcrime/securesms/ApplicationContext.java @@ -79,6 +79,7 @@ import org.thoughtcrime.securesms.util.FeatureFlags; import org.thoughtcrime.securesms.util.SignalUncaughtExceptionHandler; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; +import org.thoughtcrime.securesms.util.VersionTracker; import org.thoughtcrime.securesms.util.dynamiclanguage.DynamicLanguageContextWrapper; import org.webrtc.voiceengine.WebRtcAudioManager; import org.webrtc.voiceengine.WebRtcAudioUtils; @@ -276,13 +277,16 @@ public class ApplicationContext extends MultiDexApplication implements DefaultLi private void initializeFirstEverAppLaunch() { if (TextSecurePreferences.getFirstInstallVersion(this) == -1) { - if (!SQLCipherOpenHelper.databaseFileExists(this)) { + if (!SQLCipherOpenHelper.databaseFileExists(this) || VersionTracker.getDaysSinceFirstInstalled(this) < 365) { Log.i(TAG, "First ever app launch!"); AppInitialization.onFirstEverAppLaunch(this); } Log.i(TAG, "Setting first install version to " + BuildConfig.CANONICAL_VERSION_CODE); TextSecurePreferences.setFirstInstallVersion(this, BuildConfig.CANONICAL_VERSION_CODE); + } else if (!TextSecurePreferences.isPasswordDisabled(this) && VersionTracker.getDaysSinceFirstInstalled(this) < 90) { + Log.i(TAG, "Detected a new install that doesn't have passphrases disabled -- assuming bad initialization."); + AppInitialization.onRepairFirstEverAppLaunch(this); } }