@funhub/platform 0.1.74 → 0.1.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as t,gUserGetUserInfo as n,pUserEditUserInfo as ee}from"../../../service/generated/client.mjs";import{uploadFile as te}from"../../../utils/upload-file.mjs";import{Avatar as ne,AvatarFallback as re,AvatarImage as ie}from"../../ui/avatar.mjs";import{Box as r}from"../../ui/box.mjs";import{InputGroup as i,InputGroupAddon as a,InputGroupTextarea as
|
|
2
|
+
"use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as t,gUserGetUserInfo as n,pUserEditUserInfo as ee}from"../../../service/generated/client.mjs";import{uploadFile as te}from"../../../utils/upload-file.mjs";import{Avatar as ne,AvatarFallback as re,AvatarImage as ie}from"../../ui/avatar.mjs";import{Box as r}from"../../ui/box.mjs";import{InputGroup as i,InputGroupAddon as a,InputGroupTextarea as o}from"../../ui/input-group.mjs";import{Field as s,FieldLabel as c}from"../../ui/field.mjs";import{Text as l}from"../../ui/text.mjs";import{useDeleteRequest as ae,useMutation as oe,useRequest as u}from"../../../hooks/query/use-query.mjs";import{HeaderNav as se}from"../../common/header-nav/client.mjs";import{PickerDrawer as d}from"../../common/picker/picker-drawer/picker-drawer.mjs";import{GenderPicker as ce}from"../../common/picker/gender-picker/gender-picker.mjs";import{ImageCropModal as le}from"../../common/image-crop-modal/image-crop-modal.mjs";import{useEffect as f,useRef as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{toast as _}from"sonner";import{useTranslations as ue}from"next-intl";import{produce as de}from"immer";const fe={0:`secret`,1:`male`,2:`female`},v={male:1,female:2,secret:0},y=[`image/jpeg`,`image/png`],pe=/^[\u4E00-\u9FFF\w.-]+$/;function me(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return y.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function b(e){return e?v[e]===void 0?fe[e]??`secret`:e:`secret`}function x(e){if(!e)return;if(v[e]!==void 0)return v[e];let t=Number(e);return Number.isNaN(t)?void 0:t}function S(e){return{nickname:e?.nick_name??``,gender:b(e?.gender?.toString()),signature:e?.signature??``,avatar:e?.avatar??``}}function C(e){if(!e)return;e.focus();let t=e.value.length;e.setSelectionRange(t,t)}function w({id:fe}){let v=ue(`components.pages.edit`),{userId:y,userInfo:b,setUserInfo:w}=e(),T=fe??y,E=ae(),he={male:v(`page.genderMale`),female:v(`page.genderFemale`),secret:v(`page.genderSecret`)},D=p(null),O=p(null),k=p(null),[A,j]=m(()=>S()),[M,N]=m(!1),[ge,P]=m(!1),[F,I]=m(``),[L,R]=m(!1),[z,B]=m(``),[_e,V]=m(!1),[H,U]=m(`secret`),[W,G]=m(!1),[K,q]=m(``),ve={code:0,message:``,data:{}},ye={code:0,message:``,data:{}},{data:be,isLoading:xe}=u([`user-edit-info`,T],()=>T?t({user_id:T}):Promise.resolve(ve)),{data:Se}=u([`user-info-basic`,T],()=>T?n({user_id:T}):Promise.resolve(ye)),{mutateAsync:Ce,isPending:we}=oe(async e=>ee(e)),J=xe||we,Te=Se?.data?.display_id||b?.display_id||`--`,Y=A.gender||`secret`,Ee=J||z.trim()===A.nickname,De=J||H===Y,Oe=J||K===A.signature;f(()=>{let e=be?.data;e&&j(S(e))},[be]),f(()=>{if(!L)return;let e=window.setTimeout(()=>{C(O.current)},250);return()=>{window.clearTimeout(e)}},[L]),f(()=>{if(!W)return;let e=window.setTimeout(()=>{C(k.current)},250);return()=>{window.clearTimeout(e)}},[W]),f(()=>()=>{F&&URL.revokeObjectURL(F)},[F]);function X(e,t){j(de(n=>{n[e]=t}))}function ke(){F&&(URL.revokeObjectURL(F),I(``))}function Ae(){T&&(E([`user-edit-info`,T]),E([`user-info-basic`,T]),E([`user-profile`,`mine`]),E([`user-profile`,`mine`,T]),E([`user-profile`,`profile`,T]))}function Z(e){!T||T!==y||w({...b,user_id:T,...e})}function je(e){return{nick_name:e.nickname||void 0,avatar:e.avatar||void 0,signature:e.signature||void 0,gender:x(e.gender)}}async function Q(e){if(!T)return _.error(v(`page.userNotFound`)),!1;let t=je({...A,...e});try{return await Ce({user_id:T,...t}),Ae(),!0}catch(e){return console.error(`更新用户信息失败`,e),_.error(v(`page.updateFailed`)),!1}}function Me(){J||M||D.current?.click()}function Ne(e){let t=e.target.files?.[0];if(t){if(!me(t)){_.error(v(`page.imageTypeInvalid`)),e.target&&(e.target.value=``);return}I(URL.createObjectURL(t)),P(!0),e.target&&(e.target.value=``)}}async function Pe(e){try{N(!0);let t=await te(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1);if(!await Q({avatar:t.objectKey}))return;X(`avatar`,t.objectKey),Z({avatar:t.objectKey}),$(),_.success(v(`page.avatarUpdateSuccess`))}catch(e){console.error(`上传头像失败`,e),_.error(v(`page.avatarUploadFailed`))}finally{N(!1)}}function $(){P(!1),ke()}function Fe(){J||(B(A.nickname),R(!0))}function Ie(e){let t=e.target.value;t.length>24||B(t)}function Le(e){return e?e.length<2?v(`page.nicknameTooShort`):pe.test(e)?``:v(`page.nicknameInvalidChars`):v(`page.nicknameRequired`)}async function Re(e){if(Ee)return!1;let t=e.trim(),n=Le(t);return n?(_.error(n),!1):await Q({nickname:t})?(X(`nickname`,t),Z({nick_name:t}),B(t),_.success(v(`page.nicknameUpdateSuccess`)),!0):!1}function ze(){J||(U(Y),V(!0))}function Be(){V(!1)}function Ve(e){U(e)}async function He(e){let t=e||H||`secret`;if(t===Y||!await Q({gender:t}))return!1;let n=x(t);return X(`gender`,t),Z({gender:n}),U(t),_.success(v(`page.genderUpdateSuccess`)),!0}function Ue(){J||(q(A.signature),G(!0))}function We(e){let t=e.target.value;t.length>100||q(t)}function Ge(e){let t=e.trim();return t.length>0&&t.length<2?v(`page.signatureTooShort`):``}async function Ke(e){if(Oe)return!1;let t=Ge(e);return t?(_.error(t),!1):await Q({signature:e})?(X(`signature`,e),Z({signature:e}),q(e),_.success(v(`page.signatureUpdateSuccess`)),!0):!1}return g(r,{className:`bg-bg2 !min-h-screen`,children:[h(se,{className:`!bg-bg2`,title:v(`page.title`)}),g(r,{onClick:Me,className:`flex bg-bg2 flex-col py-3 items-center justify-center gap-3`,children:[h(`input`,{ref:D,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:Ne}),g(ne,{className:`w-21 h-21`,children:[h(ie,{src:A.avatar}),h(re,{})]}),h(l,{className:`text-sm text-text2`,children:xe?v(`page.loading`):M?v(`page.avatarUploading`):`${Te}`})]}),g(r,{className:`pb-3`,children:[h(s,{className:`bg-bg2 px-3 cursor-pointer`,onClick:Fe,children:g(`div`,{className:`flex items-center justify-between gap-3`,children:[h(c,{children:v(`page.label`)}),h(l,{className:`text-text2 text-sm text-right max-w-[65%] line-clamp-1 text-ellipsis`,children:A.nickname||v(`page.nicknamePlaceholder`)})]})}),h(s,{className:`!bg-bg2 px-3 border-none cursor-pointer`,onClick:ze,children:g(`div`,{className:`flex items-center justify-between gap-3`,children:[h(c,{children:v(`page.genderLabel`)}),h(l,{className:`text-text2 text-sm`,children:he[Y]||v(`page.genderSecret`)})]})}),h(`div`,{className:`h-2 bg-bg1`}),h(s,{className:`border-none px-3 bg-bg2! mt-2 cursor-pointer`,onClick:Ue,children:g(`div`,{className:`flex items-center justify-between gap-3`,children:[h(c,{children:v(`page.signatureLabel`)}),h(l,{className:`text-text2 text-sm text-right max-w-[65%] line-clamp-1 text-ellipsis`,children:A.signature||v(`page.signaturePlaceholder`)})]})})]}),h(d,{open:L,onClose:()=>R(!1),title:v(`page.label`),confirmText:v(`page.submit`),onConfirm:e=>Re(String(e)),confirmDisabled:Ee,children:({onValueChange:e})=>h(r,{className:`px-4 py-4 min-h-[230px]`,children:g(i,{children:[h(o,{ref:O,className:`!bg-bg1 p-2.5`,rows:4,maxLength:24,placeholder:v(`page.nicknamePlaceholder`),value:z,onChange:t=>{Ie(t),e(t.target.value)},disabled:J}),h(a,{className:`!bg-bg1`,align:`block-end`,children:h(`div`,{className:`text-right w-full`,children:g(`span`,{className:`text-xs`,children:[z.length,`/`,24]})})})]})})}),h(ce,{open:_e,onClose:Be,value:H,onValueChange:Ve,onConfirm:He,confirmDisabled:De}),h(d,{open:W,onClose:()=>G(!1),title:v(`page.signatureLabel`),confirmText:v(`page.submit`),onConfirm:e=>Ke(String(e)),confirmDisabled:Oe,children:({onValueChange:e})=>h(r,{className:`px-4 py-4 min-h-[230px]`,children:g(i,{children:[h(o,{ref:k,className:`!bg-bg1 p-2.5`,rows:4,maxLength:100,placeholder:v(`page.signaturePlaceholder`),value:K,onChange:t=>{We(t),e(t.target.value)},disabled:J}),h(a,{className:`!bg-bg1`,align:`block-end`,children:h(`div`,{className:`text-right w-full`,children:g(`span`,{className:`text-xs`,children:[K.length,`/`,100]})})})]})})}),h(le,{open:ge,onClose:$,imageSrc:F,onConfirm:Pe,cropShape:`round`})]})}export{w as EditClient};
|
|
@@ -6,7 +6,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
|
|
|
6
6
|
//#region components/ui/badge.d.ts
|
|
7
7
|
/** badgeVariants 工具定义。 */
|
|
8
8
|
declare const badgeVariants: (props?: ({
|
|
9
|
-
variant?: "
|
|
9
|
+
variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
|
|
10
10
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
11
11
|
/** Badge 组件。 */
|
|
12
12
|
declare function Badge({
|
|
@@ -7,7 +7,7 @@ import * as class_variance_authority_types0 from "class-variance-authority/types
|
|
|
7
7
|
//#region components/ui/button.d.ts
|
|
8
8
|
/** buttonVariants 工具定义。 */
|
|
9
9
|
declare const buttonVariants: (props?: ({
|
|
10
|
-
variant?: "
|
|
10
|
+
variant?: "link" | "default" | "destructive" | "secondary" | "outline" | "ghost" | null | undefined;
|
|
11
11
|
size?: "default" | "icon" | "xs" | "sm" | "lg" | "icon-xs" | "icon-sm" | "icon-lg" | null | undefined;
|
|
12
12
|
} & class_variance_authority_types0.ClassProp) | undefined) => string;
|
|
13
13
|
/** Button 组件属性。 */
|