Commit c3520580 by Sebastián Katzer

Fix get* with single id on Android

parent b8da2b94
......@@ -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));
......
......@@ -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);
......
......@@ -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
......
......@@ -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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment