VulpesOS/gaia/apps/settings/js/firefox_accounts/menu.js
OverSu b38dea0597 Publish Vulpes Preview 15 sources for desktop, Android and Tundra
Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
2026-09-30 23:13:03 +02:00

67 lines
2.1 KiB
JavaScript
Executable file

/* global FxAccountsIACHelper, Normalizer */
/* exported FxaMenu */
'use strict';
var FxaMenu = (function fxa_menu() {
var fxaHelper,
menuStatus;
function init(helper) {
// allow mock to be passed in for unit testing
fxaHelper = helper || FxAccountsIACHelper;
menuStatus = document.getElementById('fxa-desc');
if(window.VulpesCompat){menuStatus.removeAttribute('data-l10n-id');menuStatus.textContent=(document.documentElement.lang||navigator.language).startsWith('fr')?'Service non disponible sur ce bureau':'Service unavailable on this desktop';return;}
// listen for status updates
onVisibilityChange();
// start by asking for current status
refreshStatus();
document.addEventListener('visibilitychange', onVisibilityChange);
}
function refreshStatus() {
fxaHelper.getAccount(onStatusChange, onStatusError);
}
// if e == null, user is logged out.
// if e.verified, user is logged in & verified.
// if !e.verified, user is logged in & unverified.
function onStatusChange(e) {
var email = e ? Normalizer.escapeHTML(e.email) : '';
if (!e) {
menuStatus.setAttribute('data-l10n-id', 'fxa-invitation');
menuStatus.removeAttribute('data-l10n-args');
} else if (e.verified) {
document.l10n.setAttributes(menuStatus, 'fxa-logged-in-text', {
email: email
});
} else { // unverified
document.l10n.setAttributes(menuStatus, 'fxa-confirm-email', {
email: email
});
}
}
function onStatusError(err) {
console.error('FxaMenu: Error getting Firefox Account: ' + err.error);
}
function onVisibilityChange() {
if (document.hidden) {
fxaHelper.removeEventListener('onlogin', refreshStatus);
fxaHelper.removeEventListener('onverified', refreshStatus);
fxaHelper.removeEventListener('onlogout', refreshStatus);
} else {
fxaHelper.addEventListener('onlogin', refreshStatus);
fxaHelper.addEventListener('onverified', refreshStatus);
fxaHelper.addEventListener('onlogout', refreshStatus);
refreshStatus();
}
}
return {
init: init
};
})();