package org.thoughtcrime.securesms; import android.content.Context; import androidx.annotation.NonNull; import org.thoughtcrime.securesms.dependencies.ApplicationDependencies; import org.thoughtcrime.securesms.insights.InsightsOptOut; import org.thoughtcrime.securesms.jobmanager.JobManager; import org.thoughtcrime.securesms.jobs.StickerPackDownloadJob; import org.thoughtcrime.securesms.keyvalue.SignalStore; import org.thoughtcrime.securesms.logging.Log; import org.thoughtcrime.securesms.migrations.ApplicationMigrations; import org.thoughtcrime.securesms.stickers.BlessedPacks; import org.thoughtcrime.securesms.util.TextSecurePreferences; import org.thoughtcrime.securesms.util.Util; /** * Rule of thumb: if there's something you want to do on the first app launch that involves * persisting state to the database, you'll almost certainly *also* want to do it post backup * restore, since a backup restore will wipe the current state of the database. */ public final class AppInitialization { private static final String TAG = Log.tag(AppInitialization.class); private AppInitialization() {} public static void onFirstEverAppLaunch(@NonNull Context context) { Log.i(TAG, "onFirstEverAppLaunch()"); 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()); TextSecurePreferences.setReadReceiptsEnabled(context, true); TextSecurePreferences.setTypingIndicatorsEnabled(context, true); TextSecurePreferences.setHasSeenWelcomeScreen(context, false); 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())); } public static void onPostBackupRestore(@NonNull Context context) { Log.i(TAG, "onPostBackupRestore()"); 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())); } }