Differential D13219 Diff 31956 webroot/rsrc/js/application/aphlict/behavior-desktop-notifications-control.js
Changeset View
Changeset View
Standalone View
Standalone View
webroot/rsrc/js/application/aphlict/behavior-desktop-notifications-control.js
- This file was added.
/** | |||||
* @provides javelin-behavior-desktop-notifications-control | |||||
* @requires javelin-behavior | |||||
* javelin-stratcom | |||||
* javelin-dom | |||||
* javelin-uri | |||||
* phabricator-notification | |||||
*/ | |||||
JX.behavior('desktop-notifications-control', function(config) { | |||||
var controlEl = JX.$(config.controlID); | |||||
var select = JX.DOM.find(controlEl, 'select'); | |||||
var statusEl = JX.$(config.statusID); | |||||
JX.DOM.listen( | |||||
select, | |||||
'change', | |||||
null, | |||||
function (e) { | |||||
if (!JX.Notification.supportsDesktopNotifications()) { | |||||
return; | |||||
} | |||||
var value = e.getTarget().value; | |||||
if (value == config.desktopMode) { | |||||
Notification.requestPermission( | |||||
function (permission) { | |||||
switch (permission) { | |||||
case 'default': | |||||
JX.DOM.setContent(statusEl.firstChild, config.cancelAsk); | |||||
break; | |||||
case 'granted': | |||||
JX.DOM.setContent(statusEl.firstChild, config.grantedAsk); | |||||
break; | |||||
case 'denied': | |||||
JX.DOM.setContent(statusEl.firstChild, config.deniedAsk); | |||||
break; | |||||
} | |||||
JX.DOM.show(statusEl); | |||||
}); | |||||
} else { | |||||
JX.DOM.hide(statusEl); | |||||
} | |||||
}); | |||||
if (!JX.Notification.supportsDesktopNotifications()) { | |||||
JX.DOM.setContent(statusEl.firstChild, config.noSupport); | |||||
JX.DOM.show(statusEl); | |||||
} | |||||
}); |