Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
C
cordova-plugin-local-notifications
Overview
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Nabil Sadki
cordova-plugin-local-notifications
Commits
d7c21e97
Commit
d7c21e97
authored
Mar 15, 2015
by
Sebastián Katzer
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Separate js part into interface, core and util module
parent
fe255fa1
Show whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
791 additions
and
414 deletions
+791
-414
plugin.xml
plugin.xml
+10
-0
LocalNotification.java
src/android/LocalNotification.java
+1
-1
APPLocalNotification.m
src/ios/APPLocalNotification.m
+1
-1
local-notification-core.js
www/local-notification-core.js
+470
-0
local-notification-util.js
www/local-notification-util.js
+282
-0
local-notification.js
www/local-notification.js
+27
-412
No files found.
plugin.xml
View file @
d7c21e97
...
...
@@ -39,6 +39,16 @@
<clobbers
target=
"plugin.notification.local"
/>
</js-module>
<js-module
src=
"www/local-notification-core.js"
name=
"LocalNotification.Core"
>
<clobbers
target=
"cordova.plugins.notification.local.core"
/>
<clobbers
target=
"plugin.notification.local.core"
/>
</js-module>
<js-module
src=
"www/local-notification-util.js"
name=
"LocalNotification.Util"
>
<merges
target=
"cordova.plugins.notification.local.core"
/>
<merges
target=
"plugin.notification.local.core"
/>
</js-module>
<!-- ios -->
<platform
name=
"ios"
>
...
...
src/android/LocalNotification.java
View file @
d7c21e97
...
...
@@ -470,7 +470,7 @@ public class LocalNotification extends CordovaPlugin {
params
=
notification
.
toString
()
+
","
+
params
;
}
String
js
=
"cordova.plugins.notification.local.fireEvent("
+
String
js
=
"cordova.plugins.notification.local.
core.
fireEvent("
+
"\""
+
event
+
"\","
+
params
+
")"
;
sendJavascript
(
js
);
...
...
src/ios/APPLocalNotification.m
View file @
d7c21e97
...
...
@@ -671,7 +671,7 @@
}
js
=
[
NSString
stringWithFormat
:
@"cordova.plugins.notification.local.fireEvent('%@', %@)"
,
@"cordova.plugins.notification.local.
core.
fireEvent('%@', %@)"
,
event
,
params
];
if
(
deviceready
)
{
...
...
www/local-notification-core.js
0 → 100644
View file @
d7c21e97
/*
* Copyright (c) 2013-2015 by appPlant UG. All rights reserved.
*
* @APPPLANT_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
var
exec
=
require
(
'cordova/exec'
);
/********
* CORE *
********/
/**
* Returns the default settings.
*
* @return {Object}
*/
exports
.
getDefaults
=
function
()
{
return
this
.
_defaults
;
};
/**
* Overwrite default settings.
*
* @param {Object} defaults
*/
exports
.
setDefaults
=
function
(
newDefaults
)
{
var
defaults
=
this
.
getDefaults
();
for
(
var
key
in
defaults
)
{
if
(
newDefaults
.
hasOwnProperty
(
key
))
{
defaults
[
key
]
=
newDefaults
[
key
];
}
}
};
/**
* Schedule a new local notification.
*
* @param {Object} opts
* The notification properties
* @param {Function} callback
* A function to be called after the notification has been canceled
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
schedule
=
function
(
opts
,
callback
,
scope
)
{
this
.
registerPermission
(
function
(
granted
)
{
if
(
!
granted
)
return
;
var
notifications
=
Array
.
isArray
(
opts
)
?
opts
:
[
opts
];
for
(
var
i
=
0
;
i
<
notifications
.
length
;
i
++
)
{
var
properties
=
notifications
[
i
];
this
.
mergeWithDefaults
(
properties
);
this
.
convertProperties
(
properties
);
}
this
.
exec
(
'schedule'
,
notifications
,
callback
,
scope
);
},
this
);
};
/**
* Update existing notifications specified by IDs in options.
*
* @param {Object} options
* The notification properties to update
* @param {Function} callback
* A function to be called after the notification has been updated
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
update
=
function
(
opts
,
callback
,
scope
)
{
var
notifications
=
Array
.
isArray
(
opts
)
?
opts
:
[
opts
];
for
(
var
i
=
0
;
i
<
notifications
.
length
;
i
++
)
{
var
properties
=
notifications
[
i
];
this
.
convertProperties
(
properties
);
}
this
.
exec
(
'update'
,
notifications
,
callback
,
scope
);
};
/**
* Clear the specified notification.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A function to be called after the notification has been cleared
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
clear
=
function
(
ids
,
callback
,
scope
)
{
ids
=
Array
.
isArray
(
ids
)
?
ids
:
[
ids
];
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'clear'
,
ids
,
callback
,
scope
);
};
/**
* Clear all previously sheduled notifications.
*
* @param {Function} callback
* A function to be called after all notifications have been cleared
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
clearAll
=
function
(
callback
,
scope
)
{
this
.
exec
(
'clearAll'
,
null
,
callback
,
scope
);
};
/**
* Cancel the specified notifications.
*
* @param {String[]} ids
* The IDs of the notifications
* @param {Function} callback
* A function to be called after the notifications has been canceled
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
cancel
=
function
(
ids
,
callback
,
scope
)
{
ids
=
Array
.
isArray
(
ids
)
?
ids
:
[
ids
];
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'cancel'
,
ids
,
callback
,
scope
);
};
/**
* Remove all previously registered notifications.
*
* @param {Function} callback
* A function to be called after all notifications have been canceled
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
cancelAll
=
function
(
callback
,
scope
)
{
this
.
exec
(
'cancelAll'
,
null
,
callback
,
scope
);
};
/**
* Check if a notification with an ID is present.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
isPresent
=
function
(
id
,
callback
,
scope
)
{
var
notId
=
(
id
||
'0'
).
toString
();
this
.
exec
(
'isPresent'
,
notId
,
callback
,
scope
);
};
/**
* Check if a notification with an ID is scheduled.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
isScheduled
=
function
(
id
,
callback
,
scope
)
{
var
notId
=
(
id
||
'0'
).
toString
();
this
.
exec
(
'isScheduled'
,
notId
,
callback
,
scope
);
};
/**
* Check if a notification with an ID was triggered.
*
* @param {String} id
* The ID of the notification
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
isTriggered
=
function
(
id
,
callback
,
scope
)
{
var
notId
=
(
id
||
'0'
).
toString
();
this
.
exec
(
'isTriggered'
,
notId
,
callback
,
scope
);
};
/**
* List all local notification IDs.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
getAllIds
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getAllIds'
,
null
,
callback
,
scope
);
};
/**
* Alias for `getAllIds`.
*/
exports
.
getIds
=
function
()
{
this
.
getAllIds
.
apply
(
this
,
arguments
);
};
/**
* List all scheduled notification IDs.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
getScheduledIds
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getScheduledIds'
,
null
,
callback
,
scope
);
};
/**
* List all triggered notification IDs.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
getTriggeredIds
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getTriggeredIds'
,
null
,
callback
,
scope
);
};
/**
* Property list for given local notifications.
* If called without IDs, all notification will be returned.
*
* @param {Number[]?} ids
* Set of notification IDs
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
get
=
function
()
{
var
args
=
Array
.
apply
(
null
,
arguments
);
if
(
typeof
args
[
0
]
==
'function'
)
{
args
.
unshift
([]);
}
var
ids
=
args
[
0
],
callback
=
args
[
1
],
scope
=
args
[
2
];
if
(
!
Array
.
isArray
(
ids
))
{
ids
=
[
ids
];
}
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'getAll'
,
ids
,
callback
,
scope
);
};
/**
* Property list for all local notifications.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
getAll
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getAll'
,
null
,
callback
,
scope
);
};
/**
* Property list for given scheduled notifications.
* If called without IDs, all notification will be returned.
*
* @param {Number[]?} ids
* Set of notification IDs
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
getScheduled
=
function
()
{
var
args
=
Array
.
apply
(
null
,
arguments
);
if
(
typeof
args
[
0
]
==
'function'
)
{
args
.
unshift
([]);
}
var
ids
=
args
[
0
],
callback
=
args
[
1
],
scope
=
args
[
2
];
if
(
!
Array
.
isArray
(
ids
))
{
ids
=
[
ids
];
}
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'getScheduled'
,
ids
,
callback
,
scope
);
};
/**
* Retrieve the properties for all scheduled notifications.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
getAllScheduled
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getScheduled'
,
null
,
callback
,
scope
);
};
/**
* Property list for given triggered notifications.
* If called without IDs, all notification will be returned.
*
* @param {Number[]?} ids
* Set of notification IDs
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
getTriggered
=
function
()
{
var
args
=
Array
.
apply
(
null
,
arguments
);
if
(
typeof
args
[
0
]
==
'function'
)
{
args
.
unshift
([]);
}
var
ids
=
args
[
0
],
callback
=
args
[
1
],
scope
=
args
[
2
];
if
(
!
Array
.
isArray
(
ids
))
{
ids
=
[
ids
];
}
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'getTriggered'
,
ids
,
callback
,
scope
);
};
/**
* Retrieve the properties for all triggered notifications.
*
* @param {Function} callback
* A callback function to be called with the list
* @param {Object?} scope
* The scope for the callback function
*/
exports
.
getAllTriggered
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getTriggered'
,
null
,
callback
,
scope
);
};
/**
* Informs if the app has the permission to show notifications.
*
* @param {Function} callback
* The function to be exec as the callback
* @param {Object?} scope
* The callback function's scope
*/
exports
.
hasPermission
=
function
(
callback
,
scope
)
{
var
fn
=
this
.
createCallbackFn
(
callback
,
scope
);
if
(
device
.
platform
!=
'iOS'
)
{
fn
(
true
);
return
;
}
exec
(
fn
,
null
,
'LocalNotification'
,
'hasPermission'
,
[]);
};
/**
* Register permission to show notifications if not already granted.
*
* @param {Function} callback
* The function to be exec as the callback
* @param {Object?} scope
* The callback function's scope
*/
exports
.
registerPermission
=
function
(
callback
,
scope
)
{
var
fn
=
this
.
createCallbackFn
(
callback
,
scope
);
if
(
device
.
platform
!=
'iOS'
)
{
fn
(
true
);
return
;
}
exec
(
fn
,
null
,
'LocalNotification'
,
'registerPermission'
,
[]);
};
/**********
* EVENTS *
**********/
/**
* Register callback for given event.
*
* @param {String} event
* The event's name
* @param {Function} callback
* The function to be exec as callback
* @param {Object?} scope
* The callback function's scope
*/
exports
.
on
=
function
(
event
,
callback
,
scope
)
{
if
(
!
this
.
_listener
[
event
])
{
this
.
_listener
[
event
]
=
[];
}
var
item
=
[
callback
,
scope
||
window
];
this
.
_listener
[
event
].
push
(
item
);
};
/**
* Unregister callback for given event.
*
* @param {String} event
* The event's name
* @param {Function} callback
* The function to be exec as callback
*/
exports
.
un
=
function
(
event
,
callback
)
{
var
listener
=
this
.
_listener
[
event
];
if
(
!
listener
)
return
;
for
(
var
i
=
0
;
i
<
listener
.
length
;
i
++
)
{
var
fn
=
listener
[
i
][
0
];
if
(
fn
==
callback
)
{
listener
.
splice
(
i
,
1
);
break
;
}
}
};
www/local-notification-util.js
0 → 100644
View file @
d7c21e97
/*
* Copyright (c) 2013-2015 by appPlant UG. All rights reserved.
*
* @APPPLANT_LICENSE_HEADER_START@
*
* This file contains Original Code and/or Modifications of Original Code
* as defined in and that are subject to the Apache License
* Version 2.0 (the 'License'). You may not use this file except in
* compliance with the License. Please obtain a copy of the License at
* http://opensource.org/licenses/Apache-2.0/ and read it before using this
* file.
*
* The Original Code and all software distributed under the License are
* distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER
* EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES,
* INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY,
* FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT.
* Please see the License for the specific language governing rights and
* limitations under the License.
*
* @APPPLANT_LICENSE_HEADER_END@
*/
var
exec
=
require
(
'cordova/exec'
),
channel
=
require
(
'cordova/channel'
);
/***********
* MEMBERS *
***********/
// Default values
exports
.
_defaults
=
{
text
:
''
,
title
:
''
,
sound
:
'res://platform_default'
,
badge
:
0
,
id
:
"0"
,
data
:
undefined
,
every
:
undefined
,
at
:
undefined
};
// listener
exports
.
_listener
=
{};
/********
* UTIL *
********/
/**
* Merge platform specific properties into the default ones.
*
* @return {Object}
* The default properties for the platform
*/
exports
.
applyPlatformSpecificOptions
=
function
()
{
var
defaults
=
this
.
_defaults
;
switch
(
device
.
platform
)
{
case
'Android'
:
defaults
.
icon
=
'res://icon'
;
defaults
.
smallIcon
=
'res://ic_popup_reminder'
;
defaults
.
ongoing
=
false
;
defaults
.
led
=
'FFFFFF'
;
break
;
}
return
defaults
;
};
/**
* Merge custom properties with the default values.
*
* @param {Object} options
* Set of custom values
*
* @retrun {Object}
* The merged property list
*/
exports
.
mergeWithDefaults
=
function
(
options
)
{
var
defaults
=
this
.
getDefaults
();
options
.
at
=
this
.
getValueFor
(
options
,
'at'
,
'firstAt'
,
'date'
);
options
.
text
=
this
.
getValueFor
(
options
,
'text'
,
'message'
);
options
.
data
=
this
.
getValueFor
(
options
,
'data'
,
'json'
);
if
(
options
.
at
===
undefined
||
options
.
at
===
null
)
{
options
.
at
=
new
Date
();
}
for
(
var
key
in
defaults
)
{
if
(
options
[
key
]
===
null
||
options
[
key
]
===
undefined
)
{
if
(
options
.
hasOwnProperty
(
key
)
&&
[
'data'
,
'sound'
].
indexOf
(
key
)
>
-
1
)
{
options
[
key
]
=
undefined
;
}
else
{
options
[
key
]
=
defaults
[
key
];
}
}
}
for
(
key
in
options
)
{
if
(
!
defaults
.
hasOwnProperty
(
key
))
{
delete
options
[
key
];
}
}
return
options
;
};
/**
* Convert the passed values to their required type.
*
* @param {Object} options
* Set of custom values
*
* @retrun {Object}
* The converted property list
*/
exports
.
convertProperties
=
function
(
options
)
{
if
(
options
.
id
)
{
if
(
isNaN
(
options
.
id
))
{
options
.
id
=
this
.
getDefaults
().
id
;
}
else
{
options
.
id
=
options
.
id
.
toString
();
}
}
if
(
options
.
title
)
{
options
.
title
=
options
.
title
.
toString
();
}
if
(
options
.
text
)
{
options
.
text
=
options
.
text
.
toString
();
}
if
(
options
.
badge
)
{
if
(
isNaN
(
options
.
badge
))
{
options
.
badge
=
this
.
getDefaults
().
badge
;
}
else
{
options
.
badge
=
Number
(
options
.
badge
);
}
}
if
(
typeof
options
.
at
==
'object'
)
{
options
.
at
=
Math
.
round
(
options
.
at
.
getTime
()
/
1000
);
}
if
(
typeof
options
.
data
==
'object'
)
{
options
.
data
=
JSON
.
stringify
(
options
.
data
);
}
return
options
;
};
/**
* Create callback, which will be executed within a specific scope.
*
* @param {Function} callbackFn
* The callback function
* @param {Object} scope
* The scope for the function
*
* @return {Function}
* The new callback function
*/
exports
.
createCallbackFn
=
function
(
callbackFn
,
scope
)
{
if
(
typeof
callbackFn
!=
'function'
)
return
;
return
function
()
{
callbackFn
.
apply
(
scope
||
this
,
arguments
);
};
};
/**
* Convert the IDs to Strings.
*
* @param {String/Number[]} ids
*
* @return Array of Strings
*/
exports
.
convertIds
=
function
(
ids
)
{
var
convertedIds
=
[];
for
(
var
i
=
0
;
i
<
ids
.
length
;
i
++
)
{
convertedIds
.
push
(
ids
[
i
].
toString
());
}
return
convertedIds
;
};
/**
* First found value for the given keys.
*
* @param {Object} options
* Object with key-value properties
* @param {String[]} keys*
* Key list
*/
exports
.
getValueFor
=
function
(
options
)
{
var
keys
=
Array
.
apply
(
null
,
arguments
).
slice
(
1
);
for
(
var
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
var
key
=
keys
[
i
];
if
(
options
.
hasOwnProperty
(
key
))
{
return
options
[
key
];
}
}
};
/**
* Fire event with given arguments.
*
* @param {String} event
* The event's name
* @param {args*}
* The callback's arguments
*/
exports
.
fireEvent
=
function
(
event
)
{
var
args
=
Array
.
apply
(
null
,
arguments
).
slice
(
1
),
listener
=
this
.
_listener
[
event
];
if
(
!
listener
)
return
;
for
(
var
i
=
0
;
i
<
listener
.
length
;
i
++
)
{
var
fn
=
listener
[
i
][
0
],
scope
=
listener
[
i
][
1
];
fn
.
apply
(
scope
,
args
);
}
};
/**
* Execute the native counterpart.
*
* @param {String} action
* The name of the action
* @param args[]
* Array of arguments
* @param {Function} callback
* The callback function
* @param {Object} scope
* The scope for the function
*/
exports
.
exec
=
function
(
action
,
args
,
callback
,
scope
)
{
var
fn
=
this
.
createCallbackFn
(
callback
,
scope
),
params
=
[];
if
(
Array
.
isArray
(
args
))
{
params
=
args
;
}
else
if
(
args
)
{
params
.
push
(
args
);
}
exec
(
fn
,
null
,
'LocalNotification'
,
action
,
params
);
};
/*********
* HOOKS *
*********/
// Called after 'deviceready' event
channel
.
deviceready
.
subscribe
(
function
()
{
// Device is ready now, the listeners are registered
// and all queued events can be executed.
exec
(
null
,
null
,
'LocalNotification'
,
'deviceready'
,
[]);
});
// Called before 'deviceready' event
channel
.
onCordovaReady
.
subscribe
(
function
()
{
// Device plugin is ready now
channel
.
onCordovaInfoReady
.
subscribe
(
function
()
{
// Merge platform specifics into defaults
exports
.
applyPlatformSpecificOptions
();
});
});
www/local-notification.js
View file @
d7c21e97
...
...
@@ -21,9 +21,6 @@
* @APPPLANT_LICENSE_HEADER_END@
*/
var
exec
=
require
(
'cordova/exec'
),
channel
=
require
(
'cordova/channel'
);
/*************
* INTERFACE *
...
...
@@ -35,7 +32,7 @@ var exec = require('cordova/exec'),
* @return {Object}
*/
exports
.
getDefaults
=
function
()
{
return
this
.
_defaults
;
return
this
.
core
.
getDefaults
()
;
};
/**
...
...
@@ -43,14 +40,8 @@ exports.getDefaults = function () {
*
* @param {Object} defaults
*/
exports
.
setDefaults
=
function
(
newDefaults
)
{
var
defaults
=
this
.
getDefaults
();
for
(
var
key
in
defaults
)
{
if
(
newDefaults
.
hasOwnProperty
(
key
))
{
defaults
[
key
]
=
newDefaults
[
key
];
}
}
exports
.
setDefaults
=
function
(
defaults
)
{
this
.
core
.
setDefaults
(
defaults
);
};
/**
...
...
@@ -64,22 +55,7 @@ exports.setDefaults = function (newDefaults) {
* The scope for the callback function
*/
exports
.
schedule
=
function
(
opts
,
callback
,
scope
)
{
this
.
registerPermission
(
function
(
granted
)
{
if
(
!
granted
)
return
;
var
notifications
=
Array
.
isArray
(
opts
)
?
opts
:
[
opts
];
for
(
var
i
=
0
;
i
<
notifications
.
length
;
i
++
)
{
var
properties
=
notifications
[
i
];
this
.
mergeWithDefaults
(
properties
);
this
.
convertProperties
(
properties
);
}
this
.
exec
(
'schedule'
,
notifications
,
callback
,
scope
);
},
this
);
this
.
core
.
schedule
(
opts
,
callback
,
scope
);
};
/**
...
...
@@ -93,15 +69,7 @@ exports.schedule = function (opts, callback, scope) {
* The scope for the callback function
*/
exports
.
update
=
function
(
opts
,
callback
,
scope
)
{
var
notifications
=
Array
.
isArray
(
opts
)
?
opts
:
[
opts
];
for
(
var
i
=
0
;
i
<
notifications
.
length
;
i
++
)
{
var
properties
=
notifications
[
i
];
this
.
convertProperties
(
properties
);
}
this
.
exec
(
'update'
,
notifications
,
callback
,
scope
);
this
.
core
.
update
(
opts
,
callback
,
scope
);
};
/**
...
...
@@ -115,11 +83,7 @@ exports.update = function (opts, callback, scope) {
* The scope for the callback function
*/
exports
.
clear
=
function
(
ids
,
callback
,
scope
)
{
ids
=
Array
.
isArray
(
ids
)
?
ids
:
[
ids
];
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'clear'
,
ids
,
callback
,
scope
);
this
.
core
.
clear
(
ids
,
callback
,
scope
);
};
/**
...
...
@@ -131,7 +95,7 @@ exports.clear = function (ids, callback, scope) {
* The scope for the callback function
*/
exports
.
clearAll
=
function
(
callback
,
scope
)
{
this
.
exec
(
'clearAll'
,
null
,
callback
,
scope
);
this
.
core
.
clearAll
(
callback
,
scope
);
};
/**
...
...
@@ -145,12 +109,7 @@ exports.clearAll = function (callback, scope) {
* The scope for the callback function
*/
exports
.
cancel
=
function
(
ids
,
callback
,
scope
)
{
ids
=
Array
.
isArray
(
ids
)
?
ids
:
[
ids
];
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'cancel'
,
ids
,
callback
,
scope
);
this
.
core
.
cancel
(
ids
,
callback
,
scope
);
};
/**
...
...
@@ -162,7 +121,7 @@ exports.cancel = function (ids, callback, scope) {
* The scope for the callback function
*/
exports
.
cancelAll
=
function
(
callback
,
scope
)
{
this
.
exec
(
'cancelAll'
,
null
,
callback
,
scope
);
this
.
core
.
cancelAll
(
callback
,
scope
);
};
/**
...
...
@@ -176,9 +135,7 @@ exports.cancelAll = function (callback, scope) {
* The scope for the callback function
*/
exports
.
isPresent
=
function
(
id
,
callback
,
scope
)
{
var
notId
=
(
id
||
'0'
).
toString
();
this
.
exec
(
'isPresent'
,
notId
,
callback
,
scope
);
this
.
core
.
isPresent
(
id
,
callback
,
scope
);
};
/**
...
...
@@ -192,9 +149,7 @@ exports.isPresent = function (id, callback, scope) {
* The scope for the callback function
*/
exports
.
isScheduled
=
function
(
id
,
callback
,
scope
)
{
var
notId
=
(
id
||
'0'
).
toString
();
this
.
exec
(
'isScheduled'
,
notId
,
callback
,
scope
);
this
.
core
.
isScheduled
(
id
,
callback
,
scope
);
};
/**
...
...
@@ -208,9 +163,7 @@ exports.isScheduled = function (id, callback, scope) {
* The scope for the callback function
*/
exports
.
isTriggered
=
function
(
id
,
callback
,
scope
)
{
var
notId
=
(
id
||
'0'
).
toString
();
this
.
exec
(
'isTriggered'
,
notId
,
callback
,
scope
);
this
.
core
.
isTriggered
(
id
,
callback
,
scope
);
};
/**
...
...
@@ -222,7 +175,7 @@ exports.isTriggered = function (id, callback, scope) {
* The scope for the callback function
*/
exports
.
getAllIds
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getAllIds'
,
null
,
callback
,
scope
);
this
.
core
.
getAllIds
(
callback
,
scope
);
};
/**
...
...
@@ -241,7 +194,7 @@ exports.getIds = function () {
* The scope for the callback function
*/
exports
.
getScheduledIds
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getScheduledIds'
,
null
,
callback
,
scope
);
this
.
core
.
getScheduledIds
(
callback
,
scope
);
};
/**
...
...
@@ -253,7 +206,7 @@ exports.getScheduledIds = function (callback, scope) {
* The scope for the callback function
*/
exports
.
getTriggeredIds
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getTriggeredIds'
,
null
,
callback
,
scope
);
this
.
core
.
getTriggeredIds
(
callback
,
scope
);
};
/**
...
...
@@ -268,23 +221,7 @@ exports.getTriggeredIds = function (callback, scope) {
* The scope for the callback function
*/
exports
.
get
=
function
()
{
var
args
=
Array
.
apply
(
null
,
arguments
);
if
(
typeof
args
[
0
]
==
'function'
)
{
args
.
unshift
([]);
}
var
ids
=
args
[
0
],
callback
=
args
[
1
],
scope
=
args
[
2
];
if
(
!
Array
.
isArray
(
ids
))
{
ids
=
[
ids
];
}
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'getAll'
,
ids
,
callback
,
scope
);
this
.
core
.
get
.
apply
(
this
.
core
,
arguments
);
};
/**
...
...
@@ -296,7 +233,7 @@ exports.get = function () {
* The scope for the callback function
*/
exports
.
getAll
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getAll'
,
null
,
callback
,
scope
);
this
.
core
.
getAll
(
callback
,
scope
);
};
/**
...
...
@@ -311,23 +248,7 @@ exports.getAll = function (callback, scope) {
* The scope for the callback function
*/
exports
.
getScheduled
=
function
()
{
var
args
=
Array
.
apply
(
null
,
arguments
);
if
(
typeof
args
[
0
]
==
'function'
)
{
args
.
unshift
([]);
}
var
ids
=
args
[
0
],
callback
=
args
[
1
],
scope
=
args
[
2
];
if
(
!
Array
.
isArray
(
ids
))
{
ids
=
[
ids
];
}
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'getScheduled'
,
ids
,
callback
,
scope
);
this
.
core
.
getScheduled
.
apply
(
this
.
core
,
arguments
);
};
/**
...
...
@@ -339,7 +260,7 @@ exports.getScheduled = function () {
* The scope for the callback function
*/
exports
.
getAllScheduled
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getScheduled'
,
null
,
callback
,
scope
);
this
.
core
.
getAllScheduled
(
callback
,
scope
);
};
/**
...
...
@@ -354,23 +275,7 @@ exports.getAllScheduled = function (callback, scope) {
* The scope for the callback function
*/
exports
.
getTriggered
=
function
()
{
var
args
=
Array
.
apply
(
null
,
arguments
);
if
(
typeof
args
[
0
]
==
'function'
)
{
args
.
unshift
([]);
}
var
ids
=
args
[
0
],
callback
=
args
[
1
],
scope
=
args
[
2
];
if
(
!
Array
.
isArray
(
ids
))
{
ids
=
[
ids
];
}
ids
=
this
.
convertIds
(
ids
);
this
.
exec
(
'getTriggered'
,
ids
,
callback
,
scope
);
this
.
core
.
getTriggered
.
apply
(
this
.
core
,
arguments
);
};
/**
...
...
@@ -382,7 +287,7 @@ exports.getTriggered = function () {
* The scope for the callback function
*/
exports
.
getAllTriggered
=
function
(
callback
,
scope
)
{
this
.
exec
(
'getTriggered'
,
null
,
callback
,
scope
);
this
.
core
.
getAllTriggered
(
callback
,
scope
);
};
/**
...
...
@@ -394,14 +299,7 @@ exports.getAllTriggered = function (callback, scope) {
* The callback function's scope
*/
exports
.
hasPermission
=
function
(
callback
,
scope
)
{
var
fn
=
this
.
createCallbackFn
(
callback
,
scope
);
if
(
device
.
platform
!=
'iOS'
)
{
fn
(
true
);
return
;
}
exec
(
fn
,
null
,
'LocalNotification'
,
'hasPermission'
,
[]);
this
.
core
.
hasPermission
(
callback
,
scope
);
};
/**
...
...
@@ -413,14 +311,7 @@ exports.hasPermission = function (callback, scope) {
* The callback function's scope
*/
exports
.
registerPermission
=
function
(
callback
,
scope
)
{
var
fn
=
this
.
createCallbackFn
(
callback
,
scope
);
if
(
device
.
platform
!=
'iOS'
)
{
fn
(
true
);
return
;
}
exec
(
fn
,
null
,
'LocalNotification'
,
'registerPermission'
,
[]);
this
.
core
.
registerPermission
(
callback
,
scope
);
};
...
...
@@ -434,7 +325,7 @@ exports.registerPermission = function (callback, scope) {
exports
.
add
=
function
()
{
console
.
warn
(
'Depreated: Please use `notification.local.schedule` instead.'
);
export
s
.
schedule
.
apply
(
this
,
arguments
);
thi
s
.
schedule
.
apply
(
this
,
arguments
);
};
/**
...
...
@@ -444,7 +335,7 @@ exports.add = function () {
exports
.
promptForPermission
=
function
()
{
console
.
warn
(
'Depreated: Please use `notification.local.registerPermission` instead.'
);
export
s
.
registerPermission
.
apply
(
this
,
arguments
);
thi
s
.
registerPermission
.
apply
(
this
,
arguments
);
};
...
...
@@ -463,14 +354,7 @@ exports.promptForPermission = function () {
* The callback function's scope
*/
exports
.
on
=
function
(
event
,
callback
,
scope
)
{
if
(
!
this
.
_listener
[
event
])
{
this
.
_listener
[
event
]
=
[];
}
var
item
=
[
callback
,
scope
||
window
];
this
.
_listener
[
event
].
push
(
item
);
this
.
core
.
on
(
event
,
callback
,
scope
);
};
/**
...
...
@@ -482,274 +366,5 @@ exports.on = function (event, callback, scope) {
* The function to be exec as callback
*/
exports
.
un
=
function
(
event
,
callback
)
{
var
listener
=
this
.
_listener
[
event
];
if
(
!
listener
)
return
;
for
(
var
i
=
0
;
i
<
listener
.
length
;
i
++
)
{
var
fn
=
listener
[
i
][
0
];
if
(
fn
==
callback
)
{
listener
.
splice
(
i
,
1
);
break
;
}
}
this
.
core
.
un
(
event
,
callback
,
scope
);
};
/***********
* MEMBERS *
***********/
// Default values
exports
.
_defaults
=
{
text
:
''
,
title
:
''
,
sound
:
'res://platform_default'
,
badge
:
0
,
id
:
"0"
,
data
:
undefined
,
every
:
undefined
,
at
:
undefined
};
// listener
exports
.
_listener
=
{};
/***********
* PRIVATE *
***********/
/**
* Merge custom properties with the default values.
*
* @param {Object} options
* Set of custom values
*
* @retrun {Object}
* The merged property list
*/
exports
.
mergeWithDefaults
=
function
(
options
)
{
var
defaults
=
this
.
getDefaults
();
options
.
at
=
this
.
getValueFor
(
options
,
'at'
,
'firstAt'
,
'date'
);
options
.
text
=
this
.
getValueFor
(
options
,
'text'
,
'message'
);
options
.
data
=
this
.
getValueFor
(
options
,
'data'
,
'json'
);
if
(
options
.
at
===
undefined
||
options
.
at
===
null
)
{
options
.
at
=
new
Date
();
}
for
(
var
key
in
defaults
)
{
if
(
options
[
key
]
===
null
||
options
[
key
]
===
undefined
)
{
if
(
options
.
hasOwnProperty
(
key
)
&&
[
'data'
,
'sound'
].
indexOf
(
key
)
>
-
1
)
{
options
[
key
]
=
undefined
;
}
else
{
options
[
key
]
=
defaults
[
key
];
}
}
}
for
(
key
in
options
)
{
if
(
!
defaults
.
hasOwnProperty
(
key
))
{
delete
options
[
key
];
}
}
return
options
;
};
/**
* Convert the passed values to their required type.
*
* @param {Object} options
* Set of custom values
*
* @retrun {Object}
* The converted property list
*/
exports
.
convertProperties
=
function
(
options
)
{
if
(
options
.
id
)
{
if
(
isNaN
(
options
.
id
))
{
options
.
id
=
this
.
getDefaults
().
id
;
}
else
{
options
.
id
=
options
.
id
.
toString
();
}
}
if
(
options
.
title
)
{
options
.
title
=
options
.
title
.
toString
();
}
if
(
options
.
text
)
{
options
.
text
=
options
.
text
.
toString
();
}
if
(
options
.
badge
)
{
if
(
isNaN
(
options
.
badge
))
{
options
.
badge
=
this
.
getDefaults
().
badge
;
}
else
{
options
.
badge
=
Number
(
options
.
badge
);
}
}
if
(
typeof
options
.
at
==
'object'
)
{
options
.
at
=
Math
.
round
(
options
.
at
.
getTime
()
/
1000
);
}
if
(
typeof
options
.
data
==
'object'
)
{
options
.
data
=
JSON
.
stringify
(
options
.
data
);
}
return
options
;
};
/**
* Merge platform specific properties into the default ones.
*
* @return {Object}
* The default properties for the platform
*/
exports
.
applyPlatformSpecificOptions
=
function
()
{
var
defaults
=
this
.
_defaults
;
switch
(
device
.
platform
)
{
case
'Android'
:
defaults
.
icon
=
'res://icon'
;
defaults
.
smallIcon
=
'res://ic_popup_reminder'
;
defaults
.
ongoing
=
false
;
defaults
.
led
=
'FFFFFF'
;
break
;
}
return
defaults
;
};
/**
* Create callback, which will be executed within a specific scope.
*
* @param {Function} callbackFn
* The callback function
* @param {Object} scope
* The scope for the function
*
* @return {Function}
* The new callback function
*/
exports
.
createCallbackFn
=
function
(
callbackFn
,
scope
)
{
if
(
typeof
callbackFn
!=
'function'
)
return
;
return
function
()
{
callbackFn
.
apply
(
scope
||
this
,
arguments
);
};
};
/**
* Convert the IDs to Strings.
*
* @param {String/Number[]} ids
*
* @return Array of Strings
*/
exports
.
convertIds
=
function
(
ids
)
{
var
convertedIds
=
[];
for
(
var
i
=
0
;
i
<
ids
.
length
;
i
++
)
{
convertedIds
.
push
(
ids
[
i
].
toString
());
}
return
convertedIds
;
};
/**
* First found value for the given keys.
*
* @param {Object} options
* Object with key-value properties
* @param {String[]} keys*
* Key list
*/
exports
.
getValueFor
=
function
(
options
)
{
var
keys
=
Array
.
apply
(
null
,
arguments
).
slice
(
1
);
for
(
var
i
=
0
;
i
<
keys
.
length
;
i
++
)
{
var
key
=
keys
[
i
];
if
(
options
.
hasOwnProperty
(
key
))
{
return
options
[
key
];
}
}
};
/**
* Fire event with given arguments.
*
* @param {String} event
* The event's name
* @param {args*}
* The callback's arguments
*/
exports
.
fireEvent
=
function
(
event
)
{
var
args
=
Array
.
apply
(
null
,
arguments
).
slice
(
1
),
listener
=
this
.
_listener
[
event
];
if
(
!
listener
)
return
;
for
(
var
i
=
0
;
i
<
listener
.
length
;
i
++
)
{
var
fn
=
listener
[
i
][
0
],
scope
=
listener
[
i
][
1
];
fn
.
apply
(
scope
,
args
);
}
};
/**
* Execute the native counterpart.
*
* @param {String} action
* The name of the action
* @param args[]
* Array of arguments
* @param {Function} callback
* The callback function
* @param {Object} scope
* The scope for the function
*/
exports
.
exec
=
function
(
action
,
args
,
callback
,
scope
)
{
var
fn
=
this
.
createCallbackFn
(
callback
,
scope
),
params
=
[];
if
(
Array
.
isArray
(
args
))
{
params
=
args
;
}
else
if
(
args
)
{
params
.
push
(
args
);
}
exec
(
fn
,
null
,
'LocalNotification'
,
action
,
params
);
};
/*********
* HOOKS *
*********/
// Called after 'deviceready' event
channel
.
deviceready
.
subscribe
(
function
()
{
// Device is ready now, the listeners are registered
// and all queued events can be executed.
exec
(
null
,
null
,
'LocalNotification'
,
'deviceready'
,
[]);
});
// Called before 'deviceready' event
channel
.
onCordovaReady
.
subscribe
(
function
()
{
// Device plugin is ready now
channel
.
onCordovaInfoReady
.
subscribe
(
function
()
{
// Merge platform specifics into defaults
exports
.
applyPlatformSpecificOptions
();
});
});
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment