package com.brink.main.api;
import java.util.Hashtable;
import java.util.Map;
import com.brink.main.contracts.ILogin;
import com.brink.main.contracts.LoginType;
import com.brink.main.models.User;
import android.content.SharedPreferences;
public class LoginApiManager {
private SharedPreferences _manager;
private static String PREFS_FILENAME = "User_DataStore";
public LoginApiManager() {
_manager = ApiManager.MainActivity.getSharedPreferences(PREFS_FILENAME, 0);
}
public void ClearStoredUser() {
SharedPreferences.Editor editor = _manager.edit();
editor.clear();
editor.apply();
}
public User GetStoredUser() {
User user = new User();
user.Id = _manager.getString("user_id", null);
user.Login = GetLoginByType(_manager);
user.Login.Initialize(user);
return user.Id == null ? null : user;
}
public void SetStoredUser(User user) {
ILogin login = user.Login;
SharedPreferences.Editor editor = _manager.edit();
editor.clear();
editor.putString("user_id", user.Id);
editor.putString("user_loginType", login.GetLoginType().toString()); // FacebookLogin/NativeLogin
login.SetStoredPreferences(editor); // Let each implementation save their data
editor.apply();
}
public static ILogin CreateNativeLogin(String userId, String passwordHash) {
User user = new User();
user.email = userId;
NativeLogin login = new NativeLogin();
login.PasswordHash = passwordHash;
login.Initialize(user);
return login;
}
public static ILogin GetLoginByType(SharedPreferences preferences) {
LoginType loginType = LoginType.valueOf(preferences.getString("user_loginType", "Native"));
switch (loginType) {
case Native:
NativeLogin login = new NativeLogin();
return login.FromPreferences(preferences);
}
return null;
}
}