Validate sessions against the API, honor configurable base paths, and route unknown pages to 404. Keep development ports stable so user and admin apps cannot be confused. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 line
5.8 KiB
JavaScript
1 line
5.8 KiB
JavaScript
import{D as e,E as t,Et as n,J as r,M as i,N as a,O as o,P as s,T as c,Xt as l,ct as u,st as d,t as f,vt as p,w as m}from"./_plugin-vue_export-helper-Bo3WtfwJ.js";import{s as h,t as g}from"./BasicIcon-BXxbbWA_.js";import{c as _,n as v,r as y}from"./index-BAQfYU-Q.js";import{t as b}from"./FormErrorBanner-DI5hhxpk.js";import{n as x,r as S,t as C}from"./formErrors-DglFjYkZ.js";import{t as w}from"./BaseInput-CVNdy37R.js";import{t as T}from"./ProfileSubpageLayout-C-s-O95S.js";var E=512,D=.82;async function O(e){if(!e.type.startsWith(`image/`))throw Error(`فقط فایل تصویری مجاز است.`);if(e.size>8388608)throw Error(`حجم تصویر نباید بیشتر از ۸ مگابایت باشد.`);return A(await k(e))}function k(e){return new Promise((t,n)=>{let r=new FileReader;r.onload=()=>t(String(r.result??``)),r.onerror=()=>n(Error(`خواندن تصویر ناموفق بود.`)),r.readAsDataURL(e)})}function A(e){return new Promise((t,n)=>{let r=new Image;r.onload=()=>{let e=Math.min(1,E/Math.max(r.width,r.height)),i=Math.max(1,Math.round(r.width*e)),a=Math.max(1,Math.round(r.height*e)),o=document.createElement(`canvas`);o.width=i,o.height=a;let s=o.getContext(`2d`);if(!s){n(Error(`پردازش تصویر ناموفق بود.`));return}s.drawImage(r,0,0,i,a),t(o.toDataURL(`image/jpeg`,D))},r.onerror=()=>n(Error(`تصویر نامعتبر است.`)),r.src=e})}var j={class:`profile-edit`},M={class:`avatar-editor`},N={class:`avatar-editor__actions`},P={class:`avatar-editor__btns`},F=[`disabled`],I=[`disabled`],L={class:`profile-edit__intro`},R={class:`profile-edit__intro-icon`,"aria-hidden":`true`},z={class:`profile-edit__grid`},B={key:0,class:`form-group profile-edit__full`},V={key:0,class:`input-error-text`},H={class:`profile-edit__actions`},U={key:0,class:`profile-edit__saved`},W=f(s({__name:`ProfileEditView`,setup(s){let f=_(),E=p(f.user?.firstName??``),D=p(f.user?.lastName??``),k=p(f.user?.nationalId??``),A=p(f.user?.address??``),W=p(f.user?.avatarUrl??null),G=p(null),K=p({}),q=p(``),J=p(!1),Y=p(!1),X=m(()=>`${E.value.trim().charAt(0)}${D.value.trim().charAt(0)}`||`؟`);function Z(e){K.value=x(K.value,e),S(K.value)||(q.value=``)}function Q(){G.value?.click()}async function $(e){Y.value=!0,q.value=``;try{let t=await f.updateProfile({avatarUrl:e??``});t?W.value=t.avatarUrl??null:W.value=e}catch(e){q.value=e instanceof Error?e.message:`ذخیره تصویر ناموفق بود.`}finally{Y.value=!1}}async function ee(e){let t=e.target,n=t.files?.[0];if(t.value=``,n){Y.value=!0,q.value=``;try{let e=await O(n);W.value=e,await $(e)}catch(e){q.value=e instanceof Error?e.message:`بارگذاری تصویر ناموفق بود.`,Y.value=!1}}}async function te(){W.value=null,await $(null)}async function ne(){K.value={},q.value=``,J.value=!1;let e={};if(E.value.trim()||(e.firstName=`نام الزامی است.`),D.value.trim()||(e.lastName=`نام خانوادگی الزامی است.`),k.value&&k.value.length!==10&&(e.nationalId=`کد ملی باید ۱۰ رقم باشد.`),S(e)){K.value=e,q.value=C;return}let t={firstName:E.value.trim(),lastName:D.value.trim(),nationalId:k.value||void 0,avatarUrl:W.value??``};if(f.isAgent&&(t.address=A.value.trim()),!await f.updateProfile(t)){q.value=`ذخیره پروفایل ناموفق بود.`;return}J.value=!0,setTimeout(()=>{J.value=!1},2e3)}return(s,p)=>(r(),t(T,{title:`اطلاعات کاربری`,subtitle:`ویرایش تصویر، نام و کد ملی حساب کاربری`},{default:d(()=>[a(b,{message:q.value},null,8,[`message`]),c(`div`,j,[c(`div`,M,[a(y,{src:W.value,initials:X.value,size:96,class:`avatar-editor__photo`},null,8,[`src`,`initials`]),c(`div`,N,[p[8]||=c(`p`,{class:`avatar-editor__title`},`تصویر پروفایل`,-1),p[9]||=c(`p`,{class:`avatar-editor__hint`},`افزودن، تغییر یا حذف عکس نمایشدادهشده در پروفایل`,-1),c(`div`,P,[c(`button`,{type:`button`,class:`avatar-btn`,disabled:Y.value,onClick:Q},l(W.value?`تغییر تصویر`:`افزودن تصویر`),9,F),W.value?(r(),o(`button`,{key:0,type:`button`,class:`avatar-btn avatar-btn--danger`,disabled:Y.value,onClick:te},` حذف تصویر `,8,I)):e(``,!0)])]),c(`input`,{ref_key:`fileInput`,ref:G,type:`file`,accept:`image/*`,class:`avatar-editor__file`,onChange:ee},null,544)]),c(`div`,L,[c(`span`,R,[a(g,{icon:`vuesax-linear:profile-circle`,size:22,"stroke-width":1.5})]),p[10]||=c(`div`,{class:`profile-edit__intro-text`},[c(`strong`,null,`مشخصات فردی`),c(`p`,null,`این اطلاعات روی سفارشها و چکهای ثبتشده نمایش داده میشود.`)],-1)]),c(`div`,z,[a(w,{modelValue:E.value,"onUpdate:modelValue":[p[0]||=e=>E.value=e,p[1]||=e=>Z(`firstName`)],label:`نام`,error:K.value.firstName},null,8,[`modelValue`,`error`]),a(w,{modelValue:D.value,"onUpdate:modelValue":[p[2]||=e=>D.value=e,p[3]||=e=>Z(`lastName`)],label:`نام خانوادگی`,error:K.value.lastName},null,8,[`modelValue`,`error`]),a(w,{modelValue:k.value,"onUpdate:modelValue":[p[4]||=e=>k.value=e,p[5]||=e=>Z(`nationalId`)],class:`profile-edit__full`,label:`کد ملی`,maxlength:`10`,inputmode:`numeric`,dir:`ltr`,hint:`برای ثبت چک الزامی است`,error:K.value.nationalId},null,8,[`modelValue`,`error`]),n(f).isAgent?(r(),o(`div`,B,[p[11]||=c(`label`,{class:`form-label`,for:`profile-address`},`آدرس`,-1),u(c(`textarea`,{id:`profile-address`,"onUpdate:modelValue":p[6]||=e=>A.value=e,class:`profile-edit__textarea`,rows:`3`,maxlength:`500`,placeholder:`آدرس کامل محل فعالیت`,onInput:p[7]||=e=>Z(`address`)},null,544),[[h,A.value]]),K.value.address?(r(),o(`p`,V,l(K.value.address),1)):e(``,!0)])):e(``,!0)]),c(`div`,H,[a(v,{class:`profile-edit__save`,onClick:ne},{default:d(()=>[...p[12]||=[i(`ذخیره تغییرات`,-1)]]),_:1}),J.value?(r(),o(`p`,U,`ذخیره شد ✓`)):e(``,!0)])])]),_:1}))}}),[[`__scopeId`,`data-v-f92697c9`]]);export{W as default}; |