package org.estgroup.phphub.common.broadcast;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import org.estgroup.phphub.ui.view.MainActivity;
import org.estgroup.phphub.ui.view.ReplyListActivity;
import org.estgroup.phphub.ui.view.topic.TopicDetailsActivity;
import org.json.JSONObject;

import cn.jpush.android.api.JPushInterface;

/**
 * Created by Xuan on 10/17/15.
 */
public class JPushReReceiver extends BroadcastReceiver {
    private static final String TAG = "JPush";


    @Override
    public void onReceive(Context context, Intent intent) {
        Bundle bundle = intent.getExtras();

        if (JPushInterface.ACTION_NOTIFICATION_OPENED.equals(intent.getAction())) {
            boolean openedOtherActivity = handleOpenNotification(context, bundle);

            if (!openedOtherActivity) {
                Intent i = new Intent();
                i.setClass(context, MainActivity.class);
                i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TOP);
                context.startActivity(i);
            }
        }
    }

    /**
     * 处理用户打开通知操作
     *
     * @param context Context
     * @param bundle  Bundle
     * @return boolean
     */
    private boolean handleOpenNotification(Context context, Bundle bundle) {
        Log.d(TAG, "用户点击打开了通知");
        String extras = bundle.getString(JPushInterface.EXTRA_EXTRA);

        Intent intent = null;
        try {
            if (extras == null) return false;

            JSONObject extraJson = new JSONObject(extras);

            if (extraJson.has("replies_url")) {
                String replies_url = extraJson.getString("replies_url");
                intent = ReplyListActivity.getCallingIntent(context, replies_url);
            } else if (extraJson.has("topic_id")) {
                int topic_id = extraJson.getInt("topic_id");
                intent = TopicDetailsActivity.getCallingIntent(context, topic_id);
            } else {
                return false;
            }
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            context.startActivity(intent);

            return true;
        } catch (Exception e) {
            return false;
        }
    }
}
