Commit c3520580 by Sebastián Katzer

Fix get* with single id on Android

parent b8da2b94
...@@ -174,6 +174,15 @@ public class LocalNotification extends CordovaPlugin { ...@@ -174,6 +174,15 @@ public class LocalNotification extends CordovaPlugin {
else if (action.equals("getTriggeredIds")) { else if (action.equals("getTriggeredIds")) {
getTriggeredIds(command); 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")) { else if (action.equals("getAll")) {
getAll(args, command); getAll(args, command);
} }
...@@ -369,23 +378,51 @@ public class LocalNotification extends CordovaPlugin { ...@@ -369,23 +378,51 @@ public class LocalNotification extends CordovaPlugin {
} }
/** /**
* Set of options from local notification. * Options from local notification.
* *
* @param ids * @param ids
* Set of local notification IDs * Set of local notification IDs
* @param command * @param command
* The callback context used when calling back into JavaScript. * The callback context used when calling back into JavaScript.
*/ */
private void getAll (JSONArray ids, CallbackContext command) { private void getSingle (JSONArray ids, CallbackContext command) {
List<JSONObject> options; getOptions(ids.optString(0), Notification.Type.ALL, command);
}
if (ids.length() == 0) { /**
options = getNotificationMgr().getOptions(); * Options from scheduled notification.
} else { *
options = getNotificationMgr().getOptionsById(toList(ids)); * @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,16 +434,7 @@ public class LocalNotification extends CordovaPlugin { ...@@ -397,16 +434,7 @@ public class LocalNotification extends CordovaPlugin {
* The callback context used when calling back into JavaScript. * The callback context used when calling back into JavaScript.
*/ */
private void getScheduled (JSONArray ids, CallbackContext command) { 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));
}
command.success(new JSONArray(options));
} }
/** /**
...@@ -418,13 +446,49 @@ public class LocalNotification extends CordovaPlugin { ...@@ -418,13 +446,49 @@ public class LocalNotification extends CordovaPlugin {
* The callback context used when calling back into JavaScript. * The callback context used when calling back into JavaScript.
*/ */
private void getTriggered (JSONArray ids, CallbackContext command) { private void getTriggered (JSONArray ids, CallbackContext command) {
getOptions(ids, Notification.Type.TRIGGERED, command);
}
/**
* 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 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 getOptions (JSONArray ids, Notification.Type type,
CallbackContext command) {
List<JSONObject> options; List<JSONObject> options;
if (ids.length() == 0) { if (ids.length() == 0) {
options = getNotificationMgr().getOptionsByType(Notification.Type.TRIGGERED); options = getNotificationMgr().getOptionsByType(type);
} else { } else {
options = getNotificationMgr().getOptionsBy( options = getNotificationMgr().getOptionsBy(type, toList(ids));
Notification.Type.TRIGGERED, toList(ids));
} }
command.success(new JSONArray(options)); command.success(new JSONArray(options));
......
...@@ -48,7 +48,7 @@ import java.util.Set; ...@@ -48,7 +48,7 @@ import java.util.Set;
public class Manager { public class Manager {
// Context passed through constructor and used for notification builder. // Context passed through constructor and used for notification builder.
private Context context; private Context context;
/** /**
* Constructor * Constructor
...@@ -56,9 +56,9 @@ public class Manager { ...@@ -56,9 +56,9 @@ public class Manager {
* @param context * @param context
* Application context * Application context
*/ */
private Manager(Context context){ private Manager(Context context){
this.context = context; this.context = context;
} }
/** /**
* Static method to retrieve class instance. * Static method to retrieve class instance.
...@@ -256,6 +256,9 @@ public class Manager { ...@@ -256,6 +256,9 @@ public class Manager {
List<Notification> notifications = getAll(); List<Notification> notifications = getAll();
ArrayList<Notification> list = new ArrayList<Notification>(); ArrayList<Notification> list = new ArrayList<Notification>();
if (type == Notification.Type.ALL)
return notifications;
for (Notification notification : notifications) { for (Notification notification : notifications) {
if (notification.getType() == type) { if (notification.getType() == type) {
list.add(notification); list.add(notification);
...@@ -368,6 +371,9 @@ public class Manager { ...@@ -368,6 +371,9 @@ public class Manager {
public List<JSONObject> getOptionsBy(Notification.Type type, public List<JSONObject> getOptionsBy(Notification.Type type,
List<Integer> ids) { List<Integer> ids) {
if (type == Notification.Type.ALL)
return getOptionsById(ids);
ArrayList<JSONObject> options = new ArrayList<JSONObject>(); ArrayList<JSONObject> options = new ArrayList<JSONObject>();
List<Notification> notifications = getByIds(ids); List<Notification> notifications = getByIds(ids);
......
...@@ -46,7 +46,7 @@ public class Notification { ...@@ -46,7 +46,7 @@ public class Notification {
// Used to differ notifications by their life cycle state // Used to differ notifications by their life cycle state
public static enum Type { public static enum Type {
SCHEDULED, TRIGGERED ALL, SCHEDULED, TRIGGERED
} }
// Default receiver to handle the trigger event // Default receiver to handle the trigger event
......
...@@ -275,7 +275,8 @@ exports.get = function () { ...@@ -275,7 +275,8 @@ exports.get = function () {
scope = args[2]; scope = args[2];
if (!Array.isArray(ids)) { if (!Array.isArray(ids)) {
ids = [ids]; this.exec('getSingle', ids.toString(), callback, scope);
return;
} }
ids = this.convertIds(ids); ids = this.convertIds(ids);
...@@ -321,6 +322,11 @@ exports.getScheduled = function () { ...@@ -321,6 +322,11 @@ exports.getScheduled = function () {
ids = [ids]; ids = [ids];
} }
if (!Array.isArray(ids)) {
this.exec('getSingleScheduled', ids.toString(), callback, scope);
return;
}
ids = this.convertIds(ids); ids = this.convertIds(ids);
this.exec('getScheduled', ids, callback, scope); this.exec('getScheduled', ids, callback, scope);
...@@ -364,6 +370,11 @@ exports.getTriggered = function () { ...@@ -364,6 +370,11 @@ exports.getTriggered = function () {
ids = [ids]; ids = [ids];
} }
if (!Array.isArray(ids)) {
this.exec('getSingleTriggered', ids.toString(), callback, scope);
return;
}
ids = this.convertIds(ids); ids = this.convertIds(ids);
this.exec('getTriggered', ids, callback, scope); 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