package org.solovyev.android.calculator;
import android.content.ActivityNotFoundException;
import android.content.DialogInterface;
import android.content.Intent;
import android.content.SharedPreferences;
import android.net.Uri;
import android.os.Bundle;
import android.support.annotation.NonNull;
import android.support.v7.app.AlertDialog;
import android.support.v7.app.AppCompatActivity;
import org.solovyev.android.calculator.wizard.CalculatorWizards;
import org.solovyev.android.wizard.Wizard;
import org.solovyev.android.wizard.Wizards;
import javax.inject.Inject;
import javax.inject.Named;
import javax.inject.Singleton;
import static org.solovyev.android.calculator.release.ReleaseNotes.hasReleaseNotes;
import static org.solovyev.android.wizard.WizardUi.*;
@Singleton
public class StartupHelper {
@Named(AppModule.PREFS_UI)
@Inject
SharedPreferences uiPreferences;
@Inject
SharedPreferences preferences;
@Inject
Wizards wizards;
@Inject
public StartupHelper() {
}
public void onMainActivityOpened(@NonNull AppCompatActivity activity) {
final SharedPreferences.Editor editor = uiPreferences.edit();
final Integer opened = UiPreferences.opened.getPreference(uiPreferences);
UiPreferences.opened.putPreference(editor, opened == null ? 1 : opened + 1);
handleOnMainActivityOpened(activity, editor, opened == null ? 0 : opened);
UiPreferences.appVersion.putPreference(editor, App.getAppVersionCode(activity));
editor.apply();
}
private void handleOnMainActivityOpened(@NonNull final AppCompatActivity activity, @NonNull SharedPreferences.Editor editor, int opened) {
final int currentVersion = App.getAppVersionCode(activity);
final Wizard wizard = wizards.getWizard(CalculatorWizards.FIRST_TIME_WIZARD);
if (wizard.isStarted() && !wizard.isFinished()) {
continueWizard(wizards, wizard.getName(), activity);
return;
}
if (!UiPreferences.appVersion.isSet(uiPreferences)) {
// new start
startWizard(wizards, activity);
return;
}
final Integer savedVersion = UiPreferences.appVersion.getPreference(uiPreferences);
if (savedVersion < currentVersion) {
if (Preferences.Gui.showReleaseNotes.getPreference(preferences) && hasReleaseNotes(activity, savedVersion + 1)) {
final Bundle bundle = new Bundle();
bundle.putInt(CalculatorWizards.RELEASE_NOTES_VERSION, savedVersion);
activity.startActivity(createLaunchIntent(wizards, CalculatorWizards.RELEASE_NOTES, activity, bundle));
return;
}
}
if (shouldShowRateUsDialog(opened)) {
final AlertDialog.Builder builder = new AlertDialog.Builder(activity, App.getTheme().alertDialogTheme);
builder.setPositiveButton(R.string.cpp_rateus_ok, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
try {
final Intent intent = new Intent(Intent.ACTION_VIEW);
intent.setData(Uri.parse("https://market.android.com/details?id=org.solovyev.android.calculator"));
activity.startActivity(intent);
} catch (ActivityNotFoundException ignored) {
}
}
});
builder.setNegativeButton(R.string.cpp_rateus_cancel, null);
builder.setMessage(activity.getString(R.string.cpp_rateus_message, activity.getString(R.string.cpp_app_name)));
builder.setTitle(activity.getString(R.string.cpp_rateus_title, activity.getString(R.string.cpp_app_name)));
builder.create().show();
UiPreferences.rateUsShown.putPreference(editor, true);
}
}
private boolean shouldShowRateUsDialog(int opened) {
return opened > 30 && !UiPreferences.rateUsShown.getPreference(uiPreferences);
}
}