package com.malmstein.yahnac.data.updater;
import android.content.Context;
import android.content.SharedPreferences;
import com.malmstein.yahnac.BuildConfig;
import com.malmstein.yahnac.HNewsApplication;
import com.malmstein.yahnac.login.InputFieldValidator;
import com.malmstein.yahnac.model.Login;
public class LoginSharedPreferences {
public static final String EMPTY_VALUE = "";
private static final String PREFERENCE_NAME = BuildConfig.APPLICATION_ID + ".LOGIN_PREFERENCES";
private static final String KEY_COOKIE = BuildConfig.APPLICATION_ID + ".KEY_COOKIE";
private static final String KEY_USERNAME = BuildConfig.APPLICATION_ID + ".KEY_USERNAME";
private final SharedPreferences preferences;
private LoginSharedPreferences(SharedPreferences preferences) {
this.preferences = preferences;
}
public static LoginSharedPreferences newInstance() {
SharedPreferences preferences = HNewsApplication.context().getSharedPreferences(PREFERENCE_NAME, Context.MODE_PRIVATE);
return new LoginSharedPreferences(preferences);
}
public void saveLogin(Login login) {
if (login.getStatus() == Login.Status.SUCCESSFUL) {
preferences.edit().putString(KEY_COOKIE, login.getCookie()).apply();
preferences.edit().putString(KEY_USERNAME, login.getUsername()).apply();
} else {
logout();
}
}
public Login getLogin() {
InputFieldValidator inputFieldValidator = new InputFieldValidator();
String cookie = preferences.getString(KEY_COOKIE, EMPTY_VALUE);
if (inputFieldValidator.isValid(cookie)) {
return new Login(preferences.getString(KEY_USERNAME, EMPTY_VALUE), cookie, Login.Status.SUCCESSFUL);
} else {
return new Login(EMPTY_VALUE, EMPTY_VALUE, Login.Status.WRONG_CREDENTIALS);
}
}
public boolean isLoggedIn() {
return getLogin().getStatus() == Login.Status.SUCCESSFUL;
}
public String getCookie() {
return getLogin().getCookie();
}
public void logout() {
preferences.edit().putString(KEY_COOKIE, EMPTY_VALUE).apply();
preferences.edit().putString(KEY_USERNAME, EMPTY_VALUE).apply();
}
}