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; } }