package kc.spark.pixels.android.storage;
import static org.solemnsilence.util.Py.list;
import java.util.List;
//import kc.get.pixel.list.android.ui.tinker.PinAction;
import android.content.Context;
import android.content.SharedPreferences;
public class Prefs {
private static final String BUCKET_NAME = "defaultPrefsBucket";
private static final String KEY_USERNAME = "username";
private static final String KEY_TOKEN = "token";
private static final String KEY_COMPLETED_FIRST_LOGIN = "completedFirstLogin";
private static final String KEY_CORES_JSON_ARRAY = "coresJsonArray";
private static final String KEY_PIN_CONFIG_TEMPLATE = "corePinConfig_core-$1%s_pin-$2%s";
private static Prefs instance = null;
// making this a singleton to avoid having to pass around Context everywhere
// that this info is needed. Kind of cheating, but in practice, it will be
// fine here.
public static Prefs getInstance() {
return instance;
}
public static void initialize(Context ctx) {
instance = new Prefs(ctx);
}
private final SharedPreferences prefs;
private Prefs(Context context) {
prefs = context.getApplicationContext()
.getSharedPreferences(BUCKET_NAME, Context.MODE_PRIVATE);
}
public String getUsername() {
return prefs.getString(KEY_USERNAME, null);
}
public void saveUsername(String username) {
saveString(KEY_USERNAME, username);
}
public String getToken() {
return prefs.getString(KEY_TOKEN, null);
}
public void saveToken(String token) {
saveString(KEY_TOKEN, token);
}
public boolean getCompletedFirstLogin() {
return prefs.getBoolean(KEY_COMPLETED_FIRST_LOGIN, false);
}
public void saveCompletedFirstLogin(boolean value) {
prefs.edit().putBoolean(KEY_COMPLETED_FIRST_LOGIN, value).commit();
}
public String getCoresJsonArray() {
return prefs.getString(KEY_CORES_JSON_ARRAY, "[]");
}
public void saveCoresJsonArray(String coresJson) {
saveString(KEY_CORES_JSON_ARRAY, coresJson);
}
/*
public PinAction getPinFunction(String coreId, String pinName) {
String key = String.format(KEY_PIN_CONFIG_TEMPLATE, coreId, pinName);
return PinAction.valueOf(
prefs.getString(key, PinAction.NONE.name()));
}
public void savePinFunction(String coreId, String pinName, PinAction function) {
String key = String.format(KEY_PIN_CONFIG_TEMPLATE, coreId, pinName);
applyString(key, function.name());
}
public void clearTinker(String coreId) {
List<String> pinNames = list("A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "D0", "D1",
"D2", "D3", "D4", "D5", "D6", "D7");
for (String pinName : pinNames) {
savePinFunction(coreId, pinName, PinAction.NONE);
}
}
*/
public void clear() {
boolean completed = getCompletedFirstLogin();
String username = getUsername();
prefs.edit().clear().commit();
saveCompletedFirstLogin(completed);
saveUsername(username);
}
private void saveString(String key, String value) {
prefs.edit().putString(key, value).commit();
}
private void applyString(String key, String value) {
prefs.edit().putString(key, value).apply();
}
}