toastProxy.js 1.77 KB
/**
 * @author Piotr Smolarski <ph0ndragxdev@gmail.com>
 */
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);