package de.eisfeldj.augendiagnose;
import android.app.Activity;
import android.content.Intent;
import android.support.annotation.NonNull;
import de.eisfeldj.augendiagnose.activities.MainActivity;
import de.jeisfeld.augendiagnoselib.Application.AuthorizationLevel;
import de.jeisfeld.augendiagnoselib.util.AdMarvelUtil;
import de.jeisfeld.augendiagnoselib.util.PreferenceUtil;
import edu.umd.cs.findbugs.annotations.SuppressFBWarnings;
/**
* Utility class to hold private constants.
*/
@SuppressFBWarnings(value = "NM_SAME_SIMPLE_NAME_AS_SUPERCLASS",
justification = "Intentionally using same name as superclass")
public final class ApplicationSettings extends de.jeisfeld.augendiagnoselib.ApplicationSettings {
/**
* An instance of this class.
*/
private static volatile ApplicationSettings mInstance;
/**
* Keep constructor private.
*/
private ApplicationSettings() {
}
/**
* Get an instance of this class.
*
* @return An instance of this class.
*/
public static ApplicationSettings getInstance() {
if (mInstance == null) {
mInstance = new ApplicationSettings();
}
return mInstance;
}
@Override
protected AuthorizationLevel getAuthorizationLevel() {
AuthorizationLevel level = super.getAuthorizationLevel();
String userKey = PreferenceUtil.getSharedPreferenceString(R.string.key_user_key);
if (userKey != null && userKey.startsWith(AdMarvelUtil.FORCE_AD_USER)) {
return AuthorizationLevel.FULL_ACCESS_WITH_ADS;
}
int initialVersion = PreferenceUtil.getSharedPreferenceInt(R.string.key_statistics_initialversion, 45); // MAGIC_NUMBER
if (initialVersion <= 44) { // MAGIC_NUMBER
// Special handling for "old" users that may keep full functionality.
return level == AuthorizationLevel.FULL_ACCESS ? AuthorizationLevel.FULL_ACCESS : AuthorizationLevel.FULL_ACCESS_WITH_ADS;
}
else {
return level;
}
}
@Override
public void startApplication(@NonNull final Activity triggeringActivity) {
Intent intent = new Intent(triggeringActivity, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
triggeringActivity.startActivity(intent);
}
}