diff --git a/plugin.xml b/plugin.xml index 67781b6..02f663a 100755 --- a/plugin.xml +++ b/plugin.xml @@ -72,13 +72,23 @@ - - - - - - - - + + + + + + + + + + + + + + + + + + diff --git a/src/windows/toastProxy.js b/src/windows/toastProxy.js new file mode 100644 index 0000000..5de2e46 --- /dev/null +++ b/src/windows/toastProxy.js @@ -0,0 +1,56 @@ +/** + * @author Piotr Smolarski + */ +var toastProxy = { + + lastDisplayedNotification: null, + + show: function(successCallback, errorCallback, options) { + var notifications = Windows.UI.Notifications; + + var template = notifications.ToastTemplateType.ToastText01; + var toastXml = notifications.ToastNotificationManager.getTemplateContent(template); + + var toastTextElements = toastXml.getElementsByTagName("text"); + toastTextElements[0].appendChild(toastXml.createTextNode(options[0].message)); + + var toastNode = toastXml.selectSingleNode("/toast"); + toastNode.setAttribute("duration", options[0].duration); + + var toast = new notifications.ToastNotification(toastXml); + + toast.onactivated = function (event) { + toastProxy.lastDisplayedNotification = null; + successCallback({ + event: "touch", + message: options[0].message, + data: options[0].data, + }); + } + + toast.ondismissed = function (event) { + toastProxy.lastDisplayedNotification = null; + successCallback({ + event: "hide", + message: options[0].message, + data: options[0].data + }); + } + + toast.onfailed = function(err) { + toastProxy.lastDisplayedNotification = null; + errorCallback(err); + } + + notifications.ToastNotificationManager.createToastNotifier().show(toast); + }, + + hide: function() { + if (this.lastDisplayedNotification !== null) { + notifications.ToastNotificationManager.createToastNotifier().hide(toast); + this.lastDisplayedNotification = null; + } + } +} + +cordova.commandProxy.add("Toast", toastProxy);