1// Verifica campos obrigatórios do perfil após login e exibe aviso se houver pendências. 2// Quem decide ONDE isso roda é custom-theme-assets.php: apenas na página do curso ou 3// da aula, e só quando o curso NÃO está aberto para perfil incompleto. Em curso aberto 4// a cobrança é feita pelo formulário parcial antes da primeira aula. 5// A lista de campos vem de perfil.schema.js â não duplicar aqui. 6 7(function () { 8 9 function hasPendingFields(perfil) { 10 const missing = perfil_campos_faltando(perfil, perfil_schema.required); 11 if (missing.length) { 12 //console.log('[perfil-check] campos faltando:', missing); 13 } 14 return missing.length > 0; 15 } 16 17 // A variante (check verde sem CPF, exclamação laranja com CPF) é do helper do 18 // primeiro acesso; sem ele, abre na variante padrão do markup. 19 function showIncompleteModal(perfil) { 20 const helpers = window.RMEPrimeiroAcesso; 21 if (helpers && typeof helpers.exibir_modal_perfil === 'function') { 22 helpers.exibir_modal_perfil(perfil); 23 return; 24 } 25 const overlay = document.querySelector('.profile-incomplete-overlay'); 26 if (overlay) overlay.classList.add('active'); 27 } 28 29 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 30 // [DEBUG-MODAL] TEMPORÃRIO â remover antes de subir para produção. 31 // ?perfil_incompleto=true força a exibição do modal sem precisar zerar o 32 // perfil na API só para conferir o layout. Não valida login nem perfil. 33 // Para remover: apague este bloco e a chamada marcada com [DEBUG-MODAL]. 34 function forcarModalDebug() { 35 if (window.location.search.indexOf('perfil_incompleto=true') === -1) return false; 36 37 console.warn('[perfil-check] modal forçado via querystring (debug)'); 38 showIncompleteModal(); 39 40 return true; 41 } 42 // âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ 43 44 document.addEventListener('DOMContentLoaded', function () { 45 if (forcarModalDebug()) return; // [DEBUG-MODAL] 46 47 if (typeof firebase === 'undefined' || typeof vAPI_cursos === 'undefined') return; 48 if (typeof perfil_schema === 'undefined') return; 49 50 firebase.auth().onAuthStateChanged(function (user) { 51 if (!user) return; 52 53 user.getIdToken().then(function (accessToken) { 54 vAPI_cursos.get_perfil(accessToken).then(function (perfil) { 55 if (hasPendingFields(perfil)) { 56 showIncompleteModal(perfil); 57 } 58 }).catch(function () { 59 // Falha silenciosa: não exibir modal se a API estiver indisponÃvel 60 }); 61 }); 62 }); 63 }); 64 65})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.