package com.quinn.githubknife;

import android.app.Application;
import android.content.Context;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;

import com.nostra13.universalimageloader.cache.disc.naming.Md5FileNameGenerator;
import com.nostra13.universalimageloader.core.ImageLoader;
import com.nostra13.universalimageloader.core.ImageLoaderConfiguration;
import com.nostra13.universalimageloader.core.assist.QueueProcessingType;
import com.quinn.githubknife.model.APKVersion;
import com.quinn.githubknife.utils.ChannelUtils;
import com.quinn.httpknife.github.User;
import com.tendcloud.tenddata.TCAgent;

/**
 * Created by Quinn on 7/20/15.
 */
public class GithubApplication extends Application {

    private final static String TD_APP_ID = "C7208C73204D6DDF67AA2227D9C06174";

    public static Context instance;

    /**
     * @// TODO: 9/6/16
     * 暂时默认100,后续打多渠道此处得动态获取
     */
    private String channel = "100";

    private User user;

    private String token = "";


    @Override
    public void onCreate() {
        super.onCreate();
        instance = this;
        /**
         * 初始化Talking-data
         */
        new Thread(new Runnable() {
            @Override
            public void run() {
                TCAgent.LOG_ON = false;
                channel = ChannelUtils.getChannel(GithubApplication.this);
                TCAgent.init(GithubApplication.this, TD_APP_ID, channel);
                TCAgent.setReportUncaughtExceptions(true);
            }
        }).start();
        // Initialize ImageLoader with configuration.
        ImageLoaderConfiguration config = new ImageLoaderConfiguration.Builder(
                getApplicationContext())
                .threadPriority(Thread.NORM_PRIORITY - 2)
                .denyCacheImageMultipleSizesInMemory()
                .diskCacheFileNameGenerator(new Md5FileNameGenerator())
                .diskCacheSize(50 * 1024 * 1024)
                        // 50 Mb
                .tasksProcessingOrder(QueueProcessingType.LIFO)
                .writeDebugLogs() // Remove for release app
                .build();

        ImageLoader.getInstance().init(config);
    }


    public APKVersion getAPKVersion(){
        APKVersion version = new APKVersion();
        try {
            PackageInfo info = getPackageManager().getPackageInfo(
                    getPackageName(), 0);
            version.setVersionCode(info.versionCode);
            version.setVersionName(info.versionName);
        } catch (PackageManager.NameNotFoundException e) {
            e.printStackTrace();
        }

        return version;
    }

    public User getUser() {
        return user;
    }

    public void setUser(User user) {
        this.user = user;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }
}