package org.aisen.weibo.sina.base; import org.aisen.weibo.sina.support.action.DoLikeAction; import org.aisen.weibo.sina.support.bean.AccountBean; import org.aisen.weibo.sina.support.db.AccountDB; import org.aisen.weibo.sina.support.db.SinaDB; import org.aisen.weibo.sina.sys.service.OfflineService; import org.aisen.weibo.sina.sys.service.UnreadService; import org.aisen.weibo.sina.sinasdk.bean.AccessToken; import org.aisen.weibo.sina.sinasdk.bean.Groups; import org.aisen.weibo.sina.sinasdk.bean.Token; import org.aisen.weibo.sina.sinasdk.bean.UnreadCount; import org.aisen.weibo.sina.sinasdk.bean.WeiBoUser; import java.util.List; /** * Created by wangdan on 15/4/12. */ public class AppContext { private static AccountBean accountBean;// 当前登录的用户信息 private static UnreadCount unreadCount; private static AccessToken advancedToken; public static boolean isLogedin() { return accountBean != null; } /** * 刷新登录用户的用户,分组信息 * * @param user * @param groups */ public static void refresh(WeiBoUser user, Groups groups) { AppContext.accountBean.setUser(user); AppContext.accountBean.setGroups(groups); // 刷新DB的信息 AccountDB.newAccount(AppContext.accountBean); } public static void login(AccountBean accountBean) { boolean startUnreadService = AppContext.accountBean == null || !AppContext.accountBean.getUser().getIdstr().equals(accountBean.getUser().getIdstr()); AppContext.accountBean = accountBean; // 未读消息重置 if (AppContext.getUnreadCount() == null || startUnreadService) { AppContext.unreadCount = UnreadService.getUnreadCount(); } if (AppContext.unreadCount == null) AppContext.unreadCount = new UnreadCount(); // 开启未读服务 if (startUnreadService) UnreadService.startService(); // 检查更新变化 // CheckChangedUtils.check(AppContext.getUser(), AppContext.getToken()); // 刷新定时任务 MyApplication.refreshPublishAlarm(); // 处理点赞数据 DoLikeAction.refreshLikeCache(); // 停止离线服务 if (OfflineService.getInstance() != null) OfflineService.stopOffline(); if (accountBean.getAdvancedToken() != null) AppContext.setAdvancedToken(accountBean.getAdvancedToken()); else { // 读取高级token List<AccessToken> token = SinaDB.getSqlite().select(null, AccessToken.class); if (token.size() > 0) AppContext.setAdvancedToken(token.get(0)); } MyApplication.setDebugAccount(accountBean); } public static void logout() { // 停止未读服务 UnreadService.stopService(); // 移除定时任务 MyApplication.removeAllPublishAlarm(); // 清理登录的账号 AccountDB.setLogedinAccount(null); // 退出账号 accountBean = null; } public static Token getToken() { if (!isLogedin()) return null; return accountBean.getToken(); } public static WeiBoUser getUser() { if (!isLogedin()) return null; return accountBean.getUser(); } public static Groups getGroups() { if (!isLogedin()) return null; return accountBean.getGroups(); } public static AccountBean getAccount() { return AppContext.accountBean; } public static void setUnreadCount(UnreadCount unreadCount) { AppContext.unreadCount = unreadCount; } public static UnreadCount getUnreadCount() { return AppContext.unreadCount; } public static AccessToken getAdvancedToken() { return advancedToken; } public static void setAdvancedToken(AccessToken token) { advancedToken = token; } }