Commit c3520580 authored by Sebastián Katzer's avatar Sebastián Katzer
Browse files

Fix get* with single id on Android

parent b8da2b94
Loading
Loading
Loading
Loading
+84 −20
Changes for src/android/LocalNotification.java: 84 added lines, 20 removed lines.
Original line number Diff line number Diff line
@@ -174,6 +174,15 @@ public class LocalNotification extends CordovaPlugin {
                else if (action.equals("getTriggeredIds")) {
                    getTriggeredIds(command);
                }
                else if (action.equals("getSingle")) {
                    getSingle(args, command);
                }
                else if (action.equals("getSingleScheduled")) {
                    getSingleScheduled(args, command);
                }
                else if (action.equals("getSingleTriggered")) {
                    getSingleTriggered(args, command);
                }
                else if (action.equals("getAll")) {
                    getAll(args, command);
                }
@@ -369,23 +378,51 @@ public class LocalNotification extends CordovaPlugin {
    }

    /**
     * Set of options from local notification.
     * Options from local notification.
     *
     * @param ids
     *      Set of local notification IDs
     * @param command
     *      The callback context used when calling back into JavaScript.
     */
    private void getAll (JSONArray ids, CallbackContext command) {
        List<JSONObject> options;
    private void getSingle (JSONArray ids, CallbackContext command) {
        getOptions(ids.optString(0), Notification.Type.ALL, command);
    }

        if (ids.length() == 0) {
            options = getNotificationMgr().getOptions();
        } else {
            options = getNotificationMgr().getOptionsById(toList(ids));
    /**
     * Options from scheduled notification.
     *
     * @param ids
     *      Set of local notification IDs
     * @param command
     *      The callback context used when calling back into JavaScript.
     */
    private void getSingleScheduled (JSONArray ids, CallbackContext command) {
        getOptions(ids.optString(0), Notification.Type.SCHEDULED, command);
    }

        command.success(new JSONArray(options));
    /**
     * Options from triggered notification.
     *
     * @param ids
     *      Set of local notification IDs
     * @param command
     *      The callback context used when calling back into JavaScript.
     */
    private void getSingleTriggered (JSONArray ids, CallbackContext command) {
        getOptions(ids.optString(0), Notification.Type.TRIGGERED, command);
    }

    /**
     * Set of options from local notification.
     *
     * @param ids
     *      Set of local notification IDs
     * @param command
     *      The callback context used when calling back into JavaScript.
     */
    private void getAll (JSONArray ids, CallbackContext command) {
        getOptions(ids, Notification.Type.ALL, command);
    }

    /**
@@ -397,34 +434,61 @@ public class LocalNotification extends CordovaPlugin {
     *      The callback context used when calling back into JavaScript.
     */
    private void getScheduled (JSONArray ids, CallbackContext command) {
        List<JSONObject> options;
        getOptions(ids, Notification.Type.SCHEDULED, command);
    }

        if (ids.length() == 0) {
            options = getNotificationMgr().getOptionsByType(Notification.Type.SCHEDULED);
        } else {
            options = getNotificationMgr().getOptionsBy(
                    Notification.Type.SCHEDULED, toList(ids));
    /**
     * Set of options from triggered notifications.
     *
     * @param ids
     *      Set of local notification IDs
     * @param command
     *      The callback context used when calling back into JavaScript.
     */
    private void getTriggered (JSONArray ids, CallbackContext command) {
        getOptions(ids, Notification.Type.TRIGGERED, command);
    }

        command.success(new JSONArray(options));
    /**
     * Options from local notification.
     *
     * @param id
     *      Set of local notification IDs
     * @param type
     *      The local notification life cycle type
     * @param command
     *      The callback context used when calling back into JavaScript.
     */
    private void getOptions (String id, Notification.Type type,
                             CallbackContext command) {

        JSONArray ids = new JSONArray().put(id);

        JSONObject options =
                getNotificationMgr().getOptionsBy(type, toList(ids)).get(0);

        command.success(options);
    }

    /**
     * Set of options from triggered notifications.
     * Set of options from local notifications.
     *
     * @param ids
     *      Set of local notification IDs
     * @param type
     *      The local notification life cycle type
     * @param command
     *      The callback context used when calling back into JavaScript.
     */
    private void getTriggered (JSONArray ids, CallbackContext command) {
    private void getOptions (JSONArray ids, Notification.Type type,
                             CallbackContext command) {

        List<JSONObject> options;

        if (ids.length() == 0) {
            options = getNotificationMgr().getOptionsByType(Notification.Type.TRIGGERED);
            options = getNotificationMgr().getOptionsByType(type);
        } else {
            options = getNotificationMgr().getOptionsBy(
                    Notification.Type.TRIGGERED, toList(ids));
            options = getNotificationMgr().getOptionsBy(type, toList(ids));
        }

        command.success(new JSONArray(options));
+6 −0
Changes for src/android/notification/Manager.java: 6 added lines, 0 removed lines.
Original line number Diff line number Diff line
@@ -256,6 +256,9 @@ public class Manager {
        List<Notification> notifications = getAll();
        ArrayList<Notification> list = new ArrayList<Notification>();

        if (type == Notification.Type.ALL)
            return notifications;

        for (Notification notification : notifications) {
            if (notification.getType() == type) {
                list.add(notification);
@@ -368,6 +371,9 @@ public class Manager {
    public List<JSONObject> getOptionsBy(Notification.Type type,
                                         List<Integer> ids) {

        if (type == Notification.Type.ALL)
            return getOptionsById(ids);

        ArrayList<JSONObject> options = new ArrayList<JSONObject>();
        List<Notification> notifications = getByIds(ids);

+1 −1
Changes for src/android/notification/Notification.java: 1 added line, 1 removed line.
Original line number Diff line number Diff line
@@ -46,7 +46,7 @@ public class Notification {

    // Used to differ notifications by their life cycle state
    public static enum Type {
        SCHEDULED, TRIGGERED
        ALL, SCHEDULED, TRIGGERED
    }

    // Default receiver to handle the trigger event
+12 −1
Changes for www/local-notification-core.js: 12 added lines, 1 removed line.
Original line number Diff line number Diff line
@@ -275,7 +275,8 @@ exports.get = function () {
        scope    = args[2];

    if (!Array.isArray(ids)) {
        ids = [ids];
        this.exec('getSingle', ids.toString(), callback, scope);
        return;
    }

    ids = this.convertIds(ids);
@@ -321,6 +322,11 @@ exports.getScheduled = function () {
        ids = [ids];
    }

    if (!Array.isArray(ids)) {
        this.exec('getSingleScheduled', ids.toString(), callback, scope);
        return;
    }

    ids = this.convertIds(ids);

    this.exec('getScheduled', ids, callback, scope);
@@ -364,6 +370,11 @@ exports.getTriggered = function () {
        ids = [ids];
    }

    if (!Array.isArray(ids)) {
        this.exec('getSingleTriggered', ids.toString(), callback, scope);
        return;
    }

    ids = this.convertIds(ids);

    this.exec('getTriggered', ids, callback, scope);