Ask confirmation before closing if user has unsent input

This commit is contained in:
David Cormier 2014-08-31 10:29:13 -04:00
parent 24f63be25c
commit 9438c3844f
3 changed files with 17 additions and 5 deletions

View file

@ -280,7 +280,7 @@ $ openssl req -nodes -newkey rsa:4096 -keyout relay.pem -x509 -days 365 -out rel
</table>
</div>
<div class="footer" ng-class="{'withnicklist': showNicklist}">
<div input-bar input-id="sendMessage"></div>
<div input-bar input-id="sendMessage" command="command"></div>
</div>
</div>
<div id="soundNotification"></div>

View file

@ -2,6 +2,8 @@ var weechat = angular.module('weechat', ['ngRoute', 'localStorage', 'weechatMode
weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', '$log', 'models', 'connection', 'notifications', 'utils', function ($rootScope, $scope, $store, $timeout, $log, models, connection, notifications, utils) {
$scope.command = '';
// From: http://stackoverflow.com/a/18539624 by StackOverflow user "plantian"
$rootScope.countWatchers = function () {
var q = [$rootScope], watchers = 0, scope;
@ -611,10 +613,19 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout',
// Prevent user from accidentally leaving the page
window.onbeforeunload = function(event) {
if ($rootScope.connected) {
$scope.disconnect();
if ($scope.command !== null && $scope.command !== '') {
event.preventDefault();
// Chrome requires this
// Firefox does not show the site provides message
event.returnValue = "Any unsent input will be lost. Are you sure that you want to quit?";
} else {
if ($rootScope.connected) {
$scope.disconnect();
}
$scope.favico.reset();
}
$rootScope.favico.reset();
};
}]);

View file

@ -7,7 +7,8 @@ weechat.directive('inputBar', function() {
templateUrl: 'directives/input.html',
scope: {
inputId: '@inputId'
inputId: '@inputId',
command: '=command'
},
controller: ['$rootScope', '$scope', '$element', '$log', 'connection', 'models', function($rootScope,