/*
* Copyright (C) 2015 Actor LLC. <https://actor.im>
*/
package im.actor.runtime.android.storage;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Base64;
import im.actor.runtime.storage.PreferencesStorage;
public class AndroidProperties implements PreferencesStorage {
private final Context context;
private boolean isLoaded = false;
private SharedPreferences preference;
public AndroidProperties(Context context) {
this.context = context;
load();
}
private void load() {
if (!isLoaded) {
isLoaded = true;
this.preference = context.getSharedPreferences("properties.ini", Context.MODE_PRIVATE);
}
}
@Override
public synchronized void putLong(String key, long v) {
load();
preference.edit().putLong(key, v).commit();
}
@Override
public synchronized long getLong(String key, long def) {
load();
return preference.getLong(key, def);
}
@Override
public synchronized void putInt(String key, int v) {
load();
preference.edit().putInt(key, v).commit();
}
@Override
public synchronized int getInt(String key, int def) {
load();
return preference.getInt(key, def);
}
@Override
public synchronized void putBool(String key, boolean v) {
load();
preference.edit().putBoolean(key, v).commit();
}
@Override
public synchronized boolean getBool(String key, boolean def) {
load();
return preference.getBoolean(key, def);
}
@Override
public synchronized void putBytes(String key, byte[] v) {
load();
if (v != null) {
preference.edit().putString(key, Base64.encodeToString(v, Base64.DEFAULT)).commit();
} else {
preference.edit().remove(key).commit();
}
}
@Override
public synchronized byte[] getBytes(String key) {
load();
String v = preference.getString(key, null);
if (v != null) {
return Base64.decode(v, Base64.DEFAULT);
} else {
return null;
}
}
@Override
public synchronized void putString(String key, String v) {
load();
preference.edit().putString(key, v).commit();
}
@Override
public synchronized String getString(String key) {
load();
return preference.getString(key, null);
}
public synchronized void clear() {
load();
preference.edit().clear().commit();
}
}