Share Gaia assets and adapters, keep private profiles and development documents local, and update both public READMEs.
25 lines
1.2 KiB
JavaScript
25 lines
1.2 KiB
JavaScript
// The local page follows Gaia's language, independently of Gecko's locale.
|
|
let welcomeLanguage=navigator.language;
|
|
function sendWelcomeLanguage() {
|
|
document.getElementById('vulpes-local-home')?.contentWindow.postMessage({
|
|
type:'vulpes-welcome-language',language:welcomeLanguage
|
|
},location.origin);
|
|
}
|
|
if(navigator.mozSettings) {
|
|
const request=navigator.mozSettings.createLock().get('language.current');
|
|
request.onsuccess=()=>{welcomeLanguage=request.result['language.current'] || navigator.language;sendWelcomeLanguage();};
|
|
navigator.mozSettings.addObserver('language.current',event=>{
|
|
welcomeLanguage=event.settingValue || navigator.language;sendWelcomeLanguage();
|
|
});
|
|
}
|
|
// Only the bundled welcome frame may request browser navigation.
|
|
addEventListener('message', event => {
|
|
const frame=document.getElementById('vulpes-local-home');
|
|
if(event.source!==frame?.contentWindow || event.origin!==location.origin) return;
|
|
if(event.data?.type==='vulpes-welcome-ready'){sendWelcomeLanguage();return;}
|
|
if(event.data?.type!=='vulpes-welcome-open') return;
|
|
let url;
|
|
try { url=new URL(event.data.url); } catch (_) { return; }
|
|
if(!['http:','https:'].includes(url.protocol)) return;
|
|
new MozActivity({name:'view',data:{type:'url',url:url.href}});
|
|
});
|