package com.seafile.seadroid2.avatar; import java.util.*; import com.seafile.seadroid2.SeadroidApplication; import com.seafile.seadroid2.account.AccountManager; import org.json.JSONObject; import com.google.common.collect.Lists; import com.seafile.seadroid2.account.Account; import com.seafile.seadroid2.util.Utils; /** * load, cache, update avatars * */ public class AvatarManager { private static final String DEBUG_TAG = "AvatarManager"; private final AvatarDBHelper dbHelper = AvatarDBHelper.getAvatarDbHelper(); private List<Avatar> avatars; private AccountManager accountMgr; public AvatarManager() { this.avatars = Lists.newArrayList(); this.accountMgr = new AccountManager(SeadroidApplication.getAppContext()); } /** * get accounts who don`t have avatars yet * * @return ArrayList<Account> */ public ArrayList<Account> getAccountsWithoutAvatars() { List<Account> accounts = accountMgr.getAccountList(); if (accounts == null) return null; ArrayList<Account> accountsWithoutAvatar = Lists.newArrayList(); for (Account account : accounts) { if (!hasAvatar(account)) { accountsWithoutAvatar.add(account); } } return accountsWithoutAvatar; } private boolean hasAvatar(Account account) { return dbHelper.hasAvatar(account); } public boolean isNeedToLoadNewAvatars() { ArrayList<Account> accounts = getAccountsWithoutAvatars(); if (accounts == null || accounts.size() ==0) return false; else return true; } public List<Avatar> getAvatarList() { return dbHelper.getAvatarList(); } public void saveAvatarList(List<Avatar> avatars) { dbHelper.saveAvatars(avatars); } public Avatar parseAvatar(String json) { if (json == null) return null; JSONObject obj = Utils.parseJsonObject(json); if (obj == null) return null; Avatar avatar = Avatar.fromJson(obj); if (avatar == null) return null; return avatar; } }