package com.xiaomi.xms.sales;
import android.app.Application;
import android.content.Context;
import com.xiaomi.xms.sales.cache.DbCache;
import com.xiaomi.xms.sales.loader.ImageLoader;
import com.xiaomi.xms.sales.request.HostManager;
import com.xiaomi.xms.sales.util.Constants;
import com.xiaomi.xms.sales.util.Device;
import com.xiaomi.xms.sales.util.ImageUtil;
import com.xiaomi.xms.sales.util.LogUtil;
import com.xiaomi.xms.sales.util.ThreadPool;
import com.xiaomi.xms.sales.util.Utils;
import com.xiaomi.xms.sales.xmsf.account.LoginManager;
import com.xiaomi.xms.sales.xmsf.account.LoginManager.AccountListener;
public class ShopApp extends Application implements AccountListener {
private static final String TAG = "ShopApp";
public static final String APP_ID = "1000276";
public static final String APP_TOKEN = "480100055276";
public static final String APP_PACKAGENAME = "com.xiaomi.xms.sales";
public static boolean DEBUG = false;
public static final String PREF_USER_DEBUG = "pref_user_debug";
private static Context sContext;
private static boolean sIsCookiesInited;
private static ShopApp sInstance;
@Override
public void onCreate() {
super.onCreate();
sContext = getApplicationContext();
ImageLoader.init(sContext);
ImageUtil.initProcessor(sContext);
Device.init(sContext);
LoginManager.init(sContext);
LoginManager.getInstance().addLoginListener(this);
sInstance = this;
CrashHandler crashHandler = CrashHandler.getInstance();
crashHandler.init(this);
}
public static ShopApp getInstance(){
return sInstance;
}
public static Context getContext() {
return sContext;
}
public static boolean isUserDebug() {
return ShopApp.DEBUG && Utils.Preference.getBooleanPref(sContext,
PREF_USER_DEBUG,
true);
}
public static void setUserPrefDebug(boolean debug) {
Utils.Preference.setBooleanPref(sContext, PREF_USER_DEBUG,
debug);
}
public static void initCookiesIfHaveNot() {
if (!sIsCookiesInited) {
sIsCookiesInited = true;
initCookies();
}
}
/**
* 为webview初始化全局cookie
*/
private static void initCookies() {
// 在cookie里加入标识,当webview访问m.xiaomi.com时返回特定页面
ThreadPool.execute(new Runnable() {
@Override
public void run() {
HostManager.initSettingCookies(sContext);
HostManager.setLoginCookies(sContext);
}
});
}
@Override
public void onLogin(String userId, String authToken, String security) {
LogUtil.d(TAG, "onLogin");
ThreadPool.execute(new Runnable() {
@Override
public void run() {
HostManager.setLoginCookies(sContext);
}
});
}
@Override
public void onInvalidAuthonToken() {
LogUtil.d(TAG, "invalid authon token");
ThreadPool.execute(new Runnable() {
@Override
public void run() {
HostManager.removeLoginCookies(sContext);
HostManager.setLoginCookies(sContext);
}
});
}
@Override
public void onLogout() {
LogUtil.d(TAG, "onLogout");
ThreadPool.execute(new Runnable() {
@Override
public void run() {
HostManager.removeLoginCookies(sContext);
new DbCache(sContext).deleteUserRelatedItem();
Utils.Preference.removePref(sContext, Constants.Prefence.PREF_NO_CHANCE);
}
});
}
}