package com.nilhcem.bblfr.core.prefs;
import android.app.Application;
import android.content.Context;
import android.content.SharedPreferences;
import android.util.Pair;
import com.nilhcem.bblfr.model.baggers.City;
import java.util.Date;
import javax.inject.Inject;
import javax.inject.Singleton;
@Singleton
public class Preferences {
public static final String PREFS_NAME = "bblfr";
static final String KEY_LAST_DOWNLOAD = "last_download_date";
static final String KEY_FAV_CITY_LAT = "city_lat";
static final String KEY_FAV_CITY_LNG = "city_lng";
static final String KEY_HR_MODE = "hr_mode";
static final String KEY_RESET_DB = "reset_db";
private SharedPreferences mPrefs;
/* In-memory data */
City mCity;
@Inject
public Preferences(Application app) {
mPrefs = app.getSharedPreferences(PREFS_NAME, Context.MODE_PRIVATE);
}
public long getLastDownloadDate() {
return mPrefs.getLong(KEY_LAST_DOWNLOAD, 0L);
}
public void setDownloadDate() {
mPrefs.edit()
.putLong(KEY_LAST_DOWNLOAD, new Date().getTime())
.remove(KEY_RESET_DB)
.apply();
}
public Pair<String, String> getFavoriteCityLatLng() {
String lat = mPrefs.getString(KEY_FAV_CITY_LAT, null);
String lng = mPrefs.getString(KEY_FAV_CITY_LNG, null);
if (lat == null || lng == null) {
return null;
}
return Pair.create(lat, lng);
}
public void setFavoriteCity(City city) {
mPrefs.edit()
.putString(KEY_FAV_CITY_LAT, city.lat.toString())
.putString(KEY_FAV_CITY_LNG, city.lng.toString())
.apply();
keepInMemory(city);
}
public void reset() {
// keep KEY_HR_MODE value
mPrefs.edit()
.remove(KEY_LAST_DOWNLOAD)
.remove(KEY_FAV_CITY_LAT)
.remove(KEY_FAV_CITY_LNG)
.putBoolean(KEY_RESET_DB, true)
.apply();
}
public void keepInMemory(City city) {
mCity = city;
}
public City getCity() {
return mCity;
}
public boolean isUsingHrMode() {
return mPrefs.getBoolean(KEY_HR_MODE, false);
}
public void toggleMode() {
mPrefs.edit()
.putBoolean(KEY_HR_MODE, !isUsingHrMode())
.remove(KEY_LAST_DOWNLOAD)
.putBoolean(KEY_RESET_DB, true)
.apply();
}
public boolean shouldResetData() {
return mPrefs.getBoolean(KEY_RESET_DB, false);
}
}