package com.caij.emore.account;
import android.content.SharedPreferences;
import android.text.TextUtils;
import com.caij.emore.EMApplication;
import com.caij.emore.event.EventTag;
import com.caij.emore.utils.GsonUtils;
import com.caij.lib.util.SPBuilder;
import com.caij.emore.utils.rxbus.RxBus;
import com.google.gson.reflect.TypeToken;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
/**
* Created by Ca1j on 2017/2/23.
*/
public class UP {
private static final String ACCOUNT = "account_sp";
private static final String TOKENS = "tokens";
private static final SharedPreferences sharedPreferences;
static {
sharedPreferences = new SPBuilder(EMApplication.getInstance())
.open(ACCOUNT);
}
public static List<Token> loadTokens() {
String tokensStr = sharedPreferences.getString(TOKENS, null);
if (!TextUtils.isEmpty(tokensStr)) {
List<Token> tokens = GsonUtils.fromJson(tokensStr, new TypeToken<List<Token>>(){}.getType());
if (tokens != null && tokens.size() > 0) {
return tokens;
}
}
return null;
}
public static void switchAccount(Token token) {
if (token == null) throw new NullPointerException();
List<Token> tokens = loadTokens();
List<Token> saves = new ArrayList<>();
token.setStatus(Token.STATUS_USING);
saves.add(token);
if (tokens != null && tokens.size() > 0) {
for (int i = 0 ; i < tokens.size(); i ++) {
Token temp = tokens.get(i);
if (temp.uid != token.uid) {
temp.setStatus(Token.STATUS_BACKGROUND);
saves.add(temp);
}
}
}
saveTokens(saves);
}
public static void deleteAccount(Token token) {
List<Token> tokens = loadTokens();
if (tokens != null && tokens.size() > 0) {
Iterator<Token> tokenIterator = tokens.iterator();
while (tokenIterator.hasNext()) {
Token t = tokenIterator.next();
if (t.uid == token.uid) {
tokenIterator.remove();
break;
}
}
}
saveTokens(tokens);
}
private static void saveTokens(List<Token> tokens) {
sharedPreferences.edit()
.putString(TOKENS, GsonUtils.toJson(tokens))
.apply();
RxBus.get().post(EventTag.EVENT_TOKEN_UPDATE, tokens);
}
}