diff --git a/assets/audio/sonar.mp3 b/assets/audio/sonar.mp3 deleted file mode 100644 index 3cc376a..0000000 Binary files a/assets/audio/sonar.mp3 and /dev/null differ diff --git a/assets/audio/sonar.ogg b/assets/audio/sonar.ogg deleted file mode 100644 index 77aadec..0000000 Binary files a/assets/audio/sonar.ogg and /dev/null differ diff --git a/index.html b/index.html index 2044013..6c1b8bb 100644 --- a/index.html +++ b/index.html @@ -277,7 +277,6 @@ $ openssl req -nodes -newkey rsa:4096 -keyout relay.pem -x509 -days 365 -out rel
-

Connection to WeeChat lost

diff --git a/js/glowingbear.js b/js/glowingbear.js index 9a6002c..a5faf9d 100644 --- a/js/glowingbear.js +++ b/js/glowingbear.js @@ -239,6 +239,11 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', models.reinitialize(); $rootScope.$emit('notificationChanged'); $scope.connectbutton = 'Connect'; + + // Clear all cordova notifications + if (window.plugin !== undefined && window.plugin.notification !== undefined && window.plugin.notification.local !== undefined) { + window.plugin.notification.local.cancelAll(); + } }); $scope.connectbutton = 'Connect'; diff --git a/js/notifications.js b/js/notifications.js index 96bc63c..2ab5f9a 100644 --- a/js/notifications.js +++ b/js/notifications.js @@ -22,6 +22,21 @@ weechat.factory('notifications', ['$rootScope', '$log', 'models', 'settings', fu window.webkitNotifications.requestPermission(); } } + + // Add cordova local notification click handler + if (window.plugin !== undefined && window.plugin.notification !== undefined && window.plugin.notification.local !== undefined) { + window.plugin.notification.local.onclick = function (id, state, json) { + // Parse payload + var data = JSON.parse(json); + var buffer = data.buffer; + if (buffer) { + // Hide sidebar, open notification buffer + // TODO does this work? + $rootScope.hideSidebar(); + models.setActiveBuffer(buffer); + } + }; + } }; @@ -85,40 +100,54 @@ weechat.factory('notifications', ['$rootScope', '$log', 'models', 'settings', fu title += buffer.shortName; title += buffer.fullName.replace(/irc.([^\.]+)\..+/, " ($1)"); - var notification = new Notification(title, { - body: body, - icon: 'assets/img/favicon.png' - }); - - // Save notification, so we can close all outstanding ones when disconnecting - notification.id = notifications.length; - notifications.push(notification); + // Chrome for Android doesn't know this + if (typeof Notification !== 'undefined') { + var notification = new Notification(title, { + body: body, + icon: 'assets/img/favicon.png' + }); - // Cancel notification automatically - var timeout = 15*1000; - notification.onshow = function() { - setTimeout(function() { + // Save notification, so we can close all outstanding ones when disconnecting + notification.id = notifications.length; + notifications.push(notification); + + // Cancel notification automatically + var timeout = 15*1000; + notification.onshow = function() { + setTimeout(function() { + notification.close(); + }, timeout); + }; + + // Click takes the user to the buffer + notification.onclick = function() { + models.setActiveBuffer(buffer.id); + window.focus(); notification.close(); - }, timeout); - }; - - // Click takes the user to the buffer - notification.onclick = function() { - models.setActiveBuffer(buffer.id); - window.focus(); - notification.close(); - }; - - // Remove from list of active notifications - notification.onclose = function() { - delete notifications[this.id]; - }; - - if (settings.soundnotification) { - // TODO fill in a sound file - var audioFile = "assets/audio/sonar"; - var soundHTML = ''; - document.getElementById("soundNotification").innerHTML = soundHTML; + }; + + // Remove from list of active notifications + notification.onclose = function() { + delete notifications[this.id]; + }; + + } else if (window.plugin !== undefined && window.plugin.notification !== undefined && window.plugin.notification.local !== undefined) { + // Cordova local notification + // Calculate notification id from buffer ID + // Needs to be unique number, but we'll only ever have one per buffer + var id = parseInt(buffer.id, 16); + + // Cancel previous notification for buffer (if there was one) + window.plugin.notification.local.cancel(id); + + // Send new notification + window.plugin.notification.local.add({ + id: id, + message: body, + title: title, + autoCancel: true, + json: JSON.stringify({ buffer: buffer.id }) // remember buffer id for when the notification is clicked + }); } };