package starter.kit.account;
import android.content.Context;
import android.text.TextUtils;
import starter.kit.app.RxStarterApp;
import starter.kit.model.entity.Account;
public enum AccountManager {
INSTANCE;
private final AuthPreferences authPreferences;
private Account mCurrentAccount;
private Context mContext;
AccountManager() {
mContext = RxStarterApp.appContext();
authPreferences = new AuthPreferences(mContext);
}
public boolean isLogin() {
return authPreferences.isLogin();
}
public void logout() {
mCurrentAccount = null;
authPreferences.clear();
}
public void storeAccount(Account account) {
mCurrentAccount = account;
authPreferences.setToken(account.token());
authPreferences.setUser(account.name());
authPreferences.setUserData(account.toJson());
}
public String token() {
return authPreferences.getToken();
}
public String user() {
return authPreferences.getUser();
}
@SuppressWarnings("unchecked") public <T extends Account> T getCurrentAccount() {
if (mCurrentAccount == null) {
String accountJson = authPreferences.getUserData();
if (!TextUtils.isEmpty(accountJson) && mContext instanceof AccountProvider) {
mCurrentAccount = ((AccountProvider) mContext).provideAccount(accountJson);
}
}
return (T) mCurrentAccount;
}
}