package cn.jiguang.cordova.push;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import cn.jpush.android.api.JPushInterface;

public class JPushReceiver extends BroadcastReceiver {

    private static final List<String> IGNORED_EXTRAS_KEYS = Arrays.asList("cn.jpush.android.TITLE",
            "cn.jpush.android.MESSAGE", "cn.jpush.android.APPKEY", "cn.jpush.android.NOTIFICATION_CONTENT_TITLE","key_show_entity","platform");

    @Override
    public void onReceive(Context context, Intent intent) {
//        String action = intent.getAction();
//        if (action.equals(JPushInterface.ACTION_REGISTRATION_ID)) {
//            String rId = intent.getStringExtra(JPushInterface.EXTRA_REGISTRATION_ID);
//            JPushPlugin.transmitReceiveRegistrationId(rId);
//        } else if (action.equals(JPushInterface.ACTION_MESSAGE_RECEIVED)) {
//            handlingMessageReceive(intent);
//        } else if (action.equals(JPushInterface.ACTION_NOTIFICATION_RECEIVED)) {
//            handlingNotificationReceive(context, intent);
//        } else if (action.equals(JPushInterface.ACTION_NOTIFICATION_OPENED)) {
//            handlingNotificationOpen(context, intent);
//        }
    }

//    private void handlingMessageReceive(Intent intent) {
//        String msg = intent.getStringExtra(JPushInterface.EXTRA_MESSAGE);
//        Map<String, Object> extras = getNotificationExtras(intent);
//        JPushPlugin.transmitMessageReceive(msg, extras);
//    }
//
//    private void handlingNotificationOpen(Context context, Intent intent) {
//        String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
//        JPushPlugin.openNotificationJson = title;
//
//        String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT);
//        JPushPlugin.openNotificationAlert = alert;
//
//        Map<String, Object> extras = getNotificationExtras(intent);
//        JPushPlugin.openNotificationExtras = extras;
//
//        JPushPlugin.transmitNotificationOpen(title, alert, extras);
//
//        Intent launch = context.getPackageManager().getLaunchIntentForPackage(context.getPackageName());
//        if (launch != null) {
//            launch.addCategory(Intent.CATEGORY_LAUNCHER);
//            launch.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP);
//            context.startActivity(launch);
//        }
//    }
//
//    private void handlingNotificationReceive(Context context, Intent intent) {
//        String title = intent.getStringExtra(JPushInterface.EXTRA_NOTIFICATION_TITLE);
//        JPushPlugin.notificationTitle = title;
//
//        String alert = intent.getStringExtra(JPushInterface.EXTRA_ALERT);
//        JPushPlugin.notificationAlert = alert;
//
//        Map<String, Object> extras = getNotificationExtras(intent);
//        JPushPlugin.notificationExtras = extras;
//
//        JPushPlugin.transmitNotificationReceive(title, alert, extras);
//    }
//
//    private Map<String, Object> getNotificationExtras(Intent intent) {
//        Map<String, Object> extrasMap = new HashMap<String, Object>();
//        for (String key : intent.getExtras().keySet()) {
//            if (!IGNORED_EXTRAS_KEYS.contains(key)) {
//                if (key.equals(JPushInterface.EXTRA_NOTIFICATION_ID)) {
//                    extrasMap.put(key, intent.getIntExtra(key, 0));
//                } else {
//                    extrasMap.put(key, intent.getStringExtra(key));
//                }
//            }
//        }
//        return extrasMap;
//    }
}
