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

Fixed crashing `get` if notification doesn't exist

parent 3a2ed5dc
Loading
Loading
Loading
Loading
+22 −7
Changes for src/android/LocalNotification.java: 22 added lines, 7 removed lines.
Original line number Diff line number Diff line
@@ -36,6 +36,7 @@ import org.json.JSONObject;

import java.lang.reflect.Method;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;

import de.appplant.cordova.plugin.notification.Manager;
@@ -234,6 +235,9 @@ public class LocalNotification extends CordovaPlugin {
            Notification notification =
                    getNotificationMgr().update(id, update, TriggerReceiver.class);

            if (notification == null)
                continue;

            fireEvent("update", notification);
        }
    }
@@ -251,11 +255,12 @@ public class LocalNotification extends CordovaPlugin {
            Notification notification =
                    getNotificationMgr().cancel(id);

            if (notification != null) {
            if (notification == null)
                continue;

            fireEvent("cancel", notification);
        }
    }
    }

    /**
     * Cancel all scheduled notifications.
@@ -278,11 +283,12 @@ public class LocalNotification extends CordovaPlugin {
            Notification notification =
                    getNotificationMgr().clear(id);

            if (notification != null) {
            if (notification == null)
                continue;

            fireEvent("clear", notification);
        }
    }
    }

    /**
     * Clear all triggered notifications without canceling them.
@@ -469,11 +475,20 @@ public class LocalNotification extends CordovaPlugin {
                             CallbackContext command) {

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

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

        command.success(options);
        if (options.isEmpty()) {
            // Status.NO_RESULT led to no callback invocation :(
            // Status.OK        led to no NPE and crash
            result = new PluginResult(PluginResult.Status.NO_RESULT);
        } else {
            result = new PluginResult(PluginResult.Status.OK, options.get(0));
        }

        command.sendPluginResult(result);
    }

    /**