package tw.com.ischool.grasshopper;

import android.app.Activity;
import android.util.Log;

import com.facebook.react.bridge.Callback;
import com.facebook.react.bridge.ReactApplicationContext;
import com.facebook.react.bridge.ReactContextBaseJavaModule;
import com.facebook.react.bridge.ReactMethod;

import org.json.JSONObject;
import org.w3c.dom.Element;

import tw.com.ischool.firefly.util.JSONUtil;
import tw.com.ischool.firefly.util.XmlHelper;
import tw.com.ischool.firefly.util.http.Cancelable;
import tw.com.ischool.firefly.util.http.HttpUtil;
import tw.com.ischool.grasshopper.modoles.UserInfo;

public class RNAppContextModule extends ReactContextBaseJavaModule {

    private Activity _activity;

    public RNAppContextModule(ReactApplicationContext context, Activity activity) {
        super(context);

        _activity = activity;
    }

    @Override
    public String getName() {
        return "AppContextReactNative";
    }

    private UserInfo userInfo = RoleManager.getsInstance(getReactApplicationContext()).getCurrentUser();

    private String dsns = userInfo.getApp().getDsns();

    String account = null;

    // 取得發送訊息清單
    @ReactMethod
    public void getCurrentUser(final Callback cb) {

        if(account == null) { // 這裡應該不會有快取前個帳號問題，因為每次啟動都會建立新的 Instance。
            String atoken = AuthorizeManager.getAccessToken(getReactApplicationContext(), "User.Mail");
            JSONObject result = JSONUtil.parseToJSONObject(HttpUtil.getString("https://auth.ischool.com.tw/services/me.php?access_token=" + atoken, new Cancelable()));
            account = JSONUtil.getString(result, "mail");
        }

        // 馬的蛋， Android 傳 HashMap 這麼難。
        String info = String.format("{\"name\": \"%s\", \"account\": \"%s\"}", userInfo.getName(), account);

        cb.invoke(info);
    }

    @ReactMethod
    public void getDSNS(final Callback cb) {
        cb.invoke(dsns);
    }

    @ReactMethod
    public void close(final Callback cb) {
        _activity.finish();
        cb.invoke();
    }
}
