Cache public signup policy lookup

This commit is contained in:
pavlov346346-source 2026-09-22 19:24:45 +08:00
parent 646edfefde
commit 8e0da59b09

View File

@ -10,16 +10,22 @@
const client=()=>cloud()?.getClient?.()||null; const client=()=>cloud()?.getClient?.()||null;
const esc=value=>window.SunSafe?.escapeHTML?window.SunSafe.escapeHTML(String(value??'')):String(value??''); const esc=value=>window.SunSafe?.escapeHTML?window.SunSafe.escapeHTML(String(value??'')):String(value??'');
const PLAN_LABELS={basic:'Базовый',professional:'Профессиональный',full:'Полный'}; const PLAN_LABELS={basic:'Базовый',professional:'Профессиональный',full:'Полный'};
let signupPolicy={checked:false,promoOptional:false,defaultPlan:'basic'}; let signupPolicy={checked:false,promoOptional:false,defaultPlan:'basic'},signupPolicyPromise=null;
async function refreshSignupPolicy(c=client()){ async function refreshSignupPolicy(c=client(),force=false){
if(signupPolicy.checked&&!force)return signupPolicy;
if(signupPolicyPromise)return signupPolicyPromise;
if(!c)return signupPolicy; if(!c)return signupPolicy;
try{ const task=(async()=>{
const {data,error}=await c.rpc('caterium_public_signup_policy'); try{
if(error)throw error; const {data,error}=await c.rpc('caterium_public_signup_policy');
signupPolicy={checked:true,promoOptional:data?.promo_optional===true,defaultPlan:data?.default_plan==='basic'?'basic':'basic'}; if(error)throw error;
}catch(_){signupPolicy={checked:true,promoOptional:false,defaultPlan:'basic'};} signupPolicy={checked:true,promoOptional:data?.promo_optional===true,defaultPlan:data?.default_plan==='basic'?'basic':'basic'};
return signupPolicy; }catch(_){signupPolicy={checked:true,promoOptional:false,defaultPlan:'basic'};}
return signupPolicy;
})();
signupPolicyPromise=task;
try{return await task}finally{if(signupPolicyPromise===task)signupPolicyPromise=null;}
} }
function promoHintText(){return signupPolicy.promoOptional?'Без промокода будет создана компания на Базовом тарифе. Промокод может активировать другой тариф и пробный период.':'Для создания новой компании требуется действующий промокод.';} function promoHintText(){return signupPolicy.promoOptional?'Без промокода будет создана компания на Базовом тарифе. Промокод может активировать другой тариф и пробный период.':'Для создания новой компании требуется действующий промокод.';}
function renderPromoPolicy(){const label=$('sunGatePromoLabelTextV181'),hint=$('sunGatePromoHintV181');if(label)label.textContent=signupPolicy.promoOptional?'Промокод — необязательно':'Промокод пробной версии';if(hint&&!String($('sunGatePromoV181')?.value||'').trim())hint.textContent=promoHintText();} function renderPromoPolicy(){const label=$('sunGatePromoLabelTextV181'),hint=$('sunGatePromoHintV181');if(label)label.textContent=signupPolicy.promoOptional?'Промокод — необязательно':'Промокод пробной версии';if(hint&&!String($('sunGatePromoV181')?.value||'').trim())hint.textContent=promoHintText();}