diff options
Diffstat (limited to 'mobile/android/thirdparty/com/keepsafe/switchboard/Preferences.java')
-rw-r--r-- | mobile/android/thirdparty/com/keepsafe/switchboard/Preferences.java | 105 |
1 files changed, 105 insertions, 0 deletions
diff --git a/mobile/android/thirdparty/com/keepsafe/switchboard/Preferences.java b/mobile/android/thirdparty/com/keepsafe/switchboard/Preferences.java new file mode 100644 index 000000000..f7f6f7cb7 --- /dev/null +++ b/mobile/android/thirdparty/com/keepsafe/switchboard/Preferences.java @@ -0,0 +1,105 @@ +/* + Copyright 2012 KeepSafe Software Inc. + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. +*/ +package com.keepsafe.switchboard; + + +import android.content.Context; +import android.content.SharedPreferences; +import android.support.annotation.Nullable; + +/** + * Application preferences for SwitchBoard. + * @author Philipp Berner + * + */ +public class Preferences { + + private static final String switchBoardSettings = "com.keepsafe.switchboard.settings"; + + private static final String CONFIG_JSON = "config-json"; + private static final String OVERRIDE_PREFIX = "experiment.override."; + + + /** + * Gets the user config as a JSON string. + * @param c Context + * @return Config JSON + */ + @Nullable public static String getDynamicConfigJson(Context c) { + final SharedPreferences prefs = c.getApplicationContext().getSharedPreferences(switchBoardSettings, Context.MODE_PRIVATE); + return prefs.getString(CONFIG_JSON, null); + } + + /** + * Saves the user config as a JSON sting. + * @param c Context + * @param configJson Config JSON + */ + public static void setDynamicConfigJson(Context c, String configJson) { + final SharedPreferences.Editor editor = c.getApplicationContext(). + getSharedPreferences(switchBoardSettings, Context.MODE_PRIVATE).edit(); + editor.putString(CONFIG_JSON, configJson); + editor.apply(); + } + + /** + * Gets the override value for an experiment. + * + * @param c Context + * @param experimentName Experiment name + * @return Whether or not the experiment should be enabled, or null if there is no override. + */ + @Nullable public static Boolean getOverrideValue(Context c, String experimentName) { + final SharedPreferences prefs = c.getApplicationContext(). + getSharedPreferences(switchBoardSettings, Context.MODE_PRIVATE); + + final String key = OVERRIDE_PREFIX + experimentName; + if (prefs.contains(key)) { + // This will never fall back to the default value. + return prefs.getBoolean(key, false); + } + + // Default to returning null if no override was found. + return null; + } + + /** + * Saves an override value for an experiment. + * + * @param c Context + * @param experimentName Experiment name + * @param isEnabled Whether or not to enable the experiment + */ + public static void setOverrideValue(Context c, String experimentName, boolean isEnabled) { + final SharedPreferences.Editor editor = c.getApplicationContext(). + getSharedPreferences(switchBoardSettings, Context.MODE_PRIVATE).edit(); + editor.putBoolean(OVERRIDE_PREFIX + experimentName, isEnabled); + editor.apply(); + } + + /** + * Clears the override value for an experiment. + * + * @param c Context + * @param experimentName Experiment name + */ + public static void clearOverrideValue(Context c, String experimentName) { + final SharedPreferences.Editor editor = c.getApplicationContext(). + getSharedPreferences(switchBoardSettings, Context.MODE_PRIVATE).edit(); + editor.remove(OVERRIDE_PREFIX + experimentName); + editor.apply(); + } +} |