1import{d as e,b as t,_ as s,g as a,c as l,u as i,a as r,v as o,f as n,n as u}from"./Dyrbu-7z.js";import{f as c,e as d,r as m,an as p,p as g,$ as v,d as h,b as f,a2 as b,af as y,F as w,k,ag as x,W as _,O as S,l as $,ao as V,ae as M,ah as C,G as B,am as P,I as U,u as z,o as q,n as A}from"./DfjDuJYO.js";import{k as F,A as T,B as E,D as I,H as L}from"./BmBJFIy-.js";import{A as j}from"./eQ_GqXWO.js";import{A as R,f as D,h as N,g as H,B as O,i as W,k as Y,x as G,y as J,j as K,z as Q,C as X,t as Z,o as ee,u as te,D as se,w as ae,v as le,b as ie,d as re,e as oe,q as ne,E as ue,r as ce}from"./CqMZ4094.js";import{u as de}from"./DBu37bFY.js";import{useFormDataApiFetch as me,useClientApiFetch as pe}from"./BeY5Rt3u.js";import{u as ge}from"./BH9fckhG.js";import"./Coqek9-_.js";const ve=Symbol("head-component"),he={body:{type:Boolean,default:void 0},tagPosition:{type:String}},fe=e=>{const t=Object.fromEntries(Object.entries(e).filter((([e,t])=>void 0!==t)));return void 0!==t.body&&(t.tagPosition=t.body?"bodyClose":"head"),void 0!==t.renderPriority&&(t.tagPriority=t.renderPriority),t};function be(){return d(ve,ye,!0)}function ye(){const t=d(ve,null);if(t)return t;const s=m({}),a={input:s,entry:e(s)};return g(ve,a),a}const we={accesskey:String,autocapitalize:String,autofocus:{type:Boolean,default:void 0},class:{type:[String,Object,Array],default:void 0},contenteditable:{type:Boolean,default:void 0},contextmenu:String,dir:String,draggable:{type:Boolean,default:void 0},enterkeyhint:String,exportparts:String,hidden:{type:Boolean,default:void 0},id:String,inputmode:String,is:String,itemid:String,itemprop:String,itemref:String,itemscope:String,itemtype:String,lang:String,nonce:String,part:String,slot:String,spellcheck:{type:Boolean,default:void 0},style:{type:[String,Object,Array],default:void 0},tabindex:String,title:String,translate:String,renderPriority:[String,Number],tagPriority:{type:[String,Number]}};c({name:"NoScript",inheritAttrs:!1,props:{...we,...he,title:String},setup(e,{slots:t}){const{input:s}=be();s.noscript||=[];const a=s.noscript.push({})-1;return p((()=>s.noscript[a]=null)),()=>{const l=fe(e),i=t.default?.(),r=[];if(i)for(const e of i)e.children&&r.push(e.children);return r.length>0&&(l.innerHTML=r.join("")),s.noscript[a]=l,null}}}),c({name:"Link",inheritAttrs:!1,props:{...we,...he,as:String,crossorigin:String,disabled:Boolean,fetchpriority:String,href:String,hreflang:String,imagesizes:String,imagesrcset:String,integrity:String,media:String,prefetch:{type:Boolean,default:void 0},referrerpolicy:String,rel:String,sizes:String,title:String,type:String,methods:String,target:String},setup(e){const{input:t}=be();t.link||=[];const s=t.link.push({})-1;return p((()=>t.link[s]=null)),()=>(t.link[s]=fe(e),null)}}),c({name:"Base",inheritAttrs:!1,props:{...we,href:String,target:String},setup(e){const{input:t}=be();return p((()=>t.base=null)),()=>(t.base=fe(e),null)}});const ke=c({name:"Title",inheritAttrs:!1,setup(e,{slots:t}){const{input:s}=be();return p((()=>s.title=null)),()=>{const e=t.default?.();return s.title=e?.[0]?.children?String(e?.[0]?.children):void 0,null}}}),xe=c({name:"Meta",inheritAttrs:!1,props:{...we,charset:String,content:String,httpEquiv:String,name:String,property:String},setup(e){const{input:t}=be();t.meta||=[];const s=t.meta.push({})-1;return p((()=>t.meta[s]=null)),()=>{const a={"http-equiv":e.httpEquiv,...fe(e)};return"httpEquiv"in a&&delete a.httpEquiv,t.meta[s]=a,null}}});c({name:"Style",inheritAttrs:!1,props:{...we,...he,type:String,media:String,nonce:String,title:String,scoped:{type:Boolean,default:void 0}},setup(e,{slots:t}){const{input:s}=be();s.style||=[];const a=s.style.push({})-1;return p((()=>s.style[a]=null)),()=>{const l=fe(e),i=t.default?.()?.[0]?.children;return i&&(s.style[a]=l,l.textContent=i),null}}});const _e=c({name:"Head",inheritAttrs:!1,setup:(e,t)=>(ye(),()=>t.slots.default?.())});c({name:"Html",inheritAttrs:!1,props:{...we,manifest:String,version:String,xmlns:String},setup(e,t){const{input:s}=be();return p((()=>s.htmlAttrs=null)),()=>(s.htmlAttrs={...e,...t.attrs},t.slots.default?.())}});const Se={key:0,class:"text-center"},$e={class:"text-body-1 mb-4"},Ve={class:"text-body-2 text-medium-emphasis mb-6"},Me={class:"d-flex flex-column gap-3"},Ce={key:1},Be={class:"text-wrap text-caption"},Pe={href:"/docs/terms_of_service",class:"text-primary font-weight-medium",target:"_blank"},Ue={href:"/docs/privacy_policy",class:"text-primary font-weight-medium",target:"_blank"},ze={class:"text-center mt-4"},qe=s(c({__name:"EmailPasswordBindDialog",props:{modelValue:{type:Boolean}},emits:["update:modelValue","bind-success"],setup(e,{emit:s}){const a=e,l=s,{t:i}=v(),r=t(),o=F(),n=h({get:()=>a.modelValue,set:e=>l("update:modelValue",e)}),u=f(null),c=f(!1),d=f(!1),p=f(!1),g=f(!1),B=f(!1),P=f(null),U=m({email:"",password:"",confirmPassword:"",agreeTerms:!1}),z=m({show:!1,message:"",color:"success",timeout:4e3}),q=[e=>!!e||i("login.emailRequired"),e=>/.+@.+\..+/.test(e)||i("login.emailInvalid")],A=[e=>!!e||i("login.passwordRequired"),e=>e.length>=6||i("register.passwordTooShort")],X=[e=>!!e||i("register.confirmPasswordRequired"),e=>e===U.password||i("register.passwordsDoNotMatch")],Z=[e=>e||i("register.agreeTermsRequired")],ee=(e,t="success")=>{z.message=e,z.color=t,z.show=!0},te=()=>{c.value||d.value||p.value||(U.email="",U.password="",U.confirmPassword="",U.agreeTerms=!1,g.value=!1,B.value=!1,P.value=null,n.value=!1)},se=()=>{g.value=!g.value,U.confirmPassword="",U.agreeTerms=!1},ae=()=>{B.value=!1,P.value=null},le=async()=>
1{if(!u.value)return;const{valid:e}=await u.value.validate();e?g.value?await re():await ie():ee(i("login.formValidationError"),"error")},ie=async()=>{c.value=!0,ee(i("login.loggingInMessage"),"info");try{const e=(await T(o,U.email,U.password)).user;if(!e.emailVerified)return void ee(i("emailPasswordBind.emailNotVerified"),"error");const t=await e.getIdToken(!0);await r.addFirebaseLoginMethodWithToken(t),ee(i("emailPasswordBind.bindSuccess"),"success"),setTimeout((()=>{l("bind-success"),te()}),1500)}catch(e){ue(e)}finally{c.value=!1}},re=async()=>{c.value=!0,ee(i("register.registeringMessage"),"info");try{const e=(await E(o,U.email,U.password)).user;P.value=e,await I(e),B.value=!0,ee(i("register.verificationEmailSent"),"success")}catch(e){ue(e)}finally{c.value=!1}},oe=async()=>{if(P.value){d.value=!0;try{if(await L(P.value),P.value.emailVerified){ee(i("emailPasswordBind.emailVerified"),"success");const e=await P.value.getIdToken(!0);await r.addFirebaseLoginMethodWithToken(e),ee(i("emailPasswordBind.bindSuccess"),"success"),setTimeout((()=>{l("bind-success"),te()}),1500)}else ee(i("register.emailNotVerifiedYet"),"info")}catch(e){ee(i("register.verificationCheckError"),"error")}finally{d.value=!1}}},ne=async()=>{if(P.value){p.value=!0;try{await I(P.value),ee(i("register.verificationEmailResent"),"success")}catch(e){ee(i("register.resendVerificationError"),"error")}finally{p.value=!1}}},ue=e=>{const t=e;let s="";switch(t.code){case"auth/user-not-found":if(s=i("login.errorUserNotFound"),!g.value)return ee(i("emailPasswordBind.userNotFoundForBinding"),"info"),void setTimeout((()=>{g.value=!0}),2e3);break;case"auth/wrong-password":s=i("login.errorWrongPassword");break;case"auth/invalid-email":s=i("login.errorInvalidEmail");break;case"auth/user-disabled":s=i("login.errorUserDisabled");break;case"auth/email-already-in-use":if(s=i("register.errorEmailInUse"),g.value)return ee(i("emailPasswordBind.emailExistsSwitchToLogin"),"info"),void setTimeout((()=>{g.value=!1}),2e3);break;case"auth/weak-password":s=i("register.errorWeakPassword");break;case"auth/operation-not-allowed":s=i("login.errorOperationNotAllowed");break;default:s=t.message?.includes("已添å ")||t.message?.includes("already bound")?i("user.loginMethods.alreadyAdded"):t.message?.includes("Firebaseç¨æ·ç¶æå¼å¸¸")?i("user.loginMethods.firebaseStateError"):t.message||i("emailPasswordBind.unknownError")}ee(s,"error")};return(e,t)=>(y(),b(w,null,[k(R,{modelValue:n.value,"onUpdate:modelValue":t[4]||(t[4]=e=>n.value=e),"max-width":"500",persistent:""},{default:x((()=>[k(D,{class:"pa-4",elevation:"8"},{default:x((()=>[k(N,{class:"text-h6 text-center font-weight-bold pb-2"},{default:x((()=>[k(H,{start:"",color:"primary"},{default:x((()=>[...t[7]||(t[7]=[_("mdi-email-plus",-1)])])),_:1}),_(" "+S(g.value?e.$t("emailPasswordBind.register.title"):e.$t("emailPasswordBind.login.title")),1)])),_:1}),k(O,{class:"text-center pb-4 text-medium-emphasis"},{default:x((()=>[_(S(g.value?e.$t("emailPasswordBind.register.subtitle"):e.$t("emailPasswordBind.login.subtitle")),1)])),_:1}),k(W,null,{default:x((()=>[B.value?(y(),b("div",Se,[k(H,{size:"64",color:"primary",class:"mb-4"},{default:x((()=>[...t[8]||(t[8]=[_("mdi-email-check-outline",-1)])])),_:1}),$("div",$e,S(e.$t("register.verificationEmailSent")),1),$("div",Ve,S(e.$t("register.waitingForVerification")),1),$("div",Me,[k(Y,{color:"primary",variant:"outlined",loading:d.value,onClick:oe},{default:x((()=>[k(H,{start:""},{default:x((()=>[...t[9]||(t[9]=[_("mdi-refresh",-1)])])),_:1}),_(" "+S(e.$t("register.checkVerificationButton")),1)])),_:1},8,["loading"]),k(Y,{variant:"text",color:"primary",size:"small",loading:p.value,onClick:ne},{default:x((()=>[_(S(e.$t("register.resendVerificationButton")),1)])),_:1},8,["loading"]),k(Y,{variant:"text",color:"secondary",size:"small",onClick:ae},{default:x((()=>[_(S(e.$t("register.backToFormButton")),1)])),_:1})])])):(y(),b("div",Ce,[k(G,{ref_key:"formRef",ref:u,onSubmit:V(le,["prevent"])},{default:x((()=>[k(j,{modelValue:U.email,"onUpdate:modelValue":t[0]||(t[0]=e=>U.email=e),label:e.$t("login.emailLabel"),type:"email",rules:q,required:"","prepend-inner-icon":"mdi-email-outline",class:"mb-4"},null,8,["modelValue","label"]),k(j,{modelValue:U.password,"onUpdate:modelValue":t[1]||(t[1]=e=>U.password=e),label:e.$t("login.passwordLabel"),type:"password",rules:A,required:"","prepend-inner-icon":"mdi-lock-outline",class:"mb-4"},null,8,["modelValue","label"]),g.value?(y(),M(j,{key:0,modelValue:U.confirmPassword,"onUpdate:modelValue":t[2]||(t[2]=e=>U.confirmPassword=e),label:e.$t("register.confirmPasswordLabel"),type:"password",rules:X,required:"","prepend-inner-icon":"mdi-check-circle-outline",class:"mb-4"},null,8,["modelValue","label"])):C("",!0),g.value?(y(),M(J,{key:1,modelValue:U.agreeTerms,"onUpdate:modelValue":t[3]||(t[3]=e=>U.agreeTerms=e),rules:Z,color:"primary",class:"mb-4"}
1,{label:x((()=>[$("div",Be,[_(S(e.$t("register.agreeTermsPrefix"))+" ",1),$("a",Pe,S(e.$t("register.termsOfService")),1),_(" "+S(e.$t("register.and"))+" ",1),$("a",Ue,S(e.$t("register.privacyPolicy")),1)])])),_:1},8,["modelValue"])):C("",!0),k(Y,{type:"submit",block:"",loading:c.value,class:"mt-4 py-3 text-subtitle-1 font-weight-bold",color:"primary"},{default:x((()=>[_(S(g.value?e.$t("register.submitButton"):e.$t("login.submitButton")),1)])),_:1},8,["loading"]),$("div",ze,[k(Y,{variant:"text",color:"primary",size:"small",onClick:se},{default:x((()=>[_(S(g.value?e.$t("emailPasswordBind.switchToLogin"):e.$t("emailPasswordBind.switchToRegister")),1)])),_:1})])])),_:1},512)]))])),_:1}),k(K,{class:"justify-center pb-4"},{default:x((()=>[k(Y,{variant:"outlined",color:"grey",disabled:c.value||d.value||p.value,onClick:te},{default:x((()=>[_(S(e.$t("common.cancel")),1)])),_:1},8,["disabled"])])),_:1})])),_:1})])),_:1},8,["modelValue"]),k(Q,{modelValue:z.show,"onUpdate:modelValue":t[6]||(t[6]=e=>z.show=e),timeout:z.timeout,color:z.color,location:"top"},{actions:x((()=>[k(Y,{color:"white",variant:"text",onClick:t[5]||(t[5]=e=>z.show=!1)},{default:x((()=>[_(S(e.$t("common.close")),1)])),_:1})])),default:x((()=>[_(S(z.message)+" ",1)])),_:1},8,["modelValue","timeout","color"])],64))}}),[["__scopeId","data-v-1a768851"]]),Ae={class:"text-h6 font-weight-600"},Fe={class:"mb-6"},Te={class:"text-subtitle-1 font-weight-600 mb-3"},Ee={key:0,class:"current-methods"},Ie={class:"flex-grow-1"},Le={class:"text-subtitle-2 font-weight-600 mb-1 d-flex align-center"},je={class:"text-caption text-medium-emphasis"},Re={key:1,class:"text-center py-4"},De={key:0},Ne={class:"text-body-2 text-medium-emphasis mb-3"},He={key:1},Oe={class:"text-h6 font-weight-600 mb-2"},We={class:"text-body-2 text-medium-emphasis"},Ye={key:0,class:"mb-4"},Ge={class:"text-subtitle-1 font-weight-600 mb-3"},Je={class:"available-methods"},Ke={class:"flex-grow-1"},Qe={class:"text-subtitle-2 font-weight-600 mb-1"},Xe={class:"text-caption text-medium-emphasis"},Ze={key:1,class:"text-center py-4"},et={class:"text-h6 font-weight-600 mb-2 text-success"},tt={class:"text-body-2 text-medium-emphasis"},st={class:"text-subtitle-2 font-weight-600 mb-3"},at={class:"benefits-list"},lt={class:"d-flex align-center mb-2"},it={class:"text-body-2"},rt={class:"d-flex align-center mb-2"},ot={class:"text-body-2"},nt={class:"d-flex align-center"},ut={class:"text-body-2"},ct=s(c({__name:"LoginMethodsManager",setup(e){const s=t(),{t:a}=v(),l=f(!1),i=f(null),r=f(!1),o=f(!1),n=f(""),u=f(""),c=f(!1),d=f(!0),m=f(!1),p=f(!1),g=h((()=>s.getCurrentLoginMethods)),z=h((()=>s.getAvailableLoginMethods)),q=h((()=>m.value&&0===g.value.length&&!c.value&&!d.value)),A=h((()=>(d.value||c.value)&&0===g.value.length));B((async()=>{if(s.isAuthenticated)try{d.value=!0,await s.refreshUserBindingStatus()}catch(e){}finally{d.value=!1,m.value=!0}else d.value=!1,m.value=!0}));const F=e=>({ios:"apple",google:"google",firebase:"firebase"}[e]||e),T=e=>({firebase:"mdi-email",google:"mdi-google",apple:"mdi-apple"}[F(e)]||"mdi-account"),E=e=>({firebase:"#FF6B35",google:"#4285F4",apple:"#000000"}[F(e)]||"#666666"),I=async e=>{if(!l.value)if("firebase"!==e){l.value=!0,i.value=e;try{await s.addLoginMethod(e),await s.refreshUserBindingStatus(),n.value=a("user.loginMethods.addSuccess",{method:a(`user.loginMethods.methods.${F(e)}`)}),r.value=!0}catch(t){const e=t;e.message?.includes("409")||e.message?.includes("Conflict")?(await s.refreshUserBindingStatus(),u.value=a("user.loginMethods.alreadyAdded")):e.message?.includes("already-linked")||e.message?.includes("已添å ")||e.message?.includes("å·²ç»å®")?u.value=a("user.loginMethods.alreadyLinked"):e.message?.includes("credential-already-in-use")?u.value=a("user.loginMethods.credentialConflict"):e.message?.includes("email-verification-required")?u.value=a("user.loginMethods.emailVerificationRequired"):e.message?.includes("network")?u.value=a("user.loginMethods.networkError"):e.message?.includes("Firebaseç¨æ·ç¶æå¼å¸¸")?u.value=a("user.loginMethods.firebaseStateError"):u.value=a("user.loginMethods.addError"),o.value=!0}finally{l.value=!1,i.value=null}}else p.value=!0},L=async()=>{try{await s.refreshUserBindingStatus(),n.value=a("user.loginMethods.addSuccess",{method:a("user.loginMethods.methods.firebase")}),r.value=!0}catch(e){u.value=a("user.loginMethods.addError"),o.value=!0}},j=async()=>
1{if(!c.value){c.value=!0;try{await s.refreshUserBindingStatus(),m.value=!0,n.value=a("common.success"),r.value=!0}catch(e){const t=e;t.message?.includes("network")?u.value=a("user.loginMethods.networkError"):u.value=a("user.loginMethods.addError"),o.value=!0}finally{c.value=!1}}};return(e,t)=>(y(),M(D,{class:"login-methods-card",style:{background:"rgba(7, 9, 20, 0.95)",border:"1px solid rgba(255, 255, 255, 0.1)"},elevation:"0"},{default:x((()=>[k(N,{class:"pb-2"},{default:x((()=>[$("h3",Ae,S(e.$t("user.loginMethods.title")),1)])),_:1}),k(O,{class:"pb-4 text-medium-emphasis"},{default:x((()=>[_(S(e.$t("user.loginMethods.description")),1)])),_:1}),k(W,null,{default:x((()=>[$("div",Fe,[$("h4",Te,S(e.$t("user.loginMethods.current")),1),g.value.length>0?(y(),b("div",Ee,[(y(!0),b(w,null,P(g.value,(t=>(y(),M(D,{key:t,class:"method-card mb-3 bound-method-card",style:{background:"rgba(76, 175, 80, 0.1)",border:"1px solid rgba(76, 175, 80, 0.3)"},elevation:"0"},{default:x((()=>[k(W,{class:"d-flex align-center pa-4"},{default:x((()=>[k(X,{size:"40",class:"mr-4",style:U({background:E(t)})},{default:x((()=>[k(H,{icon:T(t),color:"white"},null,8,["icon"])])),_:2},1032,["style"]),$("div",Ie,[$("div",Le,S(e.$t(`user.loginMethods.methods.${F(t)}`)),1),$("div",je,S(e.$t(`user.loginMethods.descriptions.${F(t)}`)),1)]),k(Z,{color:"success",variant:"tonal",size:"small"},{default:x((()=>[k(H,{start:"",icon:"mdi-shield-check",size:"x-small"}),_(" "+S(e.$t("user.loginMethods.active")),1)])),_:1})])),_:2},1024)])),_:2},1024)))),128))])):(y(),b("div",Re,[A.value?(y(),b("div",De,[k(H,{icon:"mdi-refresh",size:"48",color:"primary",class:"mb-2"}),$("p",Ne,S(e.$t("user.loginMethods.states.checking")),1),k(Y,{variant:"outlined",color:"primary",size:"small",loading:c.value,onClick:j},{default:x((()=>[k(H,{start:"",icon:"mdi-refresh"}),_(" "+S(e.$t("common.retry")),1)])),_:1},8,["loading"])])):q.value?(y(),b("div",He,[k(H,{icon:"mdi-account-plus",size:"48",color:"primary",class:"mb-2"}),$("h4",Oe,S(e.$t("user.loginMethods.noMethodsTitle")),1),$("p",We,S(e.$t("user.loginMethods.noMethodsDescription")),1)])):C("",!0)]))]),z.value.length>0?(y(),b("div",Ye,[$("h4",Ge,S(e.$t("user.loginMethods.addMore")),1),$("div",Je,[(y(!0),b(w,null,P(z.value,(t=>(y(),M(D,{key:t,class:"method-card mb-3 available-method-card",style:{background:"rgba(255, 255, 255, 0.05)",border:"1px solid rgba(255, 255, 255, 0.1)"},elevation:"0",disabled:l.value,onClick:e=>I(t)},{default:x((()=>[k(W,{class:"d-flex align-center pa-4"},{default:x((()=>[k(X,{size:"40",class:"mr-4",style:U({background:E(t)})},{default:x((()=>[k(H,{icon:T(t),color:"white"},null,8,["icon"])])),_:2},1032,["style"]),$("div",Ke,[$("div",Qe,S(e.$t(`user.loginMethods.methods.${F(t)}`)),1),$("div",Xe,S(e.$t(`user.loginMethods.descriptions.${F(t)}`)),1)]),k(Y,{loading:l.value&&i.value===t,disabled:l.value,variant:"outlined",size:"small",color:"primary",style:{borderColor:"rgba(255, 255, 255, 0.3)",color:"white"},onClick:V((e=>I(t)),["stop"])},{default:x((()=>[_(S(l.value&&i.value===t?e.$t("user.loginMethods.adding"):e.$t("user.loginMethods.add")),1)])),_:2},1032,["loading","disabled","onClick"])])),_:2},1024)])),_:2},1032,["disabled","onClick"])))),128))])])):g.value.length>0?(y(),b("div",Ze,[k(H,{icon:"mdi-check-circle",size:"48",color:"success",class:"mb-2"}),$("h4",et,S(e.$t("common.success")),1),$("p",tt,S(e.$t("user.loginMethods.benefits.security")),1)])):C("",!0),k(D,{class:"benefits-card",style:{background:"rgba(255, 255, 255, 0.03)",border:"1px solid rgba(255, 255, 255, 0.08)"},elevation:"0"},{default:x((()=>[k(W,{class:"pa-4"},{default:x((()=>[$("h4",st,S(e.$t("user.loginMethods.benefits.title")),1),$("div",at,[$("div",lt,[k(H,{icon:"mdi-shield-check",size:"small",class:"mr-2",color:"success"}),$("span",it,S(e.$t("user.loginMethods.benefits.security")),1)]),$("div",rt,[k(H,{icon:"mdi-lightning-bolt",size:"small",class:"mr-2",color:"warning"}),$("span",ot,S(e.$t("user.loginMethods.benefits.convenience")),1)]),$("div",nt,[k(H,{icon:"mdi-backup-restore",size:"small",class:"mr-2",color:"info"}),$("span",ut,S(e.$t("user.loginMethods.benefits.backup")),1)])])])),_:1})])),_:1})])),_:1}),k(Q,{modelValue:r.value,"onUpdate:modelValue":t[1]||(t[1]=e=>r.value=e),timeout:4e3,color:"success",location:"top"},{actions:x((()=>[k(Y,{color:"white",variant:"text",onClick:t[0]||(t[0]=e=>r.value=!1)},{default:x((()=>[_(S(e.$t("common.close")),1)])),_:1})])),default:x((()=>[_(S(n.value)+" ",1)])),_:1},8,["modelValue"]),k(Q,{modelValue:o.value,"onUpdate:modelValue":t[3]||(t[3]=e=>o.value=e),timeout:6e3,color:"error",location:"top"},{actions:x((()=>[k(Y,{color:"white",variant:"text",onClick:t[2]||(t[2]=e=>o.value=!1)},{default:x((()=>[_(S(e.$t("common.close")),1)])),_:1})])),default:x((()=>[_(S(u.value)+" ",1)])),_:1},8,["modelValue"]),k(qe,{modelValue:p.value,"onUpdate:modelValue":t[4]||(t[4]=e=>p.value=e),onBindSuccess:L},null,8,["modelValue"])])),_:1}))}}),[["__scopeId","data-v-c7f7d834"]]),dt={class:"subscription-credentials-panel"},mt={class:"credentials-header"},pt={class:"text-subtitle-1 font-weight-600 mb-1"},gt={class:"text-body-2 text-medium-emphasis mb-0"},vt={key:1,class:"credentials-body"},ht={key:0,class:"credential-meta"},ft={class:"credential-block"},bt={class:"credential-box"},yt={class:"credential-help"},wt={class:"credential-block"},kt={class:"credential-box"},xt={class:"credential-help"},_t=s(c({__name:"SubscriptionCredentialsPanel",setup(e){const{t:t}=v(),s=a(),{credentials:l,loading:i,error:r,hasCredentials:o,fetchCredentials:n}=de(),u=f(!1),c=f(null),d=h((()=>{const e=l.value?.expire_date;return e?e.slice(0,10):""})),m=h((()=>{const e=l.value?.cdk||"";return!e||u.value?e:e.length<=8?"â¢â¢â¢â¢â¢â¢â¢â¢":`${e.slice(0,4)}â¢â¢â¢â¢${e.slice(-4)}`})),p=h((()=>r.value?"no_active_subscription"===r.value?t("user.credentials.noActiveSubscription"):t("user.credentials.loadFailed"):"")),g=h((()=>[{question:t("user.credentials.faq.accountVsAnonymous.question"),answer:t("user.credentials.faq.accountVsAnonymous.answer")},{question:t("user.credentials.faq.clashUrl.question"),answer:t("user.credentials.faq.clashUrl.answer")},{question:t("user.credentials.faq.cdk.question"),answer:t("user.credentials.faq.cdk.answer")},{question:t("user.credentials.faq.loginRequired.question"),answer:t("user.credentials.faq.loginRequired.answer")}])),V=async()=>{await n(s.fullPath)},B=async(e,t)=>{t&&(await navigator.clipboard.writeText(t),c.value=e,setTimeout((()=>{c.value=null}),1800))};
1return(e,s)=>(y(),b("section",dt,[$("div",mt,[$("div",null,[$("h4",pt,S(z(t)("user.credentials.title")),1),$("p",gt,S(z(t)("user.credentials.subtitle")),1)]),k(Y,{color:"primary",variant:"outlined",size:"small",loading:z(i),onClick:V},{default:x((()=>[k(H,{start:"",size:"small"},{default:x((()=>[...s[3]||(s[3]=[_("mdi-key-chain",-1)])])),_:1}),_(" "+S(z(o)?z(t)("user.credentials.refresh"):z(t)("user.credentials.load")),1)])),_:1},8,["loading"])]),p.value?(y(),M(ee,{key:0,type:"error",variant:"tonal",class:"mt-4"},{default:x((()=>[_(S(p.value),1)])),_:1})):C("",!0),z(l)?(y(),b("div",vt,[d.value?(y(),b("div",ht,[k(H,{icon:"mdi-calendar-check-outline",size:"small"}),$("span",null,S(z(t)("user.credentials.validUntil",{date:d.value})),1)])):C("",!0),$("div",ft,[$("label",null,S(z(t)("user.credentials.clashUrlLabel")),1),$("div",bt,[$("code",null,S(z(l).clash_url),1),k(Y,{icon:"clash"===c.value?"mdi-check":"mdi-content-copy",color:"clash"===c.value?"success":"default",variant:"text",size:"small","aria-label":z(t)("user.credentials.copyClashUrl"),onClick:s[0]||(s[0]=e=>B("clash",z(l).clash_url))},null,8,["icon","color","aria-label"])]),$("p",yt,S(z(t)("user.credentials.clashUrlHelp")),1)]),$("div",wt,[$("label",null,S(z(t)("user.credentials.cdkLabel")),1),$("div",kt,[$("code",null,S(m.value),1),k(Y,{icon:u.value?"mdi-eye-off-outline":"mdi-eye-outline",variant:"text",size:"small","aria-label":u.value?z(t)("user.credentials.hideCdk"):z(t)("user.credentials.showCdk"),onClick:s[1]||(s[1]=e=>u.value=!u.value)},null,8,["icon","aria-label"]),k(Y,{icon:"cdk"===c.value?"mdi-check":"mdi-content-copy",color:"cdk"===c.value?"success":"default",variant:"text",size:"small","aria-label":z(t)("user.credentials.copyCdk"),onClick:s[2]||(s[2]=e=>B("cdk",z(l).cdk))},null,8,["icon","color","aria-label"])]),$("p",xt,S(z(t)("user.credentials.cdkHelp")),1)])])):C("",!0),k(te,{variant:"accordion",class:"credentials-faq"},{default:x((()=>[(y(!0),b(w,null,P(g.value,(e=>(y(),M(le,{key:e.question},{default:x((()=>[k(se,null,{default:x((()=>[_(S(e.question),1)])),_:2},1024),k(ae,null,{default:x((()=>[_(S(e.answer),1)])),_:2},1024)])),_:2},1024)))),128))])),_:1})]))}}),[["__scopeId","data-v-20d1cacb"]]),St={class:"profile-page"},$t={class:"text-body-1 text-medium-emphasis mt-4"},Vt={class:"text-body-1 text-medium-emphasis mt-4"},Mt={class:"text-center mb-8"},Ct={class:"text-h4 font-weight-700 mb-2"},Bt={class:"text-body-1 text-medium-emphasis"},Pt={class:"user-basic-info mb-4"},Ut={key:1,class:"text-h5 font-weight-600",style:{color:"white",textShadow:"0 1px 3px rgba(0, 0, 0, 0.8)"}},zt={class:"user-info-text"},qt={class:"text-h6 font-weight-600 mb-1"},At={class:"text-body-2 text-medium-emphasis mb-2 user-email"},Ft={class:"subscription-details"},Tt={class:"text-subtitle-1 font-weight-600 mb-3 d-flex align-center"},Et={key:0,class:"text-center py-4"},It={class:"text-body-2 text-medium-emphasis mt-2"},Lt={key:0,class:"subscription-item mb-3"},jt={class:"subscription-item-content"},Rt={class:"subscription-text"},Dt={class:"text-body-2 text-medium-emphasis"},Nt={class:"text-body-1 font-weight-500"},Ht={key:1,class:"subscription-item mb-3"},Ot={class:"subscription-item-content"},Wt={class:"subscription-text"},Yt={class:"text-body-2 text-medium-emphasis"},Gt={class:"text-body-1 font-weight-500"},Jt={key:2,class:"subscription-item mb-4"},Kt={class:"subscription-item-content"},Qt={class:"subscription-text"},Xt={class:"text-body-2 text-medium-emphasis"},Zt={class:"text-body-1 font-weight-500"},es={key:3,class:"subscription-item mb-4"},ts={class:"subscription-refresh-area"},ss={class:"subscription-item-content"},as={class:"subscription-text"},ls={class:"text-body-2 text-medium-emphasis"},is={class:"refresh-btn-text"},rs={class:"manage-btn-text"},os={key:1,class:"upgrade-section"},ns={class:"text-center"},us={class:"text-subtitle-1 font-weight-600 mb-3"},cs={class:"text-body-2 text-medium-emphasis mb-4"},ds={class:"text-center"},ms=s(c({__name:"profile",setup(e){const s=t(),{t:a}=v(),c=i(),d=r(),p=l(),g=f(null),V=f(null),P=f(!1),F=f(!1),T=f(!1),E=m({show:!1,message:"",color:"success",timeout:3e3}),I=h((()=>g.value?o(g.value).format("YYYY-MM-DD"):"")),L=(e,t="success")=>{E.message=e,E.color=t,E.show=!0},j=async()=>{s.sessionBootstrapComplete&&!s.isAuthenticated&&("stale"!==s.sessionStatus?await u({path:p("/login"),query:{redirect:c.fullPath,...T.value?{reason:"expired"}:{}}}):L(a("auth.sessionValidationUnavailable")||"Unable to verify your session. Please try again.","error"))},R=async()=>{await(async(e=!0)=>{await s.restoreValidatedSession({bypassTTL:e,on401:"logout-only",redirectPath:c.fullPath}),await j()})(!0)},N=async(e=!0)=>
1{if(!s.isAuthenticated||!s.userIsVip)return g.value=null,void(V.value=null);e&&(P.value=!0);try{const e=new FormData,t=await me("/v2/user/get/subscription",e,{authMode:"required",on401:"logout-only"});t&&200===t.code?(g.value=t.data?.end_date||null,V.value=t.data):(g.value=null,V.value=null)}catch(t){g.value=null,V.value=null}finally{e&&(P.value=!1)}};B((async()=>{if(T.value=s.hasSessionCandidate||!!localStorage.getItem("auth_token"),s.isAuthenticated)try{await s.refreshUserBindingStatus(),s.userIsVip&&await N()}catch(e){}})),q((()=>[s.sessionBootstrapComplete,s.sessionStatus,s.isAuthenticated]),(async([e,t,a])=>{e&&(!e||a?"validated"===t&&a&&!V.value&&s.userIsVip&&await N(!1):await j())})),q((()=>s.userIsVip),(async(e,t)=>{e&&!t?await N():!e&&t&&(g.value=null,V.value=null)}));const O=async()=>{await N(),L(a("user.subscriptionRefreshed"),"success")},G=e=>{if(!e)return"U";const t=e.split(" ");return t.length>=2?(t[0][0]+t[1][0]).toUpperCase():e.substring(0,2).toUpperCase()},J=async()=>{if(!F.value){F.value=!0;try{const e=window.location.href,t=encodeURIComponent(e),s=await pe(`/v2/user/create/stripe/customer/portal?returnURL=${t}`,{method:"GET",authMode:"required",on401:"logout-and-redirect",redirectPath:e});if(!s||200!==s.code||!s.data?.url)throw new Error(s?.msg||"Failed to get Stripe portal URL");window.open(s.data.url,"_blank","noopener,noreferrer")}catch(e){L(a("user.subscriptionManagementError"),"error");const{openSubscriptionSupport:t}=ge();setTimeout((async()=>{await t(a("common.messages.subscriptionManagementIssue"))}),2e3)}finally{F.value=!1}}},K=()=>{s.logout(),d.push(p("/"))};return(e,t)=>{const l=ke,i=xe,r=_e,o=n;return y(),b("div",St,[k(r,null,{default:x((()=>[k(l,null,{default:x((()=>[_(S(e.$t("user.profile"))+" - FreeGuard VPN",1)])),_:1}),k(i,{name:"description",content:e.$t("user.profile")},null,8,["content"]),k(i,{name:"robots",content:"noindex, nofollow"})])),_:1}),k(ie,{class:"py-8"},{default:x((()=>[k(re,{justify:"center"},{default:x((()=>[k(oe,{cols:"12",md:"8",lg:"6"},{default:x((()=>[k(o,null,{fallback:x((()=>[k(D,{class:"user-info-card mb-6",style:{background:"rgba(7, 9, 20, 0.95)",border:"1px solid rgba(255, 255, 255, 0.1)"},elevation:"0"},{default:x((()=>[k(W,{class:"pa-8 text-center"},{default:x((()=>[k(ne,{indeterminate:"",size:"40",width:"3",color:"primary"}),$("p",$t,S(e.$t("common.loading")),1)])),_:1})])),_:1})])),default:x((()=>[z(s).sessionBootstrapComplete&&z(s).isAuthenticated?(y(),b(w,{key:1},[$("div",Mt,[$("h1",Ct,S(e.$t("user.profile")),1),$("p",Bt,S(e.$t("user.loginMethods.description")),1)]),k(D,{class:"user-info-card mb-6",style:{background:"rgba(7, 9, 20, 0.95)",border:"1px solid rgba(255, 255, 255, 0.1)"},elevation:"0"},{default:x((()=>[k(W,{class:"pa-6"},{default:x((()=>{return[$("div",Pt,[k(X,{size:"64",class:A(["user-avatar",{"vip-avatar":z(s).userIsVip}]),style:U({background:z(s).userIsVip?"linear-gradient(135deg, #fad62c, #e664ff)":"linear-gradient(113deg, #FAD62C, #E664FF, #4FAEFE)"})},{default:x((()=>[z(s).avatarUrl?(y(),M(ue,{key:0,src:z(s).avatarUrl,alt:e.$t("user.avatarInitial")},null,8,["src","alt"])):(y(),b("span",Ut,S(G(z(s).getUserDisplayName)),1)),z(s).userIsVip?(y(),M(H,{key:2,icon:"mdi-crown",size:"16",class:"crown-overlay",color:"white"})):C("",!0)])),_:1},8,["class","style"]),$("div",zt,[$("h3",qt,S(z(s).getUserDisplayName),1),$("p",At,S(z(s).getUserEmail),1),k(Z,{color:z(s).userIsVip?"warning":"default",size:"small",variant:"tonal",class:"d-flex align-center user-status-chip"},{default:x((()=>[z(s).userIsVip?(y(),M(H,{key:0,icon:"mdi-crown",size:"small",class:"me-1"})):C("",!0),_(" "+S(z(s).userIsVip?e.$t("user.premiumPlanUser"):e.$t("user.freePlanUser")),1)])),_:1},8,["color"])])]),z(s).userIsVip?(y(),b(w,{key:0},[k(ce,{class:"my-4"}),$("div",Ft,[$("h4",Tt,[k(H,{icon:"mdi-crown",color:"warning",size:"small",class:"me-2"}
1),_(" "+S(e.$t("user.mySubscription")),1)]),P.value?(y(),b("div",Et,[k(ne,{indeterminate:"",size:"32",width:"3",color:"warning"}),$("p",It,S(e.$t("user.loadingSubscriptionInfo")),1)])):(y(),b(w,{key:1},[V.value?.subscription_type?(y(),b("div",Lt,[$("div",jt,[k(H,{icon:"mdi-package-variant",color:"info",size:"small",class:"subscription-icon"}),$("div",Rt,[$("div",Dt,S(e.$t("user.subscriptionType")),1),$("div",Nt,S((r=V.value.subscription_type,{weekly:a("paymentSuccess.plans.weekly"),monthly:a("paymentSuccess.plans.monthly"),yearly:a("paymentSuccess.plans.yearly")}[r]||r)),1)])])])):C("",!0),g.value?(y(),b("div",Ht,[$("div",Ot,[k(H,{icon:"mdi-calendar-check",color:"success",size:"small",class:"subscription-icon"}),$("div",Wt,[$("div",Yt,S(e.$t("user.validUntil")),1),$("div",Gt,S(I.value),1)])])])):C("",!0),V.value?.price&&V.value?.price_currency_code?(y(),b("div",Jt,[$("div",Kt,[k(H,{icon:"mdi-credit-card",color:"primary",size:"small",class:"subscription-icon"}),$("div",Qt,[$("div",Xt,S(e.$t("user.subscriptionPrice")),1),$("div",Zt,S((l=V.value.price,i=V.value.price_currency_code,l&&i?"usd"===i.toLowerCase()?`$${l.toFixed(2)}`:`${l.toFixed(2)} ${i.toUpperCase()}`:"")),1)])])])):C("",!0),V.value||P.value?C("",!0):(y(),b("div",es,[$("div",ts,[$("div",ss,[k(H,{icon:"mdi-information-outline",color:"info",size:"small",class:"subscription-icon"}),$("div",as,[$("div",ls,S(e.$t("user.subscriptionSyncing")),1)])]),k(Y,{variant:"text",size:"small",color:"info",class:"refresh-btn",onClick:O},{default:x((()=>[k(H,{icon:"mdi-refresh",size:"small",class:"me-1"}),$("span",is,S(e.$t("user.refreshSubscription")),1)])),_:1})])])),"web"===V.value?.sub_platform?(y(),M(Y,{key:4,variant:"outlined",disabled:F.value,class:"subscription-manage-btn",style:{borderColor:"rgba(255, 255, 255, 0.3)",color:"white",fontWeight:"600"},onClick:J},{default:x((()=>[F.value?(y(),M(ne,{key:0,indeterminate:"",size:"16",width:"2",class:"me-2"})):(y(),M(H,{key:1,icon:"mdi-credit-card-outline",class:"me-2"})),$("span",rs,S(F.value?e.$t("user.openingSubscriptionManagement"):e.$t("user.manageSubscription")),1)])),_:1},8,["disabled"])):C("",!0),k(_t)],64))])],64)):(y(),b("div",os,[k(ce,{class:"my-4"}),$("div",ns,[$("h4",us,S(e.$t("user.upgradeToAdvanced")),1),$("p",cs,S(e.$t("user.unlockAdvancedFeatures")),1),k(Y,{style:{background:"linear-gradient(130deg, #FFAB02, #9F3FFF, #4393FF)",color:"white",textShadow:"0 1px 3px rgba(0, 0, 0, 0.8)",fontWeight:"600"},size:"large",onClick:t[0]||(t[0]=e=>z(d).push(z(p)("/pricing#pricing-cards")))},{default:x((()=>[_(S(e.$t("user.upgradeToPremium")),1)])),_:1})])]))];var l,i,r})),_:1})])),_:1}),k(ct,{class:"mb-6"}),$("div",ds,[k(Y,{variant:"outlined",color:"error",onClick:K},{default:x((()=>[_(S(e.$t("user.logout")),1)])),_:1})])],64)):(y(),M(D,{key:0,class:"user-info-card mb-6",style:{background:"rgba(7, 9, 20, 0.95)",border:"1px solid rgba(255, 255, 255, 0.1)"},elevation:"0"},{default:x((()=>[k(W,{class:"pa-8 text-center"},{default:x((()=>[z(s).sessionBootstrapComplete&&"stale"===z(s).sessionStatus?(y(),b(w,{key:0},[k(ee,{type:"error",variant:"tonal",class:"mb-4 text-left"},{default:x((()=>[_(S(e.$t("auth.sessionValidationUnavailable")||"Unable to verify your session. Please try again."),1)])),_:1}),k(Y,{color:"primary",variant:"outlined",onClick:R},{default:x((()=>[_(S(e.$t("common.retry")||"Retry"),1)])),_:1})],64)):(y(),b(w,{key:1},[k(ne,{indeterminate:"",size:"40",width:"3",color:"primary"}),$("p",Vt,S(e.$t("common.loading")),1)],64))])),_:1})])),_:1}))])),_:1})])),_:1})])),_:1})])),_:1}),k(Q,{modelValue:E.show,"onUpdate:modelValue":t[1]||(t[1]=e=>E.show=e),timeout:E.timeout,color:E.color,location:"top"},{default:x((()=>[_(S(E.message),1)])),_:1},8,["modelValue","timeout","color"])])}}}),[["__scopeId","data-v-626e52c9"]]);export{ms as default};
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.