From 66c8c53b41b615147a836d63571964d79310d5ec Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Lorenz=20H=C3=BCbschle-Schneider?= Date: Sun, 18 Mar 2018 11:35:07 +0100 Subject: [PATCH] Fix nicklist swipe behaviour for buffers without a nicklist We shouldn't update the swipe state if the active doesn't have a nicklist. The (previously) required double-right-swipe to get to the sidebar was confusing and a bug --- js/glowingbear.js | 24 +++++++++++++++--------- 1 file changed, 15 insertions(+), 9 deletions(-) diff --git a/js/glowingbear.js b/js/glowingbear.js index 227f32d..3276cb5 100644 --- a/js/glowingbear.js +++ b/js/glowingbear.js @@ -356,7 +356,9 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', } else if ($scope.swipeStatus === 0) { // show nicklist $scope.swipeStatus = -1; - $scope.updateShowNicklist(); + if (!$scope.updateShowNicklist()) { + $scope.swipeStatus = 0; + } } else if ($scope.swipeStatus === -1) { /* do nothing */ } else { @@ -761,26 +763,30 @@ weechat.controller('WeechatCtrl', ['$rootScope', '$scope', '$store', '$timeout', $scope.updateShowNicklist(); }); $scope.showNicklist = false; - // Utility function that template can use to check if nicklist should - // be displayed for current buffer or not - // is called on buffer switch and certain swipe actions + // Utility function that template can use to check if nicklist should be + // displayed for current buffer or not is called on buffer switch and + // certain swipe actions. Sets $scope.showNicklist accordingly and returns + // whether the buffer even has a nicklist to show. $scope.updateShowNicklist = function() { - $scope.showNicklist = (function() { + // returns array of booleans: [show nicklist, buffer has nicklist] + var result = (function() { var ab = models.getActiveBuffer(); // Check whether buffer exists and nicklist is non-empty if (!ab || ab.isNicklistEmpty()) { - return false; + return [false, false]; } // Check if nicklist is disabled in settings (ignored on mobile) if (!utils.isMobileUi() && settings.nonicklist) { - return false; + return [false, true]; } // mobile: hide nicklist unless overriden by setting or swipe action if (utils.isMobileUi() && !settings.alwaysnicklist && $scope.swipeStatus !== -1) { - return false; + return [false, true]; } - return true; + return [true, true]; })(); + $scope.showNicklist = result[0]; + return result[1]; }; //XXX not sure whether this belongs here