From 5cc359a4ea2f52ef787196d74b12b245ed62f249 Mon Sep 17 00:00:00 2001
From: hmhealey <harrisonmhealey@gmail.com>
Date: Thu, 4 Feb 2016 16:51:32 -0500
Subject: Changed notifications to only request permission once per session if
 the user clicks 'Not now' on Firefox

---
 web/react/utils/utils.jsx | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

(limited to 'web/react/utils/utils.jsx')

diff --git a/web/react/utils/utils.jsx b/web/react/utils/utils.jsx
index e8cfc82bc..6bb7baa64 100644
--- a/web/react/utils/utils.jsx
+++ b/web/react/utils/utils.jsx
@@ -142,16 +142,24 @@ export function getCookie(name) {
     }
 }
 
+var requestedNotificationPermission = false;
+
 export function notifyMe(title, body, channel) {
-    if ('Notification' in window && Notification.permission !== 'denied') {
-        Notification.requestPermission(function onRequestPermission(permission) {
+    if (!('Notification' in window)) {
+        return;
+    }
+
+    if (Notification.permission === 'granted' || (Notification.permission === 'default' && !requestedNotificationPermission)) {
+        requestedNotificationPermission = true;
+
+        Notification.requestPermission((permission) => {
             if (Notification.permission !== permission) {
                 Notification.permission = permission;
             }
 
             if (permission === 'granted') {
-                var notification = new Notification(title, {body: body, tag: body, icon: '/static/images/icon50x50.png'});
-                notification.onclick = function onClick() {
+                var notification = new Notification(title, {body, tag: body, icon: '/static/images/icon50x50.png'});
+                notification.onclick = () => {
                     window.focus();
                     if (channel) {
                         switchChannel(channel);
@@ -159,7 +167,7 @@ export function notifyMe(title, body, channel) {
                         window.location.href = TeamStore.getCurrentTeamUrl() + '/channels/town-square';
                     }
                 };
-                setTimeout(function closeNotificationOnTimeout() {
+                setTimeout(() => {
                     notification.close();
                 }, 5000);
             }
-- 
cgit v1.2.3-1-g7c22

