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.
This commit is contained in:
parent
93e3a48004
commit
b38dea0597
25901 changed files with 9982925 additions and 369 deletions
34
assets/webapps/system.gaiamobile.org/mobile_id/js/ui.js
Normal file
34
assets/webapps/system.gaiamobile.org/mobile_id/js/ui.js
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
;(function(exports){'use strict';var initialized;var allowButton,header,verificationCodeButton,multistateButton,panelsContainer,verificationCodeInput,msisdnInput,msisdnAutomaticOptions,typeMSISDNButton,selectAutomaticOptionsButton,msisdnContainer,legend,legendParent,countryCodesSelect,verificationPanel,msisdnSelectionPanel,verificationCodeTimer,stepsExplanation,verificationExplanation,successExplanation;var isVerified=false;var isVerifying=false;var isVerificationCode=false;var isTimeoutOver=false;var isManualMSISDN=false;var buttonCurrentStatus;var appName,identity;var verificationInterval,verificationIntervalSteps=0,currentIntervalStep=0;var countryCodes;function _setMultibuttonStep(stepName){buttonCurrentStatus=stepName;var shift=0;switch(stepName){case'allow':shift=0;allowButton.className='msb-button-step state-allow';allowButton.disabled=false;break;case'sending':shift=0;allowButton.className='msb-button-step state-sending';allowButton.disabled=true;break;case'verify':shift=-50;verificationCodeButton.className='msb-button-step state-verify';verificationCodeButton.disabled=false;break;case'verifying':shift=-50;verificationCodeButton.className='msb-button-step state-verifying';verificationCodeButton.disabled=true;break;case'verified':shift=-50;verificationCodeButton.className='msb-button-step state-verified';verificationCodeButton.disabled=false;break;case'resend':shift=-50;verificationCodeButton.className='msb-button-step state-resend';verificationCodeButton.disabled=false;break;}
|
||||
multistateButton.style.transform='translateX('+shift+'%)';}
|
||||
function _setPanelsStep(stepName){var shift=0;switch(stepName){case'msisdn':shift=0;break;case'verification':shift=-25;break;case'done':shift=-50;break;}
|
||||
panelsContainer.style.transform='translateX('+shift+'%)';}
|
||||
function _disablePanel(stepName){switch(stepName){case'msisdn':msisdnAutomaticOptions.classList.add('disabled');typeMSISDNButton.classList.add('disabled');selectAutomaticOptionsButton.classList.add('disabled');countryCodesSelect.classList.add('disabled');msisdnInput.disabled=true;break;case'verification':verificationCodeInput.disabled=true;break;}}
|
||||
function _enablePanel(stepName){switch(stepName){case'msisdn':msisdnAutomaticOptions.classList.remove('disabled');typeMSISDNButton.classList.remove('disabled');selectAutomaticOptionsButton.classList.remove('disabled');countryCodesSelect.classList.remove('disabled');msisdnInput.disabled=false;break;case'verification':verificationCodeInput.disabled=false;break;}}
|
||||
function _msisdnContainerTranslate(step){isManualMSISDN=step===0?false:true;msisdnContainer.style.transform='translateX('+-1*50*step+'%)';}
|
||||
function _fieldErrorDance(element){element.addEventListener('animationend',function danceOver(){element.removeEventListener('animationend',danceOver);element.classList.remove('error');});element.classList.add('error');}
|
||||
function _fillCountryCodesList(callback){var xhr=new XMLHttpRequest();xhr.onreadystatechange=function fileLoaded(){if(xhr.readyState===4){if(xhr.status===0||xhr.status===200){countryCodes=xhr.response;var sortedObject=_sortCountriesByFullName();countryCodesSelect.innerHTML='';var ccFragment=document.createDocumentFragment();var added={};sortedObject.forEach(function(country){var mcc=country[0];if(added[countryCodes[mcc].code]){return;}
|
||||
var option=document.createElement('option');option.textContent=countryCodes[mcc].full+' ('+
|
||||
countryCodes[mcc].prefix+')';option.value=mcc;added[countryCodes[mcc].code]=true;ccFragment.appendChild(option);});countryCodesSelect.appendChild(ccFragment);var conn=window.navigator.mozMobileConnections?window.navigator.mozMobileConnections[0]:null;if(conn&&conn.voice&&conn.voice.network){countryCodesSelect.value=conn.voice.network.mcc;legend.innerHTML=countryCodes[countryCodesSelect.value].prefix;}
|
||||
callback();}else{console.error('Failed to fetch file: ',xhr.statusText);callback();}}};xhr.open('GET',' /shared/resources/mcc.json',true);xhr.responseType='json';xhr.send();}
|
||||
function _sortCountriesByFullName(){var sorted=[];for(var mcc in countryCodes){sorted.push([mcc,countryCodes[mcc].full]);}
|
||||
sorted=sorted.sort(function compareFunction(a,b){return a[1]>b[1];});return sorted;}
|
||||
function _getIdentitySelected(){var identity;if(isManualMSISDN){identity={prefix:countryCodes[countryCodesSelect.value].prefix,mcc:countryCodesSelect.value,phoneNumber:msisdnInput.value.length&&msisdnInput.value||null};}else{var query='input[name="msisdn-option"]:checked';var optionChecked=document.querySelector(query);if(optionChecked.dataset.identificationType==='msisdn'){identity={prefix:null,mcc:null,phoneNumber:optionChecked.value};}else{identity={serviceId:optionChecked.dataset.serviceId};}}
|
||||
return identity;}
|
||||
function _getCode(){return verificationCodeInput.value;}
|
||||
function _showVerificationPanel(phoneNumber){isVerificationCode=false;isVerifying=false;isVerified=true;clearInterval(verificationInterval);_setMultibuttonStep('verified');verificationCodeTimer.classList.remove('show');navigator.mozL10n.setAttributes(successExplanation,'successMessage',{phone_number:phoneNumber||'',app_name:appName});panelsContainer.addEventListener('transitionend',function readyToGif(){panelsContainer.removeEventListener('transitionend',readyToGif);document.querySelector('.done-panel').classList.add('done-panel-gif');});_setPanelsStep('done');}
|
||||
function _addEventListeners(){header.addEventListener('action',function onClose(){Controller.postCloseAction(isVerified);});typeMSISDNButton.addEventListener('click',function onManualMSISDN(){_msisdnContainerTranslate(1);});selectAutomaticOptionsButton.addEventListener('click',function onAutomaticMSISDN(){_msisdnContainerTranslate(0);});allowButton.addEventListener('click',function onAllow(){identity=_getIdentitySelected();if(identity.mcc&&(!identity.phoneNumber||isNaN(identity.phoneNumber))){_fieldErrorDance(msisdnInput);return;}
|
||||
_disablePanel('msisdn');_setMultibuttonStep('sending');Controller.postIdentity(identity);});verificationCodeButton.addEventListener('click',function onVerify(){if(!isVerified){if(verificationCodeButton.classList.contains('state-resend')){Controller.requestCode();verificationCodeInput.value='';_enablePanel('verification');_setMultibuttonStep('sending');isVerifying=false;isTimeoutOver=false;}else{var code=_getCode();if(!code.length||isNaN(code)||code.length<6){_fieldErrorDance(verificationCodeInput);return;}
|
||||
Controller.postVerificationCode(_getCode());_disablePanel('verification');_setMultibuttonStep('verifying');isVerifying=true;}
|
||||
return;}
|
||||
Controller.postCloseAction(isVerified);});countryCodesSelect.addEventListener('blur',function onSelectBlur(){countryCodesSelect.hidden=true;legend.innerHTML=countryCodes[countryCodesSelect.value].prefix;return;});legendParent.addEventListener('click',function onLegendClick(){countryCodesSelect.click();countryCodesSelect.focus();countryCodesSelect.hidden=false;return;});}
|
||||
var UI={init:function ui_init(params){var callback=params&¶ms.callback?params.callback:function(){};header=document.getElementById('header');allowButton=document.getElementById('allow-button');verificationCodeButton=document.getElementById('verify-button');multistateButton=document.getElementById('msb');panelsContainer=document.getElementById('panels-container');verificationCodeInput=document.getElementById('verification-code');msisdnInput=document.getElementById('msisdn-input');msisdnAutomaticOptions=document.querySelector('.phone-options-list');typeMSISDNButton=document.getElementById('add-msisdn');selectAutomaticOptionsButton=document.getElementById('do-automatic-msisdn');msisdnContainer=document.querySelector('.msisdn-selection-wrapper');legend=document.getElementById('legend');legendParent=document.getElementById('legend-parent');countryCodesSelect=document.getElementById('country-codes-select');verificationPanel=document.querySelector('.verification-panel');msisdnSelectionPanel=document.querySelector('.msisdn-selection-panel');verificationCodeTimer=document.getElementById('verification-code-timer');stepsExplanation=document.getElementById('mobile-id-explanation');verificationExplanation=document.getElementById('verification-code-explanation');successExplanation=document.getElementById('success-explanation');_fillCountryCodesList(function(){if(initialized){callback();return;}
|
||||
initialized=true;_addEventListeners();callback();});window.addEventListener('shown',function(){var title=header.querySelector('h1');title.textContent=title.textContent;});},localize:function ui_localize(name){appName=name;navigator.mozL10n.setAttributes(stepsExplanation,'mobileIDExplanation',{app_name:appName});},render:function ui_render(identifications){var optionsFragment=document.createDocumentFragment();if(!identifications||!identifications.length){_msisdnContainerTranslate(1);selectAutomaticOptionsButton.hidden=true;return;}
|
||||
var isPrimaryOption=false;for(var i=0,l=identifications.length;i<l;i++){var li=document.createElement('li');var label=document.createElement('label');var typeIcon=document.createElement('span');var radio=document.createElement('input');var radioMask=document.createElement('span');var name=document.createElement('p');var iconClasses='icon icon-simcardlock';if(identifications[i].primary){isPrimaryOption=true;radio.checked=true;iconClasses+=' primary';}else{iconClasses+=' sim'+(+identifications[i].serviceId+1);}
|
||||
typeIcon.className=iconClasses;name.removeAttribute('data-l10n-id');name.textContent=identifications[i].msisdn||identifications[i].operator;if(!name.textContent){navigator.mozL10n.setAttributes(name,'simLabel',{id:+identifications[i].serviceId+1});}
|
||||
radio.name='msisdn-option';radio.type='radio';if(identifications[i].serviceId!==undefined){radio.dataset.identificationType='serviceid';radio.dataset.serviceId=identifications[i].serviceId;}else{radio.dataset.identificationType='msisdn';}
|
||||
radio.value=identifications[i].msisdn||identifications[i].serviceId;radioMask.className='radio-mask';label.appendChild(typeIcon);label.appendChild(radio);label.appendChild(radioMask);label.appendChild(name);li.appendChild(label);optionsFragment.appendChild(li);}
|
||||
var phoneOptionsList=document.querySelector('.phone-options-list');if(!isPrimaryOption&&identifications.length>0){optionsFragment.children[0].querySelector('input').checked=true;}
|
||||
phoneOptionsList.innerHTML='';phoneOptionsList.appendChild(optionsFragment);},onVerifying:function ui_onverifiying(){_setMultibuttonStep('verifying');_disablePanel('verification');},onVerified:function ui_onverified(phoneNumber){if(isVerificationCode&&!isVerifying){_disablePanel('verification');verificationCodeInput.type='password';verificationCodeInput.value='FAKECODE';setTimeout(_showVerificationPanel.bind(this,phoneNumber),1000);}else{_showVerificationPanel(phoneNumber);}},onVerificationCode:function ui_onVerificationCode(params){isVerificationCode=true;_setMultibuttonStep('verify');_setPanelsStep('verification');_enablePanel('verification');navigator.mozL10n.setAttributes(verificationExplanation,'verificationCodeExplanation',{phone_number:identity.phoneNumber});isTimeoutOver=false;currentIntervalStep=+params.verificationTimeoutLeft;verificationIntervalSteps=+params.verificationTimeout;verificationCodeTimer.max=verificationIntervalSteps;verificationCodeTimer.value=currentIntervalStep;verificationCodeTimer.classList.add('show');verificationInterval=setInterval(function(){--currentIntervalStep;if(currentIntervalStep<0){if(!isVerifying){_setMultibuttonStep('resend');_disablePanel('verification');}
|
||||
document.activeElement.blur();isTimeoutOver=true;verificationCodeTimer.classList.remove('show');clearInterval(verificationInterval);return;}
|
||||
verificationCodeTimer.value=currentIntervalStep;},1000);},onerror:function ui_onError(error){switch(error){case'VERIFICATION_CODE_TIMEOUT':case'NO_RETRIES_LEFT':MobileIDErrorOverlay.show('errorTitle','timeoutErrorMessage');_disablePanel('verification');_setMultibuttonStep('resend');break;case'INVALID_PHONE_NUMBER':_enablePanel('msisdn');_setMultibuttonStep('allow');_fieldErrorDance(msisdnInput);break;case'INVALID_VERIFICATION_CODE':if(isTimeoutOver){_disablePanel('verification');_setMultibuttonStep('resend');isTimeoutOver=false;isVerifying=false;return;}
|
||||
_enablePanel('verification');_setMultibuttonStep('verify');_fieldErrorDance(verificationCodeInput);break;default:MobileIDErrorOverlay.show('errorTitle','serverErrorMessage',function onClick(){Controller.postCloseAction(isVerified);});break;}},setScroll:function ui_setScroll(){var bodyRect=document.body.getBoundingClientRect(),codeRect=verificationCodeInput.getBoundingClientRect(),msisdnInputRect=msisdnInput.getBoundingClientRect(),offsetCode=codeRect.top-bodyRect.top,offsetMSISDN=msisdnInputRect.top-bodyRect.top;window.addEventListener('resize',function onResized(){verificationPanel.scrollTop=offsetCode;msisdnSelectionPanel.scrollTop=offsetMSISDN;});}};exports.UI=UI;}(this));
|
||||
Loading…
Reference in a new issue