@funhub/platform 0.2.15 → 0.2.17
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.
- package/dist/assets/icons/marquee-enter.mjs +2 -0
- package/dist/biz.d.mts +1 -5
- package/dist/biz.mjs +1 -1
- package/dist/components/biz/basics/fullscreen-feed/runtime/client.mjs +1 -1
- package/dist/components/biz/basics/fullscreen-feed/runtime/user-action.mjs +1 -1
- package/dist/components/biz/basics/logo/variants/basic-logo/runtime/client.mjs +1 -1
- package/dist/components/biz/business/advertisement/popup-ad/client.mjs +1 -1
- package/dist/components/biz/business/banner/variants/basic-banner/runtime/client.mjs +1 -1
- package/dist/components/biz/business/banner-carousel/client.mjs +1 -1
- package/dist/components/biz/business/card-grid/variants/card-grid-2x3-infinite/runtime/client.mjs +1 -1
- package/dist/components/biz/business/card-grid/variants/card-grid-3x3-infinite/runtime/client.mjs +1 -1
- package/dist/components/biz/business/channel-list/client.mjs +1 -1
- package/dist/components/biz/business/comment/comment-input.mjs +3 -3
- package/dist/components/biz/business/comment/comment-item.mjs +1 -1
- package/dist/components/biz/business/comment/comment-list.mjs +1 -1
- package/dist/components/biz/business/comment/reply-detail.mjs +1 -1
- package/dist/components/biz/business/detail/shared/detail-operate.mjs +1 -1
- package/dist/components/biz/business/detail/shared/editor-preview.mjs +1 -1
- package/dist/components/biz/business/detail/shared/runtime-context-provider.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-actions/client.mjs +1 -1
- package/dist/components/biz/business/detail/video-detail-player/schema.d.mts +1 -1
- package/dist/components/biz/business/detail/video-detail-recommend/shared.mjs +1 -1
- package/dist/components/biz/business/header-search/header-avatar-logo-search/client.mjs +1 -1
- package/dist/components/biz/business/header-search/shared/avatar.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-base.mjs +1 -1
- package/dist/components/biz/business/home-recommend/shared/home-recommend-play-count.mjs +1 -1
- package/dist/components/biz/business/image-text-recommend/client.mjs +1 -1
- package/dist/components/biz/business/index.d.mts +0 -5
- package/dist/components/biz/business/large-feature-grid/card-item.mjs +1 -1
- package/dist/components/biz/business/large-feature-grid/material.d.mts +1 -1
- package/dist/components/biz/business/marquee/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/material.d.mts +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-avatar.mjs +1 -1
- package/dist/components/biz/business/profile/profile-header/user-profile-cover-background.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/shell.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/collect-tab/video-waterfall.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/history-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.d.mts +2 -0
- package/dist/components/biz/business/profile/profile-main/tabs/like-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/tabs/publish-tab/client.mjs +1 -1
- package/dist/components/biz/business/profile/profile-main/utils.mjs +1 -1
- package/dist/components/biz/business/search-history/client.mjs +1 -1
- package/dist/components/biz/business/search-input/client.mjs +1 -1
- package/dist/components/biz/business/tab-bar/client.mjs +1 -1
- package/dist/components/biz/business/text-recommend/client.mjs +1 -1
- package/dist/components/biz/renderer/renderer.d.mts +1 -1
- package/dist/components/biz/utils/transformers/card-grid.mjs +1 -1
- package/dist/components/common/blocked-dialog/blocked-dialog.mjs +1 -1
- package/dist/components/common/collection-popup/create-collection-sheet.mjs +1 -1
- package/dist/components/common/collection-popup/index.mjs +1 -1
- package/dist/components/common/follow-button/index.mjs +1 -1
- package/dist/components/common/info-card/card-header.mjs +1 -1
- package/dist/components/common/list/post-list/post-list.mjs +1 -1
- package/dist/components/common/list/user-activity-list/user-activity-list-actions.mjs +1 -1
- package/dist/components/common/list/user-activity-list/user-activity-list-item.mjs +1 -1
- package/dist/components/common/list/video-list/video-list-item.mjs +1 -1
- package/dist/components/common/list/video-list/video-list.mjs +1 -1
- package/dist/components/common/popup-video/index.mjs +1 -1
- package/dist/components/common/series-episodes/index.mjs +1 -1
- package/dist/components/common/share-popup/share-content.mjs +1 -1
- package/dist/components/common/tab-bar/index.mjs +1 -1
- package/dist/components/common/top-nav-bar/client.mjs +1 -1
- package/dist/components/common/video-player/video-blind-ad-overlay.mjs +1 -1
- package/dist/components/common/video-player/video-preroll-ad-overlay.mjs +1 -1
- package/dist/components/pages/(follow)/_components/interaction-tabs/index.mjs +1 -1
- package/dist/components/pages/collection-add/page.mjs +1 -1
- package/dist/components/pages/collection-create/form.mjs +1 -1
- package/dist/components/pages/collection-detail/_components/collection-detail-video-card.mjs +1 -1
- package/dist/components/pages/collection-detail/detail.mjs +1 -1
- package/dist/components/pages/edit/page.mjs +1 -1
- package/dist/components/pages/feedback/_components/feedback-form.mjs +1 -1
- package/dist/components/pages/fullscreen-feed/page.mjs +1 -1
- package/dist/components/pages/login/forgot.mjs +1 -1
- package/dist/components/pages/login/index.mjs +1 -1
- package/dist/components/pages/login/login-client.mjs +1 -1
- package/dist/components/pages/login/password.mjs +1 -1
- package/dist/components/pages/login/register.mjs +1 -1
- package/dist/components/pages/login/reset-password.mjs +1 -1
- package/dist/components/pages/login/verify.mjs +1 -1
- package/dist/components/pages/post-detail/post-detail-client.mjs +1 -1
- package/dist/components/pages/publish/components/header.mjs +1 -1
- package/dist/components/pages/publish/hooks/use-file-upload.mjs +1 -1
- package/dist/components/pages/publish/page-client.mjs +1 -1
- package/dist/components/pages/search/page-client.mjs +1 -1
- package/dist/components/pages/search/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search/search-result/shared.mjs +1 -1
- package/dist/components/pages/search/top-header.mjs +1 -1
- package/dist/components/pages/search-result/page-client.mjs +1 -1
- package/dist/components/pages/search-result/search-user.mjs +1 -1
- package/dist/components/pages/search-result/search-video-info.mjs +1 -1
- package/dist/components/pages/search-result/shared.mjs +1 -1
- package/dist/components/pages/search-result/top-header.mjs +1 -1
- package/dist/components/pages/settings/_components/reset-password-drawer.mjs +1 -1
- package/dist/components/pages/settings/_components/settings.mjs +1 -1
- package/dist/components/pages/video-detail/video-detail-client.mjs +1 -1
- package/dist/components/pages/video-list/video-list-client.mjs +1 -1
- package/dist/components/pages/video-list/video-list-recommend-item.mjs +1 -1
- package/dist/components/pages/video-list/video-list-skeleton.mjs +1 -1
- package/dist/components/ui/badge.d.mts +1 -1
- package/dist/components/ui/button.d.mts +1 -1
- package/dist/components/ui/image.d.mts +4 -4
- package/dist/components/ui/sonner.d.mts +1 -1
- package/dist/components/ui/sonner.mjs +1 -1
- package/dist/hooks/use-browse-report.d.mts +13 -0
- package/dist/hooks/use-browse-report.mjs +1 -1
- package/dist/hooks/use-content-operate.mjs +1 -1
- package/dist/i18n/locales/en.mjs +1 -1
- package/dist/i18n/locales/zh-CN.mjs +1 -1
- package/dist/materials.d.mts +1 -2
- package/dist/materials.mjs +1 -1
- package/dist/types/safe-information.d.mts +2 -0
- package/dist/utils/common.d.mts +9 -1
- package/dist/utils/common.mjs +1 -1
- package/dist/utils/schema/material.d.mts +1 -1
- package/dist/utils.d.mts +2 -2
- package/dist/utils.mjs +1 -1
- package/package.json +1 -1
- package/dist/components/biz/business/hot-recommend/client.d.mts +0 -17
- package/dist/components/biz/business/hot-recommend/client.mjs +0 -2
- package/dist/components/biz/business/hot-recommend/index.d.mts +0 -5
- package/dist/components/biz/business/hot-recommend/material.d.mts +0 -25
- package/dist/components/biz/business/hot-recommend/material.mjs +0 -2
- package/dist/components/biz/business/hot-recommend/schema.d.mts +0 -24
- package/dist/components/biz/business/hot-recommend/schema.mjs +0 -2
- package/dist/components/biz/business/hot-recommend/server.d.mts +0 -11
- package/dist/components/biz/business/hot-recommend/server.mjs +0 -2
|
@@ -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 r}from"../../../service/generated/client.mjs";import{usePageLifecycle as i}from"../../../utils/tracking.mjs";import{uploadFile as ee}from"../../../utils/upload-file.mjs";import{Avatar as te,AvatarFallback as ne,AvatarImage as re}from"../../ui/avatar.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as ie,InputGroupAddon as ae,InputGroupTextarea as oe}from"../../ui/input-group.mjs";import{Text as o}from"../../ui/text.mjs";import{useDeleteRequest as se,useMutation as ce,useRequest as s}from"../../../hooks/query/use-query.mjs";import{HeaderNav as le}from"../../common/header-nav/client.mjs";import{PickerDrawer as c}from"../../common/picker/picker-drawer/picker-drawer.mjs";import{GenderPicker as ue}from"../../common/picker/gender-picker/gender-picker.mjs";import{ImageCropModal as de}from"../../common/image-crop-modal/image-crop-modal.mjs";import{useEffect as
|
|
2
|
+
"use client";import{useUserStore as e}from"../../../store/modules/user-store.mjs";import{gUserGetUserEditInfo as t,gUserGetUserInfo as n,pUserEditUserInfo as r}from"../../../service/generated/client.mjs";import{usePageLifecycle as i}from"../../../utils/tracking.mjs";import{uploadFile as ee}from"../../../utils/upload-file.mjs";import{Avatar as te,AvatarFallback as ne,AvatarImage as re}from"../../ui/avatar.mjs";import{Box as a}from"../../ui/box.mjs";import{InputGroup as ie,InputGroupAddon as ae,InputGroupTextarea as oe}from"../../ui/input-group.mjs";import{Text as o}from"../../ui/text.mjs";import{useDeleteRequest as se,useMutation as ce,useRequest as s}from"../../../hooks/query/use-query.mjs";import{HeaderNav as le}from"../../common/header-nav/client.mjs";import{PickerDrawer as c}from"../../common/picker/picker-drawer/picker-drawer.mjs";import{GenderPicker as ue}from"../../common/picker/gender-picker/gender-picker.mjs";import{ImageCropModal as de}from"../../common/image-crop-modal/image-crop-modal.mjs";import{toast as l}from"sonner";import{useEffect as u,useRef as d,useState as f}from"react";import{ChevronDown as fe}from"lucide-react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{useTranslations as pe}from"next-intl";import{produce as me}from"immer";const he={0:`secret`,1:`male`,2:`female`},h={male:1,female:2,secret:0},g=[`image/jpeg`,`image/png`],ge=/^[\u4E00-\u9FFF\w.-]+$/;function _e(e){let t=e.name.toLowerCase(),n=e.type.toLowerCase();return g.includes(n)||/\.(?:jpg|jpeg|png)$/i.test(t)}function _(e){return e?h[e]===void 0?he[e]??`secret`:e:`secret`}function ve(e){if(!e)return;if(h[e]!==void 0)return h[e];let t=Number(e);return Number.isNaN(t)?void 0:t}function ye(e){return{nickname:e?.nick_name??``,gender:_(e?.gender?.toString()),signature:e?.signature??``,avatar:e?.avatar??``}}function be(e){if(!e)return;e.focus();let t=e.value.length;e.setSelectionRange(t,t)}function xe({id:he}){let h=pe(`components.pages.edit`);i(`page_edit_profile`,`编辑资料`);let{userId:g,userInfo:_,setUserInfo:xe}=e(),v=he??g,y=se(),Se={male:h(`page.genderMale`),female:h(`page.genderFemale`),secret:h(`page.genderSecret`)},Ce=d(null),b=d(null),x=d(null),S=d(null),[C,w]=f(()=>ye()),[T,E]=f(!1),[we,D]=f(null),[Te,O]=f(!1),[k,A]=f(``),[j,M]=f(!1),[N,P]=f(``),[Ee,F]=f(!1),[I,L]=f(`secret`),[R,De]=f(!1),[z,B]=f(``),Oe={code:0,message:``,data:{}},ke={code:0,message:``,data:{}},{data:V,isLoading:H}=s([`user-edit-info`,v],()=>v?t({user_id:v}):Promise.resolve(Oe)),{data:Ae}=s([`user-info-basic`,v],()=>v?n({user_id:v}):Promise.resolve(ke)),{mutateAsync:je,isPending:Me}=ce(async e=>r(e)),Ne=T||Me||we!==null,U=H||Ne,W=U?`cursor-not-allowed opacity-60`:`cursor-pointer`,Pe=Ae?.data?.display_id||_?.display_id||`--`,G=C.gender||`secret`,Fe=U||N.trim()===C.nickname,Ie=U||I===G,Le=U||z===C.signature,K=`flex h-12 w-full items-center rounded-md bg-[var(--color-surface-field-bg)] px-4`,q=`text-sm leading-6 text-text3`,J=`block min-w-0 flex-1 truncate text-sm leading-5 text-text3`;u(()=>{let e=V?.data;e&&w(ye(e))},[V]),u(()=>{if(!j)return;let e=window.setTimeout(()=>{be(b.current)},250);return()=>{window.clearTimeout(e)}},[j]),u(()=>{if(!R)return;let e=window.setTimeout(()=>{be(x.current)},250);return()=>{window.clearTimeout(e)}},[R]),u(()=>()=>{k&&URL.revokeObjectURL(k)},[k]);function Y(e,t){w(me(n=>{n[e]=t}))}function Re(){k&&(URL.revokeObjectURL(k),A(``))}function ze(){v&&(y([`user-edit-info`,v]),y([`user-info-basic`,v]),y([`user-profile`,`mine`]),y([`user-profile`,`mine`,v]),y([`user-profile`,`profile`,v]))}function X(e){!v||v!==g||xe({..._,user_id:v,...e})}function Be(){l.info(h(`page.editBlockedWhileSaving`))}function Z(){return H?!0:Ne?(Be(),!0):!1}function Ve(e){return S.current?(Be(),!1):(S.current=e,D(e),!0)}function He(e){S.current===e&&(S.current=null,D(null))}async function Q(e,t){if(!Ve(e))return!1;let n=l.loading(h(`page.savingInProgress`));try{return await t()}finally{l.dismiss(n),He(e)}}function Ue(e,t){let n={...C,...t},r={nickname:[`nick_name`,n.nickname||void 0],avatar:[`avatar`,n.avatar||void 0],signature:[`signature`,n.signature||void 0],gender:[`gender`,ve(n.gender)]},i=Object.keys(r).filter(t=>t!==e).map(e=>r[e]);return i.push(r[e]),Object.fromEntries(i)}async function $(e,t){if(!v)return l.error(h(`page.userNotFound`)),!1;let n=Ue(e,t);try{return await je({user_id:v,...n}),ze(),!0}catch(e){return console.error(`更新用户信息失败`,e),l.error(h(`page.updateFailed`)),!1}}function We(){Z()||T||Ce.current?.click()}function Ge(e){if(Z()){e.target&&(e.target.value=``);return}let t=e.target.files?.[0];if(t){if(!_e(t)){l.error(h(`page.imageTypeInvalid`)),e.target&&(e.target.value=``);return}A(URL.createObjectURL(t)),O(!0),e.target&&(e.target.value=``)}}async function Ke(e){await Q(`avatar`,async()=>{try{E(!0);let t=await ee(new File([e],`avatar.jpg`,{type:`image/jpeg`}),1);return await $(`avatar`,{avatar:t.objectKey})?(Y(`avatar`,t.objectKey),X({avatar:t.objectKey}),qe(),l.success(h(`page.avatarUpdateSuccess`)),!0):!1}catch(e){return console.error(`上传头像失败`,e),l.error(h(`page.avatarUploadFailed`)),!1}finally{E(!1)}})}function qe(){O(!1),Re()}function Je(){Z()||(P(C.nickname),M(!0))}function Ye(e){let t=e.target.value;t.length>24||P(t)}function Xe(e){return e?e.length<2?h(`page.nicknameTooShort`):ge.test(e)?``:h(`page.nicknameInvalidChars`):h(`page.nicknameRequired`)}async function Ze(e){if(Fe)return!1;let t=e.trim(),n=Xe(t);return n?(l.error(n),!1):await Q(`nickname`,async()=>$(`nickname`,{nickname:t}))?(Y(`nickname`,t),X({nick_name:t}),P(t),l.success(h(`page.nicknameUpdateSuccess`)),!0):!1}function Qe(){Z()||(L(G),F(!0))}function $e(){F(!1)}function et(e){L(e)}async function tt(e){let t=e||I||`secret`;if(t===G)return!1;let n=ve(t);return await Q(`gender`,async()=>$(`gender`,{gender:t}))?(Y(`gender`,t),X({gender:n}),L(t),l.success(h(`page.genderUpdateSuccess`)),!0):!1}function nt(){Z()||(B(C.signature),De(!0))}function rt(e){let t=e.target.value;t.length>100||B(t)}function it(e){let t=e.trim();return t.length>0&&t.length<2?h(`page.signatureTooShort`):``}async function at(e){if(Le)return!1;let t=it(e);return t?(l.error(t),!1):await Q(`signature`,async()=>$(`signature`,{signature:e}))?(Y(`signature`,e),X({signature:e}),B(e),l.success(h(`page.signatureUpdateSuccess`)),!0):!1}return m(a,{className:`min-h-screen bg-[var(--color-surface-panel-dark)]`,children:[p(le,{className:`h-11 !border-none !bg-[var(--color-surface-panel-dark)]`,title:h(`page.title`)}),m(a,{className:`mx-auto flex w-full max-w-[390px] flex-col px-8 pb-10 pt-17`,children:[m(`button`,{type:`button`,onClick:We,className:`flex flex-col items-center gap-4 pb-10 ${W}`,children:[p(`input`,{ref:Ce,type:`file`,accept:`.jpg,.jpeg,.png,image/jpeg,image/png`,className:`hidden`,onChange:Ge}),p(a,{className:`flex h-[72px] w-[72px] items-center justify-center rounded-full bg-[var(--color-surface-white20)]`,children:m(te,{className:`h-[60px] w-[60px] border-[3px] border-[var(--color-surface-white20)]`,children:[p(re,{src:C.avatar}),p(ne,{})]})}),m(o,{className:`text-base leading-5 text-text3`,children:[`ID:`,` `,H?h(`page.loading`):T?h(`page.avatarUploading`):`${Pe}`]})]}),m(a,{className:`flex flex-col gap-6`,children:[m(a,{className:`flex flex-col gap-2`,children:[p(o,{as:`p`,className:q,children:h(`page.label`)}),p(`button`,{type:`button`,onClick:Je,className:`${K} ${W}`,children:p(o,{className:J,children:C.nickname||h(`page.nicknamePlaceholder`)})})]}),m(a,{className:`flex flex-col gap-2`,children:[p(o,{as:`p`,className:q,children:h(`page.genderLabel`)}),m(`button`,{type:`button`,onClick:Qe,className:`${K} justify-between gap-3 ${W}`,children:[p(o,{className:J,children:Se[G]||h(`page.genderSecret`)}),p(fe,{className:`h-5 w-5 shrink-0 text-text3`,strokeWidth:1.75})]})]}),m(a,{className:`flex flex-col gap-2`,children:[p(o,{as:`p`,className:q,children:h(`page.signatureLabel`)}),p(`button`,{type:`button`,onClick:nt,className:`${K} ${W}`,children:p(o,{className:J,children:C.signature||h(`page.signaturePlaceholder`)})})]})]})]}),p(c,{open:j,onClose:()=>M(!1),title:h(`page.label`),confirmText:h(`page.submit`),onConfirm:e=>Ze(String(e)),confirmDisabled:Fe,children:({onValueChange:e})=>p(a,{className:`px-4 py-4 min-h-[230px]`,children:m(ie,{children:[p(oe,{ref:b,className:`!bg-bg1 p-2.5`,rows:4,maxLength:24,placeholder:h(`page.nicknamePlaceholder`),value:N,onChange:t=>{Ye(t),e(t.target.value)},disabled:U}),p(ae,{className:`!bg-bg1`,align:`block-end`,children:p(`div`,{className:`text-right w-full`,children:m(`span`,{className:`text-xs`,children:[N.length,`/`,24]})})})]})})}),p(ue,{open:Ee,onClose:$e,value:I,onValueChange:et,onConfirm:tt,confirmDisabled:Ie}),p(c,{open:R,onClose:()=>De(!1),title:h(`page.signatureLabel`),confirmText:h(`page.submit`),onConfirm:e=>at(String(e)),confirmDisabled:Le,children:({onValueChange:e})=>p(a,{className:`px-4 py-4 min-h-[230px]`,children:m(ie,{children:[p(oe,{ref:x,className:`!bg-bg1 p-2.5`,rows:4,maxLength:100,placeholder:h(`page.signaturePlaceholder`),value:z,onChange:t=>{rt(t),e(t.target.value)},disabled:U}),p(ae,{className:`!bg-bg1`,align:`block-end`,children:p(`div`,{className:`text-right w-full`,children:m(`span`,{className:`text-xs`,children:[z.length,`/`,100]})})})]})})}),p(de,{open:Te,onClose:qe,imageSrc:k,onConfirm:Ke,cropShape:`round`})]})}export{xe as EditClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{cn as e}from"../../../../utils/cn.mjs";import{
|
|
2
|
+
"use client";import{cn as e}from"../../../../utils/cn.mjs";import{useUserStore as t}from"../../../../store/modules/user-store.mjs";import{pUserUserFeedback as n}from"../../../../service/generated/client.mjs";import{compressImage as r}from"../../../../utils/image-compression.mjs";import{usePageLifecycle as i}from"../../../../utils/tracking.mjs";import{uploadFile as a}from"../../../../utils/upload-file.mjs";import{useRouter as o}from"../../../../utils/use-compatible-router.mjs";import{Button as s}from"../../../ui/button.mjs";import{Image as c}from"../../../ui/image.mjs";import{Box as l}from"../../../ui/box.mjs";import{InputGroup as u,InputGroupAddon as d,InputGroupInput as f,InputGroupTextarea as p}from"../../../ui/input-group.mjs";import{Field as m,FieldLabel as h}from"../../../ui/field.mjs";import{Text as g}from"../../../ui/text.mjs";import{HeaderNav as _}from"../../../common/header-nav/client.mjs";import{AddIcon as v}from"../../../common/icons/add.mjs";import{toast as y}from"sonner";import{useRef as b,useState as x}from"react";import{XIcon as S}from"lucide-react";import{jsx as C,jsxs as w}from"react/jsx-runtime";import{useTranslations as T}from"next-intl";const E=new Set([`image/jpeg`,`image/jpg`,`image/png`]),D=new Set([`jpg`,`jpeg`,`png`]);function O(e){let t=e.type.toLowerCase(),n=e.name.split(`.`).pop()?.toLowerCase()||``;return t?E.has(t):D.has(n)}function k({className:E}={}){let D=T(`components.pages.feedback.components`);i(`page_feedback`,`意见反馈`);let k=o(),{userId:A}=t(),j=b(null),[M,N]=x({content:``,contact:``}),[P,F]=x([]),[I,L]=x(!1),[R,z]=x(!1),B=!M.content.trim();function V(e,t){N(n=>({...n,[e]:t}))}function H(){R||I||P.length>=3||j.current?.click()}async function U(e){let t=Array.from(e.target.files??[]);if(!t.length)return;let n=3-P.length;if(n<=0){e.target&&(e.target.value=``);return}let i=t.slice(0,n),o=i.filter(O);if(!o.length){y.error(D(`feedbackForm.imageTypeInvalid`)),e.target&&(e.target.value=``);return}o.length!==i.length&&y.error(D(`feedbackForm.imageTypeInvalid`));try{z(!0);let e=[],t=!1;for(let n of o)try{let t=await a(await r(n),1);e.push(t.objectKey)}catch(e){console.error(`上传截图失败`,e),t=!0}e.length&&F(t=>[...t,...e].slice(0,3)),t&&y.error(D(`feedbackForm.screenshotUploadFailed`))}catch(e){console.error(`上传截图失败`,e),y.error(D(`feedbackForm.screenshotUploadFailed`))}finally{z(!1),e.target&&(e.target.value=``)}}function W(e){R||I||F(t=>t.filter((t,n)=>n!==e))}async function G(){let e=M.content.trim(),t=M.contact.trim();if(!e){y.error(D(`feedbackForm.missingFeedback`));return}if(e.length<4){y.error(D(`feedbackForm.contentMinLength`));return}if(I)return;let r=y.loading(D(`feedbackForm.loading`));try{L(!0);let i=await n({user_id:A,feedback_content:e,feedback_screenshots:P.length?P:void 0,contact_info:t||void 0});if(i.code===0){N({content:``,contact:``}),F([]),k.push(`/settings`),y.success(D(`feedbackForm.submitsuccess`),{id:r});return}y.error(i.message||D(`feedbackForm.message`),{id:r})}catch(e){console.error(`提交反馈失败`,e),y.error(e.message||D(`feedbackForm.message`),{id:r})}finally{L(!1)}}return w(l,{className:e(`min-h-screen bg-[var(--color-surface-panel-dark)]`,E),children:[C(_,{title:D(`feedbackForm.title`),className:`!border-none !bg-[var(--color-surface-panel-dark)]`,rightChild:C(s,{onClick:G,disabled:I||R||B,className:`rounded-[8px] border-0 px-3 py-1.5 text-[16px] font-normal leading-6 text-white active:opacity-90 disabled:text-white/60 disabled:opacity-100`,style:{background:I||R||B?`linear-gradient(90deg, rgba(166, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`:`var(--gradient-action-button)`},children:D(I?`feedbackForm.loading`:`feedbackForm.submit`)})}),w(l,{className:`pb-3`,children:[w(m,{className:`border-none bg-[var(--color-surface-panel-dark)] px-3`,children:[C(h,{required:!0,className:`text-sm leading-6 text-text3`,children:D(`feedbackForm.label`)}),w(u,{className:`overflow-hidden rounded-md !bg-[var(--color-surface-field-bg)] shadow-none dark:!bg-[var(--color-surface-field-bg)]`,children:[C(p,{className:`p-2.5 text-text1 placeholder:text-text3`,maxLength:500,placeholder:D(`feedbackForm.placeholder`),value:M.content,onChange:e=>V(`content`,e.target.value)}),C(d,{className:`!bg-transparent font-normal !text-text3`,align:`block-end`,children:C(`div`,{className:`w-full text-right`,children:w(`span`,{className:`text-xs tabular-nums text-text3`,children:[M.content.length,`/500`]})})})]})]}),w(m,{className:`border-none bg-[var(--color-surface-panel-dark)] px-3`,children:[C(h,{className:`text-sm leading-6 text-text3`,children:D(`feedbackForm.screenshotLabel`)}),C(`input`,{ref:j,type:`file`,multiple:!0,accept:`image/jpeg,image/jpg,image/png,.jpg,.jpeg,.png`,className:`hidden`,onChange:U}),w(l,{className:`mt-2 grid grid-cols-3 gap-2`,children:[P.map((e,t)=>w(l,{className:`relative aspect-square overflow-hidden rounded-md bg-[var(--color-surface-field-bg)] shadow-none`,children:[C(c,{src:e,alt:D(`feedbackForm.alt`),fill:!0,className:`object-cover`}),C(s,{size:`icon-xs`,variant:`secondary`,className:`absolute right-1 top-1 rounded-full bg-[var(--color-surface-chip-gray20)] text-text1 shadow-none`,onClick:()=>W(t),"aria-label":D(`feedbackForm.delete`),children:C(S,{})})]},`${e}-${t}`)),P.length<3&&w(l,{className:`flex aspect-square flex-col items-center justify-center gap-2 rounded-md border border-dashed border-[var(--color-line1)] bg-[var(--color-surface-field-bg)] py-3 text-center shadow-none`,onClick:H,children:[C(v,{}),C(g,{className:`text-xs text-text3`,children:D(R?`feedbackForm.uploading`:`feedbackForm.addScreenshot`)})]})]})]}),w(m,{className:`border-none bg-[var(--color-surface-panel-dark)] px-3`,children:[C(h,{className:`text-sm leading-6 text-text3`,children:D(`feedbackForm.contactLabel`)}),C(u,{className:`h-auto min-h-11 overflow-hidden rounded-md !bg-[var(--color-surface-field-bg)] shadow-none dark:!bg-[var(--color-surface-field-bg)]`,children:C(f,{className:`h-auto min-h-11 px-2.5 py-2.5 text-text1 placeholder:text-text3`,placeholder:D(`feedbackForm.placeholder1_6d0242`),value:M.contact,onChange:e=>V(`contact`,e.target.value)})})]})]})]})}export{k as FeedbackForm};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{usePageLifecycle as e}from"../../../utils/tracking.mjs";import t from"../../biz/basics/fullscreen-feed/runtime/client.mjs";import{useMixedFeedController as n}from"../../biz/basics/fullscreen-feed/runtime/use-mixed-feed-controller.mjs";import{useSeriesFeedController as r}from"../../biz/basics/fullscreen-feed/runtime/use-series-feed-controller.mjs";import{SeriesEpisodes as i}from"../../common/series-episodes/index.mjs";import{useCallback as a,useEffect as o,useMemo as s}from"react";import{Fragment as
|
|
2
|
+
"use client";import{usePageLifecycle as e}from"../../../utils/tracking.mjs";import t from"../../biz/basics/fullscreen-feed/runtime/client.mjs";import{useMixedFeedController as n}from"../../biz/basics/fullscreen-feed/runtime/use-mixed-feed-controller.mjs";import{useSeriesFeedController as r}from"../../biz/basics/fullscreen-feed/runtime/use-series-feed-controller.mjs";import{SeriesEpisodes as i}from"../../common/series-episodes/index.mjs";import{useCallback as a,useEffect as o,useMemo as s}from"react";import{usePathname as c}from"next/navigation";import{Fragment as l,jsx as u,jsxs as d}from"react/jsx-runtime";import{useTranslations as f}from"next-intl";function p({blockId:p,seriesId:m,initialContents:h,videoConfig:g,hasBottom:_,pageSize:v=6,initialActiveIndex:y=0,items:b,onSwipeTo:x,onEpisodeNavigate:S,onGoToEpisode:C,currentUserId:w,followIds:T,onFollowIdsChange:E,onRequireLogin:D}){let O=f(`components.pages.fullscreenFeed`),k=c();e(`page_fullscreen_feed`,`全屏视频`);let A=s(()=>{let e=m?`series:${m}`:`block:${p||``}`;return`${k||`unknown`}:fullscreen-feed:${e}:pageSize:${v}`},[p,v,k,m]),j=`${A}:series-controller`,M=`${A}:mixed-controller`,N=r({seriesId:m||``,initialContents:h,initialActiveIndex:y,onEpisodeNavigate:S,keepAliveKey:j}),P=n({blockId:p||``,initialContents:h,initialActiveIndex:y,pageSize:v,keepAliveKey:M}),F=m?N:P,I=b||F.items,L=F.activeIndex,R=F.userInteracted,z=a((e,t)=>{F.setActiveIndex(e,t),m||P.maybeLoadMore(e),x?.({activeIndex:e,items:I,direction:t})},[F,I,x,m,P]),B=a((e,t)=>{F.updateItemData(e,t)},[F]),V=a(e=>F.getNavigationInfo(e),[F]);return o(()=>{C&&C(e=>{z(e,`jump`)})},[C,z]),!p&&!m?u(`div`,{className:`flex h-screen w-full items-center justify-center bg-black text-white/70`,children:O(`page.missingParams`)}):d(l,{children:[u(t,{items:I,activeIndex:L,bottom:_?56:void 0,videoConfig:g,userInteracted:R,onUserInteracted:F.setUserInteracted,onActiveIndexChange:z,onDataUpdate:B,getNavigationInfo:V,currentUserId:w,followIds:T,onFollowIdsChange:E,onRequireLogin:D}),m&&N.isSeriesSelectorOpen&&u(i,{title:O(`page.episodeSelectorTitle`),videoTitle:N.seriesMeta.seriesTitle,mode:`selector`,variant:`sheet`,open:N.isSeriesSelectorOpen,seriesList:N.seriesMeta.seriesList,activeEpisodeId:N.activeEpisodeId,onClose:N.closeSeriesSelector,onSelectEpisode:N.onSelectEpisode})]})}export{p as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{isValidEmail as e}from"../../../utils/email-validator.mjs";import{pUserSendForgetEmailCode as t}from"../../../service/generated/client.mjs";import{Button as n}from"../../ui/button.mjs";import{Box as r}from"../../ui/box.mjs";import{Input as i}from"../../ui/input.mjs";import{Text as a}from"../../ui/text.mjs";import{useLoginModalStore as o}from"../../../store/modules/login-modal-store.mjs";import{LeftArrowIcon as s}from"../../../assets/icons/left-arrow-icon.mjs";import{useMemo as c,useState as l}from"react";import{jsx as u,jsxs as d}from"react/jsx-runtime";import{useTranslations as f}from"next-intl";function p(p){let m=f(`components.pages.login`),{onClose:h,onLogin:g,onVerify:_}=p,{setVerifyStep:v}=o(),[y,b]=l(``),[x,S]=l(!1),[C,w]=l(``),T=c(()=>y.trim().length>0&&!x,[y,x]);function E(e){b(e),C&&w(``)}function D(e){e.preventDefault(),O()}async function O(){if(T)try{S(!0),w(``);let n=y.trim();if(!e(n)){w(m(`register.invalidEmail`));return}await t({email:n}),v(`forgot-password`),_?.(n)}catch(e){w(e.message??m(`forgot.sendFailed`))}finally{S(!1)}}return d(r,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,children:[d(r,{className:`flex justify-between items-center h-[60px] px-[16px]`,children:[u(n,{type:`button`,onClick:h,"aria-label":m(`forgot.back`),className:`cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:u(s,{className:`w-[16px] h-[16px] text-text1/80`,"aria-hidden":`true`,focusable:`false`})}),u(a,{className:`text-[14px] text-text2`})]}),d(r,{className:`px-[24px] flex flex-col mt-[15px]`,children:[d(r,{className:`flex flex-col`,children:[u(a,{className:`text-[24px] leading-[32px] font-bold`,children:m(`forgot.title`)}),d(a,{className:`text-[14px] leading-[22px] mt-[12px] text-text1/80`,children:[m(`forgot.or`),u(n,{type:`button`,onClick:g,className:`cursor-pointer text-theme5 hover:opacity-90 bg-transparent !p-0 !px-0 !py-0`,children:m(`forgot.loginLink`)})]})]}),d(`form`,{className:`mt-[38px]`,autoComplete:`off`,onSubmit:D,children:[u(r,{className:`flex items-center px-[28px] rounded-[50px] h-[66px] bg-line1 border border-line1`,children:u(i,{placeholder:m(`forgot.emailPlaceholder`),type:`email`,name:`funhub-forgot-email`,value:y,onChange:e=>E(e.target.value),autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`!bg-transparent !px-0 !py-0 !rounded-none !text-text1 placeholder:!text-text3 leading-[26px] text-[18px]`})}),u(r,{className:`h-[22px] mt-[16px] mb-[22px] ml-[12px] text-[14px] text-theme5`,children:C}),u(n,{type:`submit`,disabled:!T,className:`w-full h-[60px] !rounded-[30px] !text-[18px] font-bold leading-[26px] bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:m(x?`forgot.sending`:`forgot.getCode`)})]})]})]})}export{p as Forgot};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{hashPassword as e}from"../../../utils/common.mjs";import{pUserLogin as t}from"../../../service/generated/client.mjs";import{usePageLifecycle as n}from"../../../utils/tracking.mjs";import{Box as r}from"../../ui/box.mjs";import{useLoginModalStore as i}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as a}from"../../../hooks/query/use-query.mjs";import{useSetAuthFields as o}from"../../../hooks/use-auth.mjs";import{Forgot as s}from"./forgot.mjs";import{LoginClient as c}from"./login-client.mjs";import{Password as l}from"./password.mjs";import{Register as u}from"./register.mjs";import{ResetPassword as d}from"./reset-password.mjs";import{Verify as f}from"./verify.mjs";import{
|
|
2
|
+
"use client";import{hashPassword as e}from"../../../utils/common.mjs";import{pUserLogin as t}from"../../../service/generated/client.mjs";import{usePageLifecycle as n}from"../../../utils/tracking.mjs";import{Box as r}from"../../ui/box.mjs";import{useLoginModalStore as i}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as a}from"../../../hooks/query/use-query.mjs";import{useSetAuthFields as o}from"../../../hooks/use-auth.mjs";import{Forgot as s}from"./forgot.mjs";import{LoginClient as c}from"./login-client.mjs";import{Password as l}from"./password.mjs";import{Register as u}from"./register.mjs";import{ResetPassword as d}from"./reset-password.mjs";import{Verify as f}from"./verify.mjs";import{toast as p}from"sonner";import{useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";function v(v){let{initialStep:y=`login`}=v,{close:b,resolveLogin:x}=i(),[S,C]=m(y),[w,T]=m(``),E=o(),[D,O]=m(``),k=a(),A=_(`components.pages.login`);return n(`login`,`登录注册`),g(r,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col fixed top-0 left-0 right-0 bottom-0 z-50`,children:[S===`login`&&h(c,{onRegister:()=>C(`register`),onForgotPassword:()=>C(`forgot`),errorText:D,onSubmit:async n=>{O(``);try{let r=e(n.password),{data:i}=await t({email:n.email,password:r});E({token:i.token,expireTime:i.expire_time,userId:i.user_id}),p.success(A(`index.loginSuccess`)),k([`user-profile`,`mine`]),x(!0)}catch(e){O(e.message??A(`index.loginFailed`))}},onClose:()=>{b()}}),S===`register`&&h(u,{onLogin:()=>C(`login`),onClose:()=>C(`login`),onVerify:e=>{T(e),C(`verify`)}}),S===`forgot`&&h(s,{onLogin:()=>C(`login`),onClose:()=>C(`login`),onVerify:e=>{T(e),C(`verify`)}}),S===`reset-password`&&h(d,{onClose:()=>{b()},onPassword:e=>{T(e??``),C(`password`)}}),S===`verify`&&h(f,{email:w,onClose:()=>C(`register`),onPassword:e=>{T(e),C(`password`)}}),S===`password`&&h(l,{email:w,onClose:()=>C(`verify`)})]})}export{v as Login};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{ensureGuestIdentity as e}from"../../../store/modules/user-store.mjs";import{Button as t}from"../../ui/button.mjs";import{Box as n}from"../../ui/box.mjs";import{Checkbox as r}from"../../ui/checkbox.mjs";import{Input as i}from"../../ui/input.mjs";import{Text as a}from"../../ui/text.mjs";import{CloseIcon as o}from"../../../assets/icons/close-icon.mjs";import{EyeIcon as s}from"../../../assets/icons/eye-icon.mjs";import{EyeOffIcon as c}from"../../../assets/icons/eye-off-icon.mjs";import{AgreementDialog as l}from"./agreement-dialog.mjs";import{authGradientTextStyle as u,authPanelBackgroundStyle as d}from"./auth-page-styles.mjs";import{trackLoginPageClick as f}from"./tracking.mjs";import{useCallback as p,useMemo as m,useState as h}from"react";import{jsx as g,jsxs as _}from"react/jsx-runtime";import{useTranslations as v}from"next-intl";function y(y){let b=v(`components.pages.login`),{onClose:x,onForgotPassword:S,onRegister:C,onSubmit:w,errorText:T}=y,[E,D]=h(``),[O,k]=h(``),[A,j]=h(!1),[M,N]=h(!1),[P,F]=h(!1),[I,L]=h(null),R=m(()=>E.trim().length>0&&O.length>0&&P&&!M,[E,O,P,M]),z=p(()=>{e(!0),C?.()},[C]);async function B(){if(R)try{N(!0),await w?.({email:E.trim(),password:O})}finally{N(!1)}}return _(n,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:d,children:[_(n,{className:`relative z-[1] mx-auto flex min-h-screen w-full max-w-[390px] flex-col justify-between px-[32px] pt-[calc(env(safe-area-inset-top)+152px)] pb-[calc(env(safe-area-inset-bottom)+40px)]`,children:[g(t,{type:`button`,variant:`ghost`,onClick:x,"aria-label":b(`loginClient.close`),className:`absolute top-[calc(env(safe-area-inset-top)+12px)] right-[24px] h-[32px] w-[32px] rounded-full border border-white/10 bg-white/5 !p-0 text-text2 backdrop-blur-[12px] hover:!bg-white/10 hover:text-text1`,children:g(o,{className:`h-[16px] w-[16px]`,"aria-hidden":`true`,focusable:`false`})}),_(n,{className:`flex w-full flex-col`,children:[g(a,{className:`text-[28px] leading-[32px] font-medium text-[#E6E6E6]`,children:b(`loginClient.title`)}),g(a,{className:`mt-[16px] text-[14px] leading-[24px] text-[#E6E6E6]`,children:b(`loginClient.subtitle`)}),_(`form`,{className:`mt-[48px]`,autoComplete:`off`,onSubmit:e=>{e.preventDefault(),B()},children:[g(n,{className:`flex h-[48px] items-center rounded-[8px] bg-white/10 px-[22px]`,children:g(i,{placeholder:b(`loginClient.emailPlaceholder`),type:`email`,name:`funhub-login-email`,value:E,onChange:e=>D(e.target.value),autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`!h-auto !rounded-none !bg-transparent !px-0 !py-0 !text-[14px] !leading-[20px] !text-text2 placeholder:!text-white/60`})}),_(n,{className:`mt-[24px] flex h-[48px] items-center justify-between rounded-[8px] bg-white/10 px-[16px]`,children:[g(i,{placeholder:b(`loginClient.passwordPlaceholder`),type:A?`text`:`password`,name:`funhub-login-password`,value:O,onChange:e=>k(e.target.value),autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`flex-1 !h-auto !rounded-none !bg-transparent !px-0 !py-0 !text-[14px] !leading-[20px] !text-text2 placeholder:!text-white/60`}),g(t,{type:`button`,variant:`ghost`,className:`ml-[12px] h-[24px] w-[24px] cursor-pointer select-none !p-0 text-white/50 hover:text-white/80`,"aria-label":b(A?`loginClient.hidePassword`:`loginClient.showPassword`),onClick:()=>j(e=>!e),children:g(A?s:c,{className:`h-[20px] w-[20px]`,"aria-hidden":`true`,focusable:`false`})})]}),!!T&&g(n,{className:`mt-[8px] text-[12px] leading-[16px] text-theme5`,children:T})]}),_(n,{className:`mt-[16px] flex items-center justify-between text-[14px] leading-[24px] text-[#9DA3AC]`,children:[_(a,{as:`span`,className:`whitespace-nowrap`,children:[b(`loginClient.noAccount`),g(t,{type:`button`,variant:`link`,onClick:z,className:`inline h-auto !p-0 text-[14px] font-normal leading-[24px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,children:b(`loginClient.registerLink`)})]}),g(t,{type:`button`,variant:`link`,onClick:S,className:`inline h-auto !p-0 text-[14px] font-normal leading-[24px] text-[#9DA3AC] !no-underline hover:text-text1 hover:!no-underline`,children:b(`loginClient.forgotPassword`)})]})]}),_(n,{className:`flex w-full flex-col`,children:[_(n,{className:`flex items-center`,children:[g(r,{checked:P,onCheckedChange:e=>F(e===!0),"aria-label":b(`loginClient.agreeToTerms`),className:`mt-px size-[16px] border-white/60 bg-transparent data-[checked]:border-theme5 data-[checked]:bg-theme5 data-[checked]:text-white`}),_(a,{as:`span`,className:`ml-[8px] text-[12px] leading-[16px] text-[#9DA3AC]`,children:[b(`loginClient.agreeToTermsPrefix`),_(t,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>L(`terms`),children:[`《`,b(`loginClient.userAgreement`),`》`]}),b(`loginClient.and`),_(t,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>L(`privacy`),children:[`《`,b(`loginClient.privacyPolicy`),`》`]})]})]}),g(t,{type:`button`,"data-skip-dialog-track":`true`,onClick:e=>{f(e,`login_submit`),B()},disabled:!R,className:`mt-[16px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${R?``:`!text-white/60`}`,style:{background:R?`var(--gradient-action-button)`:`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`},children:b(M?`loginClient.loggingIn`:`loginClient.login`)})]})]}),g(l,{type:I,onClose:()=>L(null)})]})}export{y as LoginClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{getCookie as e,hashPassword as t}from"../../../utils/common.mjs";import{pUserRegister as n,pUserResetForgetPassword as r,pUserResetPassword as i}from"../../../service/generated/client.mjs";import{getPasswordValidationErrorText as a,validatePasswordPair as o}from"../../../utils/password-validator.mjs";import{Button as s}from"../../ui/button.mjs";import{Box as c}from"../../ui/box.mjs";import{Input as l}from"../../ui/input.mjs";import{Text as u}from"../../ui/text.mjs";import{useLoginModalStore as d}from"../../../store/modules/login-modal-store.mjs";import{useSetAuthFields as f,useUserId as p}from"../../../hooks/use-auth.mjs";import{LeftArrowIcon as m}from"../../../assets/icons/left-arrow-icon.mjs";import{EyeIcon as h}from"../../../assets/icons/eye-icon.mjs";import{EyeOffIcon as g}from"../../../assets/icons/eye-off-icon.mjs";import{toast as _}from"sonner";import{useCallback as v,useMemo as y,useState as b}from"react";import{jsx as x,jsxs as S}from"react/jsx-runtime";import{useTranslations as C}from"next-intl";function w(w){let T=C(`components.pages.login`),{email:E,onClose:D}=w,O=f(),k=p(),{resolveLogin:A}=d(),[j,M]=b(``),[N,P]=b(``),[F,I]=b(!1),[L,R]=b(!1),[z,B]=b(!1),[V,H]=b(``),{verifyStep:U}=d(),W=v(async()=>{let a=t(j);return U===`reset-password`?await i({user_id:k,password:a}):U===`forgot-password`?await r({email:E,password:a}):await n({email:E,user_id:await e(`guestUserId`),password:a})},[U,k,E,j]),G=y(()=>o(j,N),[j,N]),K=y(()=>a(G),[G]),q=K!==``,J=G.type===`not-match`,Y=y(()=>j.length>0&&N.length>0&&K===``&&!z,[j,N,K,z]);async function X(){if(Y)try{B(!0),H(``);let{data:e}=await W();e?.user_id&&(O({token:e.token,expireTime:e.expire_time,userId:e.user_id}),_.success(T(`password.passwordSetSuccess`))),A(!0)}catch(e){H(e.message??T(`password.submitFailed`))}finally{B(!1)}}let Z=T(U===`reset-password`?`password.confirmModify`:U===`forgot-password`?`password.confirmReset`:`password.register`),Q=T(U===`reset-password`||U===`forgot-password`?`password.setNewPassword`:`password.setLoginPassword`);return S(c,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,children:[S(c,{className:`flex justify-between items-center h-[60px] px-[16px]`,children:[x(s,{type:`button`,onClick:D,"aria-label":T(`password.back`),className:`cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:x(m,{className:`w-[16px] h-[16px] text-text1/80`,"aria-hidden":`true`,focusable:`false`})}),x(u,{className:`text-[14px] text-text2`})]}),S(c,{className:`px-[24px] flex flex-col mt-[15px]`,children:[x(c,{className:`flex flex-col`,children:x(u,{className:`text-[24px] leading-[32px] font-bold`,children:Q})}),S(`form`,{className:`mt-[58px]`,autoComplete:`off`,onSubmit:e=>{e.preventDefault(),X()},children:[S(c,{className:`space-y-[16px]`,children:[S(c,{className:`flex items-center justify-between px-[28px] rounded-[50px] h-[66px] bg-line1 border ${q?`border-theme5`:`border-line1`}`,children:[x(l,{placeholder:T(`password.passwordPlaceholder`),type:F?`text`:`password`,name:`funhub-password`,value:j,onChange:e=>M(e.target.value),autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`flex-1 !bg-transparent !px-0 !py-0 !rounded-none !text-text1 placeholder:!text-text3 leading-[26px] text-[18px]`}),x(s,{type:`button`,onClick:()=>I(!F),className:`ml-[10px] cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:x(F?h:g,{className:`w-[20px] h-[20px] text-text3`})})]}),S(c,{className:`flex items-center justify-between px-[28px] rounded-[50px] h-[66px] bg-line1 border ${J?`border-theme5`:`border-line1`}`,children:[x(l,{placeholder:T(`password.confirmPasswordPlaceholder`),type:L?`text`:`password`,name:`funhub-confirm-password`,value:N,onChange:e=>P(e.target.value),autoComplete:`new-password`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`flex-1 !bg-transparent !px-0 !py-0 !rounded-none !text-text1 placeholder:!text-text3 leading-[26px] text-[18px]`}),x(s,{type:`button`,onClick:()=>R(!L),className:`ml-[10px] cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:x(L?h:g,{className:`w-[20px] h-[20px] text-text3`})})]})]}),x(c,{className:`h-[22px] mt-[16px] mb-[22px] ml-[12px] text-[14px] text-theme5`,children:K||V}),x(s,{type:`submit`,disabled:!Y,className:`w-full h-[60px] !rounded-[30px] !text-[18px] font-bold leading-[26px] bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:z?T(`password.submitting`):Z})]})]})]})}export{w as Password};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{isValidEmail as e}from"../../../utils/email-validator.mjs";import{pUserSendEmailCode as t}from"../../../service/generated/client.mjs";import{Button as n}from"../../ui/button.mjs";import{Box as r}from"../../ui/box.mjs";import{Checkbox as i}from"../../ui/checkbox.mjs";import{Input as a}from"../../ui/input.mjs";import{Text as o}from"../../ui/text.mjs";import{useLoginModalStore as s}from"../../../store/modules/login-modal-store.mjs";import{LeftArrowIcon as c}from"../../../assets/icons/left-arrow-icon.mjs";import{AgreementDialog as l}from"./agreement-dialog.mjs";import{authGradientTextStyle as u,authPanelBackgroundStyle as d}from"./auth-page-styles.mjs";import{trackLoginPageClick as f}from"./tracking.mjs";import{useMemo as p,useState as m}from"react";import{jsx as h,jsxs as g}from"react/jsx-runtime";import{useTranslations as _}from"next-intl";function v(v){let y=_(`components.pages.login`),{onClose:b,onLogin:x,onVerify:S}=v,{setVerifyStep:C}=s(),[w,T]=m(``),[E,D]=m(!1),[O,k]=m(``),[A,j]=m(!1),[M,N]=m(null),P=p(()=>w.trim().length>0&&A&&!E,[w,A,E]);function F(e){T(e),O&&k(``)}async function I(){if(P)try{D(!0),k(``);let n=w.trim();if(!e(n)){k(y(`register.invalidEmail`));return}await t({email:n}),C(`register-verify`),S?.(n)}catch(e){k(e.message??y(`register.sendFailed`))}finally{D(!1)}}return g(r,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:d,children:[g(r,{className:`relative z-[1] mx-auto flex min-h-screen w-full max-w-[390px] flex-col justify-between px-[32px] pt-[calc(env(safe-area-inset-top)+152px)] pb-[calc(env(safe-area-inset-bottom)+40px)]`,children:[h(n,{type:`button`,variant:`ghost`,onClick:b,"aria-label":y(`register.back`),className:`absolute top-[calc(env(safe-area-inset-top)+12px)] left-[24px] h-[32px] w-[32px] rounded-full border border-white/10 bg-white/5 !p-0 text-text2 backdrop-blur-[12px] hover:!bg-white/10 hover:text-text1`,children:h(c,{className:`h-[16px] w-[16px]`,"aria-hidden":`true`,focusable:`false`})}),g(r,{className:`flex w-full flex-col`,children:[h(o,{className:`text-[28px] leading-[32px] font-medium text-[#E6E6E6]`,children:y(`loginClient.title`)}),h(o,{className:`mt-[16px] text-[14px] leading-[24px] text-[#E6E6E6]`,children:y(`loginClient.subtitle`)}),h(`form`,{className:`mt-[48px]`,autoComplete:`off`,onSubmit:e=>{e.preventDefault(),I()},children:h(r,{className:`flex h-[48px] items-center rounded-[8px] bg-white/10 px-[22px]`,children:h(a,{placeholder:y(`register.emailPlaceholder`),type:`email`,name:`funhub-register-email`,value:w,onChange:e=>F(e.target.value),autoComplete:`off`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`!h-auto !rounded-none !bg-transparent !px-0 !py-0 !text-[14px] !leading-[20px] !text-text2 placeholder:!text-white/60`})})}),!!O&&h(r,{className:`mt-[8px] min-h-[16px] text-[12px] leading-[16px] text-theme5`,children:O}),h(r,{className:`mt-[16px] flex items-center justify-between text-[14px] leading-[24px] text-[#9DA3AC]`,children:g(o,{as:`span`,className:`whitespace-nowrap`,children:[y(`register.hasAccount`),h(n,{type:`button`,variant:`link`,onClick:x,className:`inline h-auto !p-0 text-[14px] font-normal leading-[24px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,children:y(`register.loginLink`)})]})})]}),g(r,{className:`flex w-full flex-col`,children:[g(r,{className:`flex items-center`,children:[h(i,{checked:A,onCheckedChange:e=>j(e===!0),"aria-label":y(`loginClient.agreeToTerms`),className:`mt-px size-[16px] border-white/60 bg-transparent data-[checked]:border-theme5 data-[checked]:bg-theme5 data-[checked]:text-white`}),g(o,{as:`span`,className:`ml-[8px] text-[12px] leading-[16px] text-[#9DA3AC]`,children:[y(`loginClient.agreeToTermsPrefix`),g(n,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>N(`terms`),children:[`《`,y(`loginClient.userAgreement`),`》`]}),y(`loginClient.and`),g(n,{type:`button`,variant:`link`,className:`inline h-auto !p-0 text-[12px] font-normal leading-[16px] !no-underline hover:opacity-80 hover:!no-underline`,style:u,onClick:()=>N(`privacy`),children:[`《`,y(`loginClient.privacyPolicy`),`》`]})]})]}),h(n,{type:`button`,"data-skip-dialog-track":`true`,onClick:e=>{f(e,`register_submit`),I()},disabled:!P,className:`mt-[16px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${P?``:`!text-white/60`}`,style:{background:P?`var(--gradient-action-button)`:`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`},children:y(E?`register.sending`:`register.getCode`)})]})]}),h(l,{type:M,onClose:()=>N(null)})]})}export{v as Register};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{pUserSendResetPasswordEmailCode as e,pUserVerifyResetPasswordEmailCode as t}from"../../../service/generated/client.mjs";import{Button as n}from"../../ui/button.mjs";import{Box as r}from"../../ui/box.mjs";import{Input as i}from"../../ui/input.mjs";import{Text as a}from"../../ui/text.mjs";import{useLoginModalStore as o}from"../../../store/modules/login-modal-store.mjs";import{useUserId as s,useUserInfo as c}from"../../../hooks/use-auth.mjs";import{LeftArrowIcon as l}from"../../../assets/icons/left-arrow-icon.mjs";import{useEffect as u,useMemo as d,useState as f}from"react";import{jsx as p,jsxs as m}from"react/jsx-runtime";import{useTranslations as h}from"next-intl";function g(e){let[t,n]=e.split(`@`);return!t||!n?e:`${t.slice(0,3)}***${t.length>3?t.slice(-1):``}@${n}`}function _(_){let v=h(`components.pages.login`),{onClose:y,onPassword:b}=_,x=s(),S=c(),{setVerifyStep:C}=o(),[w,T]=f(``),[E,D]=f(0),[O,k]=f(!1),[A,j]=f(!1),[M,N]=f(``),P=d(()=>{let e=S;return e?.email||e?.mail||``},[S]),F=d(()=>P?g(P):``,[P]);u(()=>{C(`reset-password`)},[C]),u(()=>{if(E<=0)return;let e=setInterval(()=>{D(e=>e-1)},1e3);return()=>clearInterval(e)},[E]);let I=d(()=>w.trim().length>=6&&!A,[w,A]);function L(e){T(e.replace(/\D/g,``))}function R(e){e.preventDefault(),B()}async function z(){if(!(!x||O||E>0))try{k(!0),N(``),await e({user_id:x}),D(60)}catch(e){N(e.message??v(`resetPassword.sendFailed`))}finally{k(!1)}}async function B(){if(!(!I||!x))try{j(!0),N(``),await t({user_id:x,email_code:w.trim()}),b?.(P)}catch(e){N(e.message??v(`resetPassword.verifyFailed`))}finally{j(!1)}}return m(r,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,children:[m(r,{className:`flex items-center h-[60px] px-[16px]`,children:[p(n,{type:`button`,onClick:y,"aria-label":v(`resetPassword.back`),className:`cursor-pointer bg-transparent !p-0 !px-0 !py-0`,children:p(l,{className:`w-[16px] h-[16px] text-text1/80`,"aria-hidden":`true`,focusable:`false`})}),p(a,{className:`flex-1 text-center text-[16px] font-semibold`,children:v(`resetPassword.title`)}),p(r,{className:`w-[16px]`,"aria-hidden":`true`})]}),m(r,{className:`px-[24px] flex flex-col mt-[24px]`,children:[m(a,{className:`text-[14px] leading-[22px] text-text1/80`,children:[v(`resetPassword.verifyViaEmail`),F?` ${F} `:` `,v(`resetPassword.verifyHint`)]}),p(a,{className:`mt-[8px] text-[12px] leading-[18px] text-text3`,children:v(`resetPassword.passwordRuleHint`)}),m(`form`,{className:`mt-[36px]`,autoComplete:`off`,onSubmit:R,children:[m(r,{className:`flex items-center justify-between px-[20px] rounded-[50px] h-[56px] bg-line1 border border-line1`,children:[p(i,{placeholder:v(`resetPassword.codePlaceholder`),type:`text`,name:`funhub-reset-password-code`,value:w,onChange:e=>L(e.target.value),inputMode:`numeric`,autoComplete:`one-time-code`,autoCorrect:`off`,autoCapitalize:`none`,spellCheck:!1,"data-lpignore":`true`,"data-1p-ignore":`true`,"data-form-type":`other`,className:`flex-1 !bg-transparent !px-0 !py-0 !rounded-none !text-text1 placeholder:!text-text3 leading-[24px] text-[16px] caret-transparent`}),p(n,{type:`button`,onClick:z,disabled:O||E>0,className:`ml-[12px] cursor-pointer text-theme5 !p-0 !px-0 !py-0 disabled:text-text3`,children:E>0?`${v(`resetPassword.resend`)} (${E}s)`:v(`resetPassword.sendCode`)})]}),p(r,{className:`h-[22px] mt-[16px] mb-[22px] ml-[12px] text-[14px] text-theme5`,children:M}),p(n,{type:`submit`,disabled:!I,className:`w-full h-[60px] !rounded-[30px] !text-[18px] font-bold leading-[26px] bg-theme6 disabled:bg-theme6/40 disabled:text-text3 active:opacity-90 !px-0 !py-0`,children:v(A?`resetPassword.verifying`:`resetPassword.verifyEmail`)})]})]})]})}export{_ as ResetPassword};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{getCookie as e}from"../../../utils/common.mjs";import{cn as t}from"../../../utils/cn.mjs";import{pUserSendEmailCode as n,pUserSendResetPasswordEmailCode as r,pUserVerifyForgetEmailCode as i,pUserVerifyResetPasswordEmailCode as a}from"../../../service/generated/client.mjs";import{pUserRegisterByVerifyEmailCodeCompat as o}from"../../../service/register-by-verify-email-code.mjs";import{Button as s}from"../../ui/button.mjs";import{Box as c}from"../../ui/box.mjs";import{Text as l}from"../../ui/text.mjs";import{useLoginModalStore as u}from"../../../store/modules/login-modal-store.mjs";import{useDeleteRequest as d}from"../../../hooks/query/use-query.mjs";import{useSetAuthFields as f,useUserId as p}from"../../../hooks/use-auth.mjs";import{LeftArrowIcon as m}from"../../../assets/icons/left-arrow-icon.mjs";import{authPanelBackgroundStyle as h}from"./auth-page-styles.mjs";import{toast as g}from"sonner";import{useCallback as _,useEffect as v,useMemo as y,useRef as b,useState as x}from"react";import{jsx as S,jsxs as C}from"react/jsx-runtime";import{useTranslations as w}from"next-intl";function T(e){let[t,n]=e.split(`@`);return!t||!n?e:`${t.slice(0,3)}***${t.length>3?t.slice(-1):``}@${n}`}function E(E){let D=w(`components.pages.login`),{email:O,onClose:k,onPassword:A}=E,{verifyStep:j,resolveLogin:M}=u(),[N,P]=x([,,,,,,].fill(``)),[F,I]=x(0),[L,R]=x(!1),[z,B]=x(60),[V,H]=x(!1),[U,W]=x(``),G=b(null),K=p(),q=f(),J=d(),Y=y(()=>T(O),[O]),X=_(async()=>{if(j===`reset-password`)return await a({user_id:K,email_code:N.join(``)});if(j===`forgot-password`)return await i({email:O,email_code:N.join(``)});if(j===`register-verify`){let t=await e(`guestUserId`);return await o({email:O,email_code:N.join(``),user_id:t})}throw Error(D(`verify.invalidCode`))},[j,N,K,O,D]),Z=y(()=>N.every(e=>e!==``)&&!L,[N,L]);v(()=>{if(z<=0)return;let e=setInterval(()=>{B(e=>e-1)},1e3);return()=>clearInterval(e)},[z]),v(()=>{G.current?.focus()},[]);let Q=_(e=>{let t=e.target.value.replace(/\D/g,``);if(t.length===0)return;let n=[...N],r=t.split(``),i=F;for(let e of r)i<6&&(n[i]=e,i++);P(n),I(Math.min(i,5)),W(``)},[N,F]),$=_(e=>{if(e.key===`Backspace`){e.preventDefault();let t=[...N];N[F]?t[F]=``:F>0&&(t[F-1]=``,I(F-1)),P(t),W(``)}else e.key===`ArrowLeft`&&F>0?I(F-1):e.key===`ArrowRight`&&F<5&&I(F+1)},[N,F]),ee=_(e=>{I(e),G.current?.focus()},[]);async function te(){if(!(z>0||V))try{H(!0),j===`reset-password`?await r({user_id:K}):await n({email:O}),B(60),W(``)}finally{H(!1)}}async function ne(){if(Z)try{R(!0);let e=await X();if(j===`register-verify`){let t=e?.data;if(t?.user_id){q({token:t.token??``,expireTime:t.expire_time??0,userId:t.user_id}),g.success(D(`index.loginSuccess`)),J([`user-profile`,`mine`]),M(!0);return}}A?.(O)}catch(e){W(e.message??D(`verify.invalidCode`))}finally{R(!1)}}return S(c,{className:`min-h-screen w-full h-full bg-bg1 text-text1 flex flex-col`,style:h,children:C(c,{className:`relative z-[1] mx-auto min-h-screen w-full max-w-[390px] px-[32px] pt-[calc(env(safe-area-inset-top)+136px)] pb-[calc(env(safe-area-inset-bottom)+40px)]`,children:[S(s,{type:`button`,variant:`ghost`,onClick:k,"aria-label":D(`verify.back`),className:`absolute top-[calc(env(safe-area-inset-top)+12px)] left-[16px] h-[32px] w-[32px] rounded-full border border-white/10 bg-white/5 !p-0 text-text2 backdrop-blur-[12px] hover:!bg-white/10 hover:text-text1`,children:S(m,{className:`h-[16px] w-[16px]`,"aria-hidden":`true`,focusable:`false`})}),C(c,{className:`w-full`,children:[S(c,{children:S(l,{className:`text-[28px] leading-[32px] font-medium text-text1`,children:D(`verify.title`)})}),C(c,{className:`mt-[6px]`,children:[S(l,{className:`ml-[4px] text-[14px] leading-[28px] text-white/60`,children:D(`verify.sentTo`)}),S(l,{className:`mt-[6px] text-[14px] leading-[28px] text-white/60`,children:Y})]}),C(`form`,{className:`mt-[44px]`,onSubmit:e=>{e.preventDefault(),ne()},children:[C(c,{className:`relative h-[50px]`,children:[S(`input`,{ref:G,type:`text`,inputMode:`numeric`,pattern:`[0-9]*`,value:``,onChange:Q,onKeyDown:$,className:`absolute inset-0 opacity-0 pointer-events-none h-full w-full border-none bg-transparent text-base outline-none`,autoComplete:`one-time-code`}),S(c,{className:`flex w-full items-center justify-between`,children:N.map((e,n)=>S(c,{onClick:()=>ee(n),className:t(`flex h-[50px] w-[50px] cursor-pointer items-center justify-center rounded-[8px] bg-white/10 transition-all duration-200`,U?`border-[0.5px] border-[var(--color-verification-error)]`:n===F?`ring-1 ring-white/25 bg-white/[0.14]`:``),children:S(l,{className:t(`select-none text-[28px] leading-none font-medium`,U?`text-[var(--color-verification-error)]`:`text-text1`),children:e})},n))})]}),!!U&&S(c,{className:`mt-[8px] text-[14px] leading-[24px] text-[var(--color-verification-error)]`,children:U}),S(s,{type:`submit`,disabled:!Z,className:`mt-[44px] h-[48px] w-full !rounded-[8px] !border-0 !px-0 !py-0 text-[16px] font-normal leading-[24px] text-white disabled:opacity-100 active:opacity-90 ${Z?``:`!text-white/60`}`,style:{background:Z?`var(--gradient-action-button)`:`linear-gradient(90deg, rgba(151, 86, 227, 0.45) 0%, rgba(108, 67, 238, 0.45) 100%)`},children:D(L?`verify.verifying`:`verify.nextStep`)}),S(s,{type:`button`,variant:`ghost`,onClick:te,disabled:z>0||V,className:`mt-[16px] flex w-full items-center justify-center bg-transparent !p-0 text-[15px] leading-[24px] text-[#9DA3AC] hover:bg-transparent hover:text-text1 disabled:cursor-not-allowed disabled:opacity-100`,children:z>0?D(`verify.resendCountdown`,{seconds:z}):D(`verify.resend`)})]})]})]})})}export{E as Verify};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetComments as n,gCommunityGetContentInfo as r,gCommunityGetContentList as i,gContentGetAppChannels as a}from"../../../service/generated/client.mjs";import{checkFollowStatus as o}from"../../../utils/follow-service.mjs";import{usePageLifecycle as s}from"../../../utils/tracking.mjs";import{EmptyState as c}from"../../ui/empty.mjs";import{useRequest as l}from"../../../hooks/query/use-query.mjs";import{useBrowseReport as u}from"../../../hooks/use-browse-report.mjs";import{queryKey as ee}from"../../../constants/query-key.mjs";import{useKeepAliveEffect as te,useKeepAliveState as d}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as f}from"../../../utils/api-collect.mjs";import{batchQueryContentInteractions as p}from"../../../hooks/use-content-operate.mjs";import ne from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{DetailFollowAction as re}from"../../biz/business/detail/shared/detail-follow-action.mjs";import{DetailOperate as ie}from"../../biz/business/detail/shared/detail-operate.mjs";import{PostRecommendList as m}from"../../biz/business/detail/shared/post-recommend-list.mjs";import{DetailHero as h}from"../../biz/business/detail/shared/video-hero.mjs";import g from"../../biz/business/comment/comment-list.mjs";import _ from"../../common/info-card/card-header.mjs";import ae from"../../common/info-card/card-text.mjs";import{useCallback as oe,useEffect as v,useMemo as y}from"react";import{Fragment as b,jsx as x,jsxs as S}from"react/jsx-runtime";import{useSearchParams as C}from"next/navigation";import{useTranslations as se}from"next-intl";function ce(e){if(!e||typeof e!=`object`||!e.content_id)return null;let t=Array.isArray(e.medias)?e.medias:[],n=t.filter(e=>e&&e.is_video===!1),r=t.filter(e=>e&&e.is_video===!0),i=n.map(e=>e.media_url).filter(e=>typeof e==`string`&&e.length>0),a=(Array.isArray(e.images)?e.images:[]).map(e=>typeof e==`string`?e:e&&typeof e==`object`&&(e.url||e.image_url||e.media_url)||``).filter(e=>typeof e==`string`&&e.length>0),o=i.length?i:a,s=r.map(e=>e.cover_image).find(e=>typeof e==`string`&&e.length>0),c=o[0]||``,l=e.cover_image||s||c||``,u=(Array.isArray(e.tags)?e.tags:[]).map(e=>{if(e&&typeof e==`object`){let t=e.id??e.name??``,n=e.name??e.id??``,r=e.group??``;return{id:String(t),name:String(n),group:String(r)}}return{id:String(e),name:String(e),group:``}}).filter(e=>!!(e.id||e.name));return{...t.length?{medias:t}:{},id:e.content_id,mid:e.content_id,name:e.title||``,cat_id:``,cat_name:``,status:String(e.status||`2`),status_text:``,create_time:e.create_time,show_at:e.create_time,position:``,img_type:``,img_x:l,img_y:l,img_width:``,img_height:``,preview_images:o,score:``,duration:``,is_more_link:`n`,update_status:`1`,description:e.content||``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:u,source_tags:u.map(e=>e.name).filter(Boolean).join(`,`),source_actor:[],links:[],money:``,up_user:e.user_id||e.author?.user_id||``,source_username:e.author?.nickname||e.author?.username||``,task_id:``,file_status:``,content_type:2,author:{...e.author,avatar:e.author.avatar_url},like:e.interaction?.is_liked||!1,dislike:e.interaction?.is_dislike||!1,collect:e.interaction?.is_collected||!1,is_followed:e.interaction?.is_followed||!1,static:{like_cnt:e.like_count||0,comment_cnt:e.comment_count||0,share_cnt:e.share_count||0,browse_cnt:e.view_count||0},info:{text:e.content||``,images:o}}}function le(e){let t=Array.isArray(e.medias)?e.medias:[],n=t.filter(e=>e&&e.is_video===!1).map(e=>e.media_url).filter(e=>typeof e==`string`&&e.length>0),r=(Array.isArray(e.images)?e.images:[]).map(e=>typeof e==`string`?e:e&&typeof e==`object`&&(e.url||e.image_url||e.media_url)||``).filter(e=>typeof e==`string`&&e.length>0),i=n.length?n:r,a=t.filter(e=>e&&e.is_video===!0).map(e=>e.cover_image).find(e=>typeof e==`string`&&e.length>0),o=e.cover_image||a||i[0]||``,s=(Array.isArray(e.tags)?e.tags:[]).map(e=>{if(e&&typeof e==`object`){let t=e.id??e.name??``,n=e.name??e.id??``,r=e.group??``;return{id:String(t),name:String(n),group:String(r)}}return{id:String(e),name:String(e),group:``}}).filter(e=>!!(e.id||e.name)),c=t.length?t:i.filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}));return{...c.length?{medias:c}:{},id:e.content_id||``,mid:e.content_id||``,name:e.title||``,cat_id:``,cat_name:``,status:String(e.status||`2`),status_text:``,create_time:e.create_time,show_at:e.create_time,position:``,img_type:``,img_x:o,img_y:o,img_width:``,img_height:``,preview_images:i,score:``,duration:``,is_more_link:`n`,update_status:`1`,description:e.content||``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:s,source_tags:s.map(e=>e.name).filter(Boolean).join(`,`),source_actor:[],links:[],money:``,up_user:e.user_id||e.author?.user_id||``,source_username:e.author?.nickname||e.author?.username||``,task_id:``,file_status:``,content_type:2,author:{...e.author,avatar:e.author.avatar_url},like:e.interaction?.is_liked||!1,dislike:e.interaction?.is_dislike||!1,collect:e.interaction?.is_collected||!1,is_followed:e.interaction?.is_followed||!1,statics_cnt:{like_cnt:String(e.like_count||0),dislike_cnt:String(e.dislike_count||0),comment_cnt:String(e.comment_count||0),share_cnt:String(e.share_count||0),browse_cnt:String(e.view_count||0),collect_cnt:String(e.collect_count||0)}}}function w({detailId:f,initialInformation:w,initialRecommendList:ue,initialCommentList:T,initialCommentTotal:E,initialCommentHasMore:D}){let O=se(`components.pages.postDetail`),k=C(),{isLogin:A,userInfo:de,userId:fe}=t(),j=fe||de?.userId||``;s(`page_post_detail`,`详情页`),u({contentId:f,contentType:2,enabled:!!f,enableIntervalReport:!1,enableExitReport:!1});let{data:M}=l(y(()=>[`post-detail`,f],[f]),async()=>f?await r({content_id:f}):null,{enabled:!!f}),N=y(()=>{let e=M?.data?.data;return ce(e)},[M?.data?.data]),pe=w??N??null,{data:P}=l(y(()=>[`post-detail-recommend`,f],[f]),async()=>f?await i({page:1,page_size:6,sort_by:`recommend`}):null,{enabled:!!f}),F=y(()=>(P?.data?.data?.contents??[]).filter(e=>e.content_id!==f).slice(0,4).map(e=>le(e)),[f,P?.data?.data?.contents]),I=ue??F??[],[L,R]=d(`detail-information-${f}`,pe),[z,B]=d(`detail-recommend-${f}`,I),[V,H]=d(`info-detail-comment-add-count-${f}`,0),U=y(()=>L?.content_type===0,[L?.content_type]),W=y(()=>[`post-detail-comments`,f,1,5],[5,f]),{data:G}=l(W,async()=>f?await n({content_id:f,page:1,page_size:5,sort_by:`latest`}):null,{enabled:!!f}),me=y(()=>{if(T?.length)return T;let e=G?.data?.data?.comments??[];if(e.length>0)return e},[G?.data?.data?.comments,T]),K=y(()=>{if(typeof E==`number`)return E;if(G?.data?.data)return typeof G?.data?.data?.total==`number`?G.data.data.total:void 0},[G?.data?.data,E]),he=y(()=>{if(typeof D==`boolean`)return D;if(G?.data?.data)return G?.data?.data?.has_more??!1},[G?.data?.data,D]),[q,J]=d(`post-detail-comment-total-${f}`,typeof E==`number`?E:void 0);v(()=>{typeof K==`number`&&J(e=>typeof e==`number`?Math.max(e,K):K)},[K,J]);let ge=y(()=>[`detail-interaction`,L?.id,L?.content_type],[L?.content_type,L?.id]),Y=L?.up_user||``,_e=!!(j&&Y&&j===Y),ve=y(()=>[`detail-follow-status`,j,Y],[j,Y]),{data:X}=l(ge,async()=>!L?.id||typeof L.content_type!=`number`?null:await p([L.id],2),{enabled:!!L?.id}),{data:Z}=l(ve,async()=>!j||!Y?null:await o({app_id:0,follower_id:j,followee_ids:[Y]}),{enabled:!!A&&!!j&&!!Y&&!_e});v(()=>{!L&&N&&R(N)},[L,N,R]),v(()=>{z.length===0&&F.length>0&&B(F)},[z.length,F,B]),v(()=>{if(!X?.interaction_list?.[0])return;let e=X.interaction_list[0];R(t=>{if(!t)return t;let n=t.static?.like_cnt,r=typeof n==`number`?n:Number(n||0),i=!!e.is_liked&&r===0;return{...t,like:e.is_liked||!1,dislike:e.is_disliked||!1,collect:e.is_collected||!1,static:i?{...t.static||{},like_cnt:1}:t.static}})},[X,R]),v(()=>{if(!Z?.data||!Y)return;let e=!!Z.data?.is_following_map?.[Y];R(t=>!t||t.is_followed===e?t:{...t,is_followed:e})},[Z?.data,Y,R]);let Q=oe(e=>{R(t=>t&&{...t,...e})},[R]);te(()=>{L?.id&&L.id},[L?.id],`detail-page-report-${f}`),v(()=>{!L||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:L.id||f,author_id:L.up_user,object_type:L.content_type,object_category:L.content_type,object_tags:L.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[f,L]),v(()=>{H(0)},[L?.id,H]);let ye=y(()=>(typeof q==`number`?q:typeof K==`number`?K:0)+V,[V,q,K]);v(()=>{k?.get(`tab`)===`comment`&&(typeof window>`u`||window.requestAnimationFrame(()=>{document.getElementById(`detail-comments`)?.scrollIntoView({behavior:`smooth`,block:`start`})}))},[L?.id,k]);let $=L?.status===`2`,{data:be}=l([ee.CHANNEL],()=>a());return S(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 pt-11`,children:[x(`div`,{className:`fixed top-0 left-0 right-0 z-40`,children:x(ne,{data:{list:e(be?.data)}})}),x(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:S(b,{children:[L&&!$&&x(c,{type:`no-content`,text:O(`postDetailClient.postOffline`)}),L&&$&&S(b,{children:[U&&x(h,{information:L,isVideo:!0}),S(`article`,{className:`w-full`,children:[x(_,{infoData:L,rightChild:x(re,{information:L,onUpdate:Q})}),x(ae,{infoData:L,isEllipsis:!1}),!U&&x(`div`,{className:`mt-[12px]`,children:x(h,{information:L,isVideo:!1})})]}),x(ie,{information:L,onUpdate:Q}),S(`div`,{id:`detail-comments`,className:`w-full border-t-[8px] border-bg2 mt-[12px]`,children:[S(`div`,{className:`w-full px-[16px] h-[40px] flex items-center justify-between border-b-[1px] border-line1`,children:[x(`p`,{className:`text-[16px] text-text1 font-bold`,children:O(`postDetailClient.comment`)}),S(`p`,{className:`text-[12px] text-text3`,children:[ye,O(`postDetailClient.reactions`)]})]}),x(g,{listQueryKey:W,contentId:L.id,information:L,isShow:!1,isClickLoad:!0,initialComments:me,initialTotal:K,initialHasMore:he,addCommentCount:()=>{H(e=>e+1)},onTotalChange:e=>{J(t=>typeof t==`number`?Math.max(t,e):e)}})]}),z.length>0&&x(m,{information:L,initRecommendList:z})]}),!L&&x(c,{type:`no-content`,text:O(`postDetailClient.postDeleted`)})]})})]})}export{w as default};
|
|
2
|
+
"use client";import{getChannelList as e}from"../../biz/utils/helpers/get-channel-list.mjs";import{useUserStore as t}from"../../../store/modules/user-store.mjs";import{gCommunityGetComments as n,gCommunityGetContentInfo as r,gCommunityGetContentList as i,gContentGetAppChannels as a}from"../../../service/generated/client.mjs";import{checkFollowStatus as o}from"../../../utils/follow-service.mjs";import{usePageLifecycle as s}from"../../../utils/tracking.mjs";import{EmptyState as c}from"../../ui/empty.mjs";import{useRequest as l}from"../../../hooks/query/use-query.mjs";import{useBrowseReport as u}from"../../../hooks/use-browse-report.mjs";import{queryKey as ee}from"../../../constants/query-key.mjs";import{useKeepAliveEffect as te,useKeepAliveState as d}from"../../common/keep-scroll-position/index.mjs";import{apiCollectClick as f}from"../../../utils/api-collect.mjs";import{batchQueryContentInteractions as p}from"../../../hooks/use-content-operate.mjs";import ne from"../../biz/business/search-bar/variants/detail-search-bar/index.mjs";import{DetailFollowAction as re}from"../../biz/business/detail/shared/detail-follow-action.mjs";import{DetailOperate as ie}from"../../biz/business/detail/shared/detail-operate.mjs";import{PostRecommendList as m}from"../../biz/business/detail/shared/post-recommend-list.mjs";import{DetailHero as h}from"../../biz/business/detail/shared/video-hero.mjs";import g from"../../biz/business/comment/comment-list.mjs";import _ from"../../common/info-card/card-header.mjs";import ae from"../../common/info-card/card-text.mjs";import{useCallback as oe,useEffect as v,useMemo as y}from"react";import{useSearchParams as b}from"next/navigation";import{Fragment as x,jsx as S,jsxs as C}from"react/jsx-runtime";import{useTranslations as se}from"next-intl";function w(e){if(!e||typeof e!=`object`||!e.content_id)return null;let t=Array.isArray(e.medias)?e.medias:[],n=t.filter(e=>e&&e.is_video===!1),r=t.filter(e=>e&&e.is_video===!0),i=n.map(e=>e.media_url).filter(e=>typeof e==`string`&&e.length>0),a=(Array.isArray(e.images)?e.images:[]).map(e=>typeof e==`string`?e:e&&typeof e==`object`&&(e.url||e.image_url||e.media_url)||``).filter(e=>typeof e==`string`&&e.length>0),o=i.length?i:a,s=r.map(e=>e.cover_image).find(e=>typeof e==`string`&&e.length>0),c=o[0]||``,l=e.cover_image||s||c||``,u=(Array.isArray(e.tags)?e.tags:[]).map(e=>{if(e&&typeof e==`object`){let t=e.id??e.name??``,n=e.name??e.id??``,r=e.group??``;return{id:String(t),name:String(n),group:String(r)}}return{id:String(e),name:String(e),group:``}}).filter(e=>!!(e.id||e.name));return{...t.length?{medias:t}:{},id:e.content_id,mid:e.content_id,name:e.title||``,cat_id:``,cat_name:``,status:String(e.status||`2`),status_text:``,create_time:e.create_time,show_at:e.create_time,position:``,img_type:``,img_x:l,img_y:l,img_width:``,img_height:``,preview_images:o,score:``,duration:``,is_more_link:`n`,update_status:`1`,description:e.content||``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:u,source_tags:u.map(e=>e.name).filter(Boolean).join(`,`),source_actor:[],links:[],money:``,up_user:e.user_id||e.author?.user_id||``,source_username:e.author?.nickname||e.author?.username||``,task_id:``,file_status:``,content_type:2,author:{...e.author,avatar:e.author.avatar_url},like:e.interaction?.is_liked||!1,dislike:e.interaction?.is_dislike||!1,collect:e.interaction?.is_collected||!1,is_followed:e.interaction?.is_followed||!1,static:{like_cnt:e.like_count||0,comment_cnt:e.comment_count||0,share_cnt:e.share_count||0,browse_cnt:e.view_count||0},info:{text:e.content||``,images:o}}}function ce(e){let t=Array.isArray(e.medias)?e.medias:[],n=t.filter(e=>e&&e.is_video===!1).map(e=>e.media_url).filter(e=>typeof e==`string`&&e.length>0),r=(Array.isArray(e.images)?e.images:[]).map(e=>typeof e==`string`?e:e&&typeof e==`object`&&(e.url||e.image_url||e.media_url)||``).filter(e=>typeof e==`string`&&e.length>0),i=n.length?n:r,a=t.filter(e=>e&&e.is_video===!0).map(e=>e.cover_image).find(e=>typeof e==`string`&&e.length>0),o=e.cover_image||a||i[0]||``,s=(Array.isArray(e.tags)?e.tags:[]).map(e=>{if(e&&typeof e==`object`){let t=e.id??e.name??``,n=e.name??e.id??``,r=e.group??``;return{id:String(t),name:String(n),group:String(r)}}return{id:String(e),name:String(e),group:``}}).filter(e=>!!(e.id||e.name)),c=t.length?t:i.filter(Boolean).map(e=>({media_url:e,is_video:!1,cover_image:``}));return{...c.length?{medias:c}:{},id:e.content_id||``,mid:e.content_id||``,name:e.title||``,cat_id:``,cat_name:``,status:String(e.status||`2`),status_text:``,create_time:e.create_time,show_at:e.create_time,position:``,img_type:``,img_x:o,img_y:o,img_width:``,img_height:``,preview_images:i,score:``,duration:``,is_more_link:`n`,update_status:`1`,description:e.content||``,language:``,director:``,actor:``,area:``,issue_date:``,publisher:``,series:``,number:``,tags:s,source_tags:s.map(e=>e.name).filter(Boolean).join(`,`),source_actor:[],links:[],money:``,up_user:e.user_id||e.author?.user_id||``,source_username:e.author?.nickname||e.author?.username||``,task_id:``,file_status:``,content_type:2,author:{...e.author,avatar:e.author.avatar_url},like:e.interaction?.is_liked||!1,dislike:e.interaction?.is_dislike||!1,collect:e.interaction?.is_collected||!1,is_followed:e.interaction?.is_followed||!1,statics_cnt:{like_cnt:String(e.like_count||0),dislike_cnt:String(e.dislike_count||0),comment_cnt:String(e.comment_count||0),share_cnt:String(e.share_count||0),browse_cnt:String(e.view_count||0),collect_cnt:String(e.collect_count||0)}}}function T({detailId:f,initialInformation:T,initialRecommendList:le,initialCommentList:E,initialCommentTotal:D,initialCommentHasMore:O}){let k=se(`components.pages.postDetail`),A=b(),{isLogin:ue,userInfo:de,userId:fe}=t(),j=fe||de?.userId||``;s(`page_post_detail`,`详情页`),u({contentId:f,contentType:2,enabled:!!f,enableIntervalReport:!1,enableExitReport:!1});let{data:M}=l(y(()=>[`post-detail`,f],[f]),async()=>f?await r({content_id:f}):null,{enabled:!!f}),N=y(()=>{let e=M?.data?.data;return w(e)},[M?.data?.data]),pe=T??N??null,{data:P}=l(y(()=>[`post-detail-recommend`,f],[f]),async()=>f?await i({page:1,page_size:6,sort_by:`recommend`}):null,{enabled:!!f}),F=y(()=>(P?.data?.data?.contents??[]).filter(e=>e.content_id!==f).slice(0,4).map(e=>ce(e)),[f,P?.data?.data?.contents]),I=le??F??[],[L,R]=d(`detail-information-${f}`,pe),[z,B]=d(`detail-recommend-${f}`,I),[V,H]=d(`info-detail-comment-add-count-${f}`,0),U=y(()=>L?.content_type===0,[L?.content_type]),W=y(()=>[`post-detail-comments`,f,1,5],[5,f]),{data:G}=l(W,async()=>f?await n({content_id:f,page:1,page_size:5,sort_by:`latest`}):null,{enabled:!!f}),me=y(()=>{if(E?.length)return E;let e=G?.data?.data?.comments??[];if(e.length>0)return e},[G?.data?.data?.comments,E]),K=y(()=>{if(typeof D==`number`)return D;if(G?.data?.data)return typeof G?.data?.data?.total==`number`?G.data.data.total:void 0},[G?.data?.data,D]),he=y(()=>{if(typeof O==`boolean`)return O;if(G?.data?.data)return G?.data?.data?.has_more??!1},[G?.data?.data,O]),[q,J]=d(`post-detail-comment-total-${f}`,typeof D==`number`?D:void 0);v(()=>{typeof K==`number`&&J(e=>typeof e==`number`?Math.max(e,K):K)},[K,J]);let ge=y(()=>[`detail-interaction`,L?.id,L?.content_type],[L?.content_type,L?.id]),Y=L?.up_user||``,_e=!!(j&&Y&&j===Y),ve=y(()=>[`detail-follow-status`,j,Y],[j,Y]),{data:X}=l(ge,async()=>!L?.id||typeof L.content_type!=`number`?null:await p([L.id],2),{enabled:!!L?.id}),{data:Z}=l(ve,async()=>!j||!Y?null:await o({app_id:0,follower_id:j,followee_ids:[Y]}),{enabled:!!ue&&!!j&&!!Y&&!_e});v(()=>{!L&&N&&R(N)},[L,N,R]),v(()=>{z.length===0&&F.length>0&&B(F)},[z.length,F,B]),v(()=>{if(!X?.interaction_list?.[0])return;let e=X.interaction_list[0];R(t=>{if(!t)return t;let n=t.static?.like_cnt,r=typeof n==`number`?n:Number(n||0),i=!!e.is_liked&&r===0;return{...t,like:e.is_liked||!1,dislike:e.is_disliked||!1,collect:e.is_collected||!1,static:i?{...t.static||{},like_cnt:1}:t.static}})},[X,R]),v(()=>{if(!Z?.data||!Y)return;let e=!!Z.data?.is_following_map?.[Y];R(t=>!t||t.is_followed===e?t:{...t,is_followed:e})},[Z?.data,Y,R]);let Q=oe(e=>{R(t=>t&&{...t,...e})},[R]);te(()=>{L?.id&&L.id},[L?.id],`detail-page-report-${f}`),v(()=>{!L||typeof window>`u`||window.sensors?.track?.(`detail_page_view`,{object_id:L.id||f,author_id:L.up_user,object_type:L.content_type,object_category:L.content_type,object_tags:L.tags?.map(e=>e.name),block_id:``,page_source:window.location?.pathname||``})},[f,L]),v(()=>{H(0)},[L?.id,H]);let ye=y(()=>(typeof q==`number`?q:typeof K==`number`?K:0)+V,[V,q,K]);v(()=>{A?.get(`tab`)===`comment`&&(typeof window>`u`||window.requestAnimationFrame(()=>{document.getElementById(`detail-comments`)?.scrollIntoView({behavior:`smooth`,block:`start`})}))},[L?.id,A]);let $=L?.status===`2`,{data:be}=l([ee.CHANNEL],()=>a());return C(`div`,{className:`w-full min-h-screen bg-bg2 text-text1 pt-11`,children:[S(`div`,{className:`fixed top-0 left-0 right-0 z-40`,children:S(ne,{data:{list:e(be?.data)}})}),S(`div`,{className:`mx-auto w-full max-w-[840px] pb-6`,children:C(x,{children:[L&&!$&&S(c,{type:`no-content`,text:k(`postDetailClient.postOffline`)}),L&&$&&C(x,{children:[U&&S(h,{information:L,isVideo:!0}),C(`article`,{className:`w-full`,children:[S(_,{infoData:L,rightChild:S(re,{information:L,onUpdate:Q})}),S(ae,{infoData:L,isEllipsis:!1}),!U&&S(`div`,{className:`mt-[12px]`,children:S(h,{information:L,isVideo:!1})})]}),S(ie,{information:L,onUpdate:Q}),C(`div`,{id:`detail-comments`,className:`w-full border-t-[8px] border-bg2 mt-[12px]`,children:[C(`div`,{className:`w-full px-[16px] h-[40px] flex items-center justify-between border-b-[1px] border-line1`,children:[S(`p`,{className:`text-[16px] text-text1 font-bold`,children:k(`postDetailClient.comment`)}),C(`p`,{className:`text-[12px] text-text3`,children:[ye,k(`postDetailClient.reactions`)]})]}),S(g,{listQueryKey:W,contentId:L.id,information:L,isShow:!1,isClickLoad:!0,initialComments:me,initialTotal:K,initialHasMore:he,addCommentCount:()=>{H(e=>e+1)},onTotalChange:e=>{J(t=>typeof t==`number`?Math.max(t,e):e)}})]}),z.length>0&&S(m,{information:L,initRecommendList:z})]}),!L&&S(c,{type:`no-content`,text:k(`postDetailClient.postDeleted`)})]})})]})}export{T as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{useRouter as e}from"../../../../utils/use-compatible-router.mjs";import{Button as t}from"../../../ui/button.mjs";import{Box as n}from"../../../ui/box.mjs";import r from"../../../../assets/icons/close.mjs";import{jsx as i,jsxs as a}from"react/jsx-runtime";import{useTranslations as o}from"next-intl";function s({onPublish:s,isEmpty:c}){let l=o(`components.pages.publish.components`),u=e();return a(n,{className:`flex h-[60px] w-full items-center justify-between px-[16px]`,children:[i(t,{type:`button`,className:`p-3 text-text1 bg-transparent`,onClick:()=>u.back(),children:i(r,{className:`h-[16px] w-[16px]`})}),i(t,{className:`h-[32px] rounded-[8px] bg-linear-to-r from-[#FD4C5E] to-[#F05D19] px-[12px] text-[16px] text-white font-normal`,disabled:c,onClick:s,children:l(`header.publish`)})]})}export{s as PublishHeader};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{MAX_MATERIAL_COUNT as e}from"../constants.mjs";import{createFileInput as t,processCoverFile as n,processMaterialFile as r,processVideoFile as i}from"../utils/file-upload.mjs";import{
|
|
2
|
+
"use client";import{MAX_MATERIAL_COUNT as e}from"../constants.mjs";import{createFileInput as t,processCoverFile as n,processMaterialFile as r,processVideoFile as i}from"../utils/file-upload.mjs";import{toast as a}from"sonner";import{useCallback as o}from"react";function s(s){let{onProgressUpdate:c}=s;return{selectFile:o(async(o,s)=>await new Promise(l=>{let u=t(o);u.onchange=async t=>{let d=t.target.files;if(!d||d.length===0){l(null);return}try{if(o===`material`){let t=Math.max(0,s?.maxMaterialCount??e);if(t<=0){a.error(`最多上传 9 个素材`),l(null);return}let n=Array.from(d),i=n.length>t?n.slice(0,t):n;n.length>t&&a.error(`本次最多只能选择 ${t} 个素材,已自动忽略超出的 ${n.length-t} 个`);let o=[],u=[],f=0,p=0,m=0,h=i.length;for(let e of i)e&&(m+=e.type.includes(`video`)?2:1);c?.(0,h,0,m);for(let e=0;e<i.length;e++){let t=i[e];if(!t)continue;let n=t.type.includes(`video`)?2:1,a=!1,s=await r(t,e,(e,t)=>{let n=f+e;e>=t&&!a&&(a=!0,p+=1),c?.(p,h,n,m)});s.success&&s.data?(o.push(s.data),f+=n,a||(p+=1,c?.(p,h,f,m))):s.error&&(u.push(s.error),f+=n,a||(p+=1,c?.(p,h,f,m)))}l({type:`material`,items:o,errors:u});return}if(o===`video`){let e=``,t=``,n=``,r=``,a=0,o=0,s=d[0];if(!s){l(null);return}c?.(0,1,0,2);let u=!1;if(!(await i(s,{setResolution:e=>n=e,setVideoDuration:e=>a=e,setVideoSize:e=>o=e,setVideoUrl:t=>e=t,setCoverUrl:e=>t=e,setCoverImageResolution:e=>r=e},(e,t)=>{e>=t&&!u?(u=!0,c?.(1,1,e,2)):c?.(0,1,e,2)})).success){l(null);return}l({type:`video`,videoUrl:e,coverUrl:t,resolution:n,coverImageResolution:r,videoDuration:a,videoSize:o});return}let t=``,u=``,f=d[0];if(!f){l(null);return}c?.(0,1,0,1);let p=!1;if(!(await n(f,{setCoverUrl:e=>t=e,setCoverImageResolution:e=>u=e},(e,t)=>{e>=t&&!p?(p=!0,c?.(1,1,e,1)):c?.(0,1,e,1)})).success){l(null);return}l({type:`cover`,coverUrl:t,coverImageResolution:u})}catch(e){console.error(`上传失败`,e),a.error(`上传失败,请稍后重试`),l(null)}finally{c?.(0,0,0,0),u.remove()}},document.body.appendChild(u),u.click()}),[c])}}export{s as useFileUpload};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{
|
|
2
|
+
"use client";import{getAtUserElement as e}from"../../../utils/common.mjs";import{cn as t}from"../../../utils/cn.mjs";import n from"../../../utils/event-bus.mjs";import{pCommunityPublishContent as r}from"../../../service/generated/client.mjs";import{usePageLifecycle as i}from"../../../utils/tracking.mjs";import{useRouter as ee}from"../../../utils/use-compatible-router.mjs";import{AlertDialog as te,AlertDialogAction as ne,AlertDialogCancel as re,AlertDialogContent as ie,AlertDialogDescription as ae,AlertDialogFooter as oe,AlertDialogHeader as se,AlertDialogTitle as ce}from"../../ui/alert-dialog.mjs";import{Box as le}from"../../ui/box.mjs";import{useKeyboardOpen as ue}from"../../../hooks/use-keyboard-open.mjs";import{eventKey as a}from"../../../constants/event-key.mjs";import{useMediaPreview as o}from"../../common/media-preview/index.mjs";import s from"../../ui/popup.mjs";import{UploadProgress as c}from"./components/upload-progress.mjs";import{ContactList as l}from"../../biz/business/contact/contact-list.mjs";import{Collection as u}from"./components/collection.mjs";import{MAX_MATERIAL_COUNT as d}from"./constants.mjs";import{filterAtUserNames as f}from"./utils/publish-utils.mjs";import{PublishEditor as p}from"./components/editor.mjs";import{PublishHeader as de}from"./components/header.mjs";import{MaterialGrid as fe}from"./components/material-grid.mjs";import{Toolbar as pe}from"./components/toolbar.mjs";import{useFileUpload as me}from"./hooks/use-file-upload.mjs";import{toast as m}from"sonner";import{useCallback as h,useEffect as he,useMemo as ge,useRef as g,useState as _}from"react";import{jsx as v,jsxs as y}from"react/jsx-runtime";import{useTranslations as _e}from"next-intl";function b({className:b}={}){let x=_e(`components.pages.publish`);i(`page_publish`,`发布`);let ve=ee(),S=g(null),[ye,C]=_(!1),[w,T]=_(`0`),{isOpen:E}=ue(),[D,O]=_(null),[k,A]=_([]),[j,M]=_(``),[N,P]=_(``),[be,F]=_(``),[I,L]=_(0),[xe,R]=_(``),[Se,z]=_(``),[Ce,B]=_(0),[V,H]=_(``),[U,W]=_([]),[we,G]=_(!1),[Te,K]=_(!1),[Ee,De]=_(``),q=g(null);he(()=>()=>{n.emit(a.WAIT_LOADING_SHOW,{show:!1})},[]);let J=h(e=>(De(e),K(!0),new Promise(e=>{q.current=e})),[]),{selectFile:Y}=me({onProgressUpdate:(e,t,n,r)=>{O(r>0?{currentFiles:e,totalFiles:t,currentTasks:n,totalTasks:r}:null)}}),X=h(async()=>{if(j){if(!await J(x(`pageClient.switchToPostConfirm`)))return;M(``),P(``),F(``),L(0),B(0),R(``),z(``)}if(k.length>=d){m.error(x(`pageClient.maxMaterialCount`));return}let e=await Y(`material`,{maxMaterialCount:d-k.length});!e||e.type!==`material`||(e.errors.length>0&&m.error(e.errors.length===1?e.errors[0]:x(`pageClient.uploadFailedCount`,{count:e.errors.length})),e.items.length>0&&A(t=>[...t,...e.items].slice(0,d)))},[J,k.length,Y,z,P,F,A,R,L,B,M,x,j]),Oe=h(async()=>{if(k.length>0){if(!await J(x(`pageClient.switchToVideoConfirm`)))return;A([])}let e=await Y(`video`);!e||e.type!==`video`||(M(e.videoUrl),P(e.coverUrl),F(e.coverUrl),R(e.resolution),z(e.coverImageResolution),L(e.videoDuration),B(e.videoSize))},[J,k.length,Y,z,P,F,A,R,L,B,M,x]);function ke(e){C(e)}function Ae(){C(!1)}let Z=ge(()=>(V.trim()===``||V.trim()===`<br>`)&&k.length===0&&!j,[V,k.length,j]),Q=o(),$=h(()=>{Q.open(k.map(e=>({src:e.media_url,type:e.is_video?`video`:`image`,cover:e.cover_image})))},[k,Q]),je=h(e=>{A(t=>t.filter((t,n)=>n!==e))},[A]),Me=h(()=>{M(``),P(``),F(``),L(0),B(0),R(``),z(``)},[P,F,z,R,L,B,M]),Ne=h(async()=>{let e=await Y(`cover`);!e||e.type!==`cover`||(P(e.coverUrl),z(e.coverImageResolution))},[Y,z,P]),Pe=h(t=>{C(!1),W(e=>[...e,t]),S.current?.restoreSelection();let n=`${e(t)} `;S.current?.insertHtml(n)},[W]),Fe=h(()=>{S.current?.saveSelection(),C(!0)},[]);return y(le,{className:t(`relative min-h-screen max-w-full bg-bg2 overflow-hidden flex flex-col`,b),children:[v(de,{onPublish:async()=>{if(!we){G(!0);try{if(Z){m.error(x(`pageClient.editContentFirst`));return}let e=V;if(e=e.replace(/<br>/g,``),!e&&k.length===0&&!j){m.error(x(`pageClient.editContentFirst`));return}let t=f(e,U),n={content:e,mentioned_users:t,collection_ids:w===`0`?[]:[w]};k.length>0?(n.medias=k.map(e=>(delete e.index,e)),n.type=1):j?(n.medias=[{media_url:j,is_video:!0,cover_image:N,video_resolution:xe,cover_image_resolution:Se,video_duration:I,video_size:Ce}],n.type=2):n.type=3,await r(n),m.success(x(`pageClient.publishSuccess`)),A([]),M(``),P(``),F(``),L(0),B(0),R(``),z(``),H(``),W([]),T(`0`),ve.back()}catch(e){console.error(e),m.error(x(`pageClient.publishFailed`))}finally{G(!1)}}},isEmpty:Z}),v(p,{ref:S,content:V,onContentChange:H,atUsers:U,onAtUsersChange:W}),D&&v(c,{currentFiles:D.currentFiles,totalFiles:D.totalFiles,currentTasks:D.currentTasks,totalTasks:D.totalTasks}),(k.length>0||j)&&v(fe,{materialList:k,videoUrl:j,videoDuration:I,coverUrl:N,originCoverUrl:be,isKeyboardOpen:E,onMaterialDelete:je,onVideoDelete:Me,onMaterialAdd:X,onCoverClick:Ne,onPreview:$}),v(pe,{isKeyboardOpen:E,onMaterialClick:()=>void X(),onVideoClick:()=>void Oe(),onAtUserClick:Fe}),v(u,{active:w,setActive:T}),v(te,{open:Te,onOpenChange:e=>{K(e),e||(q.current?.(!1),q.current=null)},children:y(ie,{children:[y(se,{children:[v(ce,{children:x(`pageClient.title`)}),v(ae,{children:Ee})]}),y(oe,{children:[v(re,{onClick:()=>{K(!1),q.current?.(!1),q.current=null},children:x(`pageClient.cancel`)}),v(ne,{onClick:()=>{K(!1),q.current?.(!0),q.current=null},children:x(`pageClient.resume`)})]})]})}),v(s,{open:ye,onOpenChange:ke,showCloseButton:!1,className:`w-full rounded-[8px] bg-bg2`,children:v(l,{onSelect:Pe,onClose:Ae})})]})}export{b as PublishPageClient};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as r}from"../../../service/generated/client.mjs";import{usePageLifecycle as i}from"../../../utils/tracking.mjs";import{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{Box as o}from"../../ui/box.mjs";import{Popover as s,PopoverContent as c,PopoverTrigger as l}from"../../ui/popover.mjs";import{useRequest as u}from"../../../hooks/query/use-query.mjs";import{eventKey as d}from"../../../constants/event-key.mjs";import{useSearchHistory as ee}from"../../../hooks/use-search-history.mjs";import{SearchHistoryClient as f}from"../../biz/business/search-history/client.mjs";import p from"../../../assets/icons/search/filter.mjs";import{trackSearchResultPageView as te}from"../search-result/tracking.mjs";import{trackSearchPageView as m,trackSearchTextRecommendClick as h}from"./tracking.mjs";import g from"./hot-recommend.mjs";import _ from"./hot-search.mjs";import{SEARCH_RESULT_SORT_OPTIONS as v}from"./search-result/shared.mjs";import y from"./search-result/index.mjs";import b from"./top-header.mjs";import{memo as x,useEffect as S,useMemo as C,useRef as w,useState as T}from"react";import{
|
|
2
|
+
"use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{gContentGetRecommendSearchList as r}from"../../../service/generated/client.mjs";import{usePageLifecycle as i}from"../../../utils/tracking.mjs";import{useRouter as a}from"../../../utils/use-compatible-router.mjs";import{Box as o}from"../../ui/box.mjs";import{Popover as s,PopoverContent as c,PopoverTrigger as l}from"../../ui/popover.mjs";import{useRequest as u}from"../../../hooks/query/use-query.mjs";import{eventKey as d}from"../../../constants/event-key.mjs";import{useSearchHistory as ee}from"../../../hooks/use-search-history.mjs";import{SearchHistoryClient as f}from"../../biz/business/search-history/client.mjs";import p from"../../../assets/icons/search/filter.mjs";import{trackSearchResultPageView as te}from"../search-result/tracking.mjs";import{trackSearchPageView as m,trackSearchTextRecommendClick as h}from"./tracking.mjs";import g from"./hot-recommend.mjs";import _ from"./hot-search.mjs";import{SEARCH_RESULT_SORT_OPTIONS as v}from"./search-result/shared.mjs";import y from"./search-result/index.mjs";import b from"./top-header.mjs";import{memo as x,useEffect as S,useMemo as C,useRef as w,useState as T}from"react";import{usePathname as E,useSearchParams as D}from"next/navigation";import{jsx as O,jsxs as k}from"react/jsx-runtime";import{useTranslations as A}from"next-intl";const j=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.user`,value:`user`}],M=x(({searchType:e,sort:t,tabList:n,onChange:r,onSortChange:i})=>{let[a,u]=T(!1);return k(o,{as:`nav`,className:`sticky top-[66px] z-40 flex items-center justify-between bg-[linear-gradient(180deg,rgba(6,3,21,0.98)_0%,rgba(6,3,21,0.88)_100%)] px-[16px] pb-[24px] pt-[23px] backdrop-blur-[16px]`,children:[O(o,{className:`flex items-center gap-[10px]`,children:n.map(t=>O(`button`,{type:`button`,className:`text-[16px] leading-[22px] transition-colors ${e===t.value?`font-medium text-white`:`font-normal text-white/80`}`,onClick:()=>{e!==t.value&&r(t.value)},children:t.label},t.value))}),k(s,{open:a,onOpenChange:u,children:[O(l,{"aria-label":`排序筛选`,className:`flex size-[24px] items-center justify-center text-white/70`,children:O(p,{className:`size-[20px]`})}),O(c,{side:`bottom`,align:`end`,sideOffset:8,className:`w-[132px] border border-white/10 bg-[#10071E]/95 p-[8px] backdrop-blur-[18px]`,children:O(o,{className:`flex flex-col gap-[4px]`,children:v.map(e=>O(`button`,{type:`button`,className:`rounded-[8px] px-[12px] py-[8px] text-left text-[14px] leading-[20px] ${e.value===t?`bg-white/10 text-white`:`text-white/70`}`,onClick:()=>{i(e.value),u(!1)},children:e.label},e.value))})})]})]})});M.displayName=`SearchResultTabs`;function N(){let s=A(`components.pages.search.pageClient`);i(`page_search`,`搜索`);let{userInfo:c}=n(),l=c?.user_id||`guest`,p=D(),x=E(),N=a(),P=p.get(`q`)?.toString()||``,{data:F,refetch:ne}=u([`hotSearchKey`],()=>r({user_id:l})),I=C(()=>F?.data?.recommend_list??[],[F]),[L,R]=T(P),[z,B]=T(P),[V,H]=T(0),[U,W]=T(j[0].value),[G,K]=T(v[0].value),[q,J]=T(0),{history:Y,addHistory:X}=ee({storageKey:l}),re=C(()=>j.map(e=>({value:e.value,label:s(e.labelKey)})),[s]),Z=C(()=>L.trim()===``?I.length>0||Y.length>0||L.trim()===``:!1,[Y.length,I.length,L]),Q=C(()=>L.trim()!==``&&!Z,[L,Z]);S(()=>(t.on(d.EXCHANGE_SEARCH_TYPE,W),()=>{t.off(d.EXCHANGE_SEARCH_TYPE,W)}),[]),S(()=>{m()},[]);let $=w(L);return $.current=L,S(()=>{Q&&te(U,$.current)},[Q,U]),k(o,{className:`min-h-screen w-full bg-[radial-gradient(79.9%_42.18%_at_50%_0%,rgba(71,20,126,0.95)_0%,rgba(14,6,32,0.98)_42%,#05010F_100%)] pb-[24px]`,children:[O(b,{setSearchInputVal:t=>{t!==L&&(R(t),e({q:t}))},initInputVal:z,initInputVersion:V,addSearchHistory:X}),Z&&k(o,{className:`w-full pt-[8px]`,children:[Y.length>0&&O(f,{title:s(`searchHistory`),rows:2,storageKey:l,onHistoryClick:e=>{B(e),H(e=>e+1);let t=new URLSearchParams(p.toString());t.set(`q`,e),N.push(`${x}?${t.toString()}`)}}),O(_,{initHotSearchKeywordList:I,onRefreshHotKey:async()=>(await ne()).data??{code:0,message:``,data:{recommend_list:[]}},onClick:e=>{h(e.title||``,e.trace_id||``,e.trace_info||``),B(e.title||``),H(e=>e+1),X(e.title)}})]}),O(g,{isShow:L.trim()===``}),Q&&k(o,{className:`relative mt-[8px] min-h-[calc(100vh-74px)] overflow-hidden rounded-t-[16px] bg-[linear-gradient(180deg,rgba(6,3,21,0.9)_19.905%,rgba(6,3,21,0)_100%)] backdrop-blur-[2px]`,children:[O(M,{searchType:U,sort:G,tabList:re,onChange:e=>{W(e)},onSortChange:e=>{K(e),J(e=>e+1)}}),O(y,{inputVal:L,searchType:U,sort:G,refreshVersion:q},`${U}-${L}-${G}-${q}`)]})]})}export{N as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendVideoList as t,pInteractionFollow as n,pInteractionUnfollow as r}from"../../../../service/generated/client.mjs";import{Image as i}from"../../../ui/image.mjs";import{Box as a}from"../../../ui/box.mjs";import{EmptyState as o}from"../../../ui/empty.mjs";import{InfiniteScroll as s}from"../../../ui/infinite-scroll.mjs";import{Text as c}from"../../../ui/text.mjs";import{Skeleton as l}from"../../../ui/skeleton.mjs";import{usePaginated as u}from"../../../../hooks/query/use-query.mjs";import{useRequireLogin as d}from"../../../../hooks/use-auth.mjs";import{trackSearchResultClick as f}from"../../search-result/tracking.mjs";import p from"../../../../assets/images/user/default_avatar.mjs";import{formatSearchFollowerCount as m,resolveSearchUserDescription as h,resolveSearchUserName as g}from"./shared.mjs";import{memo as
|
|
2
|
+
"use client";import{useUserStore as e}from"../../../../store/modules/user-store.mjs";import{gContentGetRecommendVideoList as t,pInteractionFollow as n,pInteractionUnfollow as r}from"../../../../service/generated/client.mjs";import{Image as i}from"../../../ui/image.mjs";import{Box as a}from"../../../ui/box.mjs";import{EmptyState as o}from"../../../ui/empty.mjs";import{InfiniteScroll as s}from"../../../ui/infinite-scroll.mjs";import{Text as c}from"../../../ui/text.mjs";import{Skeleton as l}from"../../../ui/skeleton.mjs";import{usePaginated as u}from"../../../../hooks/query/use-query.mjs";import{useRequireLogin as d}from"../../../../hooks/use-auth.mjs";import{trackSearchResultClick as f}from"../../search-result/tracking.mjs";import p from"../../../../assets/images/user/default_avatar.mjs";import{formatSearchFollowerCount as m,resolveSearchUserDescription as h,resolveSearchUserName as g}from"./shared.mjs";import{toast as _}from"sonner";import{memo as v,useCallback as y,useEffect as b,useMemo as x,useState as S}from"react";import{Check as C,Plus as w}from"lucide-react";import{jsx as T,jsxs as E}from"react/jsx-runtime";import{useTranslations as D}from"next-intl";import O from"next/link";const k=typeof p==`string`?p:p.src;function A(e,t){return String(t||e?.user_id||e?.userId||``).trim()}function j({src:e,alt:t,variant:n}){let r=n===`row`?`size-[56px] p-[4px]`:`size-[40px] p-[3px]`,o=n===`row`?`border-[3px]`:`border-[2px]`;return T(a,{className:`rounded-full bg-white/20 ${r}`,children:T(a,{className:`relative size-full overflow-hidden rounded-full border-solid border-white/40 ${o}`,children:T(i,{src:e||k,fill:!0,objectFit:`cover`,alt:t})})})}function M({item:t,variant:i,onFollowChange:a}){let o=d(),{userInfo:s,userId:l}=e(),[u,f]=S(!1),p=A(s,l),m=p!==``&&p===String(t.user_id||``).trim(),h=!!t.is_following,g=y(()=>{!t.user_id||u||o(()=>{let i=A(e.getState().userInfo,e.getState().userId);if(!i){_.error(`请先登录`);return}(async()=>{f(!0);try{let e=h?await r({follower_id:i,followee_id:t.user_id}):await n({follower_id:i,followee_id:t.user_id});if(e.code!==0){_.error(e.message||(h?`取消关注失败`:`关注失败`));return}a?.(!h)}catch(e){console.error(`切换关注状态失败`,e),_.error(h?`取消关注失败`:`关注失败`)}finally{f(!1)}})()})},[h,t.user_id,a,u,o]);return m?null:i===`grid`?T(`button`,{type:`button`,"aria-label":h?`取消关注`:`关注`,className:`flex size-[24px] shrink-0 items-center justify-center rounded-full transition-opacity ${h?`bg-white/15 text-white`:`bg-black/30 text-white/75`} ${u?`opacity-50`:``}`,onClick:g,children:T(h?C:w,{className:`size-[14px]`})}):E(`button`,{type:`button`,className:`flex h-[24px] shrink-0 items-center justify-center rounded-full transition-opacity ${h?`border border-white/25 bg-white/10 px-[8px] text-white/85`:`border border-white/60 bg-black/20 pl-[4px] pr-[8px] text-white/70`} ${u?`opacity-50`:``}`,onClick:g,children:[!h&&T(w,{className:`mr-[2px] size-[16px]`}),T(c,{className:h?`text-[12px] leading-[18px]`:`text-[14px] leading-[20px]`,children:h?`已关注`:`关注`})]})}const N=v(({item:e,onFollowChange:t})=>{let n=g(e),r=h(e),i=m(e.follower_count);return E(a,{className:`flex h-[88px] w-full items-center gap-[8px] rounded-[8px] bg-white/10 px-[12px] py-[8px]`,children:[E(O,{href:`/profile/${e.user_id||``}`,className:`flex min-w-0 flex-1 items-center gap-[8px]`,onClick:t=>{f(t,String(e.user_id??``),`user`)},children:[T(j,{src:e.avatar,alt:n||`用户头像`,variant:`row`}),E(a,{className:`min-w-0 flex-1`,children:[T(c,{className:`block truncate text-[14px] leading-[20px] font-medium text-white`,children:n}),T(c,{className:`mt-[2px] block truncate text-[14px] leading-[20px] text-white/60`,children:r}),E(c,{className:`mt-[2px] block truncate text-[14px] leading-[20px] text-white/60`,children:[`粉丝:`,i]})]})]}),T(M,{item:e,variant:`row`,onFollowChange:t})]})});N.displayName=`SearchUserRowCard`;const P=v(({item:e,onFollowChange:t})=>{let n=g(e),r=h(e);return E(a,{className:`h-[170px] rounded-[8px] bg-white/10 px-[16px] py-[16px]`,children:[E(a,{className:`flex items-start justify-between`,children:[T(O,{href:`/profile/${e.user_id||``}`,className:`flex items-center`,onClick:t=>{f(t,String(e.user_id??``),`user`)},children:T(j,{src:e.avatar,alt:n||`用户头像`,variant:`grid`})}),T(M,{item:e,variant:`grid`,onFollowChange:t})]}),E(O,{href:`/profile/${e.user_id||``}`,className:`mt-[16px] block`,children:[T(c,{className:`block truncate text-[14px] leading-[20px] font-medium text-white`,children:n}),T(c,{className:`mt-[8px] block text-[14px] leading-[20px] text-white/60 line-clamp-4`,children:r})]})]})});P.displayName=`SearchUserGridCard`;function F(){return T(a,{className:`grid grid-cols-2 gap-[16px] px-[16px]`,children:Array.from({length:6}).map((e,t)=>E(a,{className:`h-[170px] rounded-[8px] bg-white/8 px-[16px] py-[16px]`,children:[E(a,{className:`flex items-start justify-between`,children:[T(l,{className:`size-[40px] rounded-full bg-white/10`}),T(l,{className:`size-[24px] rounded-full bg-white/10`})]}),T(l,{className:`mt-[16px] h-[20px] w-[86px] rounded-[4px] bg-white/10`}),T(l,{className:`mt-[8px] h-[20px] w-full rounded-[4px] bg-white/10`}),T(l,{className:`mt-[6px] h-[20px] w-[90%] rounded-[4px] bg-white/10`}),T(l,{className:`mt-[6px] h-[20px] w-[72%] rounded-[4px] bg-white/10`})]},`search-user-grid-skeleton-${t}`))})}const I=v(({inputVal:e,sort:n,refreshVersion:r})=>{let i=D(`components.pages.search.searchResult`),[c,l]=S({});b(()=>{l({})},[e,r,n]);let d=y(async r=>await t({data_type:2,extra_params:JSON.stringify({type:4,keywords:e,sort:n}),page:r||1,page_size:20}),[e,n]),f=u({key:x(()=>[`search-result`,`user`,e,n,r],[e,r,n]),initialPageParam:1,async queryFn(e){return(await d(e))?.data?.users??{has_more:!1,total:0,list:[]}},getNextPageParam(e,t){if(e.has_more)return t.length+1}}),p=x(()=>(f.data?.pages??[]).flatMap(e=>e.list??[]).map(e=>{let t=String(e.user_id||``).trim();return!t||c[t]===void 0?e:{...e,is_following:c[t]}}),[c,f.data?.pages]),m=!!((f.isPending||f.isFetching)&&p.length===0),h=y((e,t)=>{e&&l(n=>({...n,[e]:t?1:0}))},[]),g=y(async()=>{try{await f.fetchNextPage()}catch(e){console.error(`获取用户搜索结果失败`,e)}},[f]);return m?T(F,{}):p.length===0?T(o,{type:`nodata`,text:i(`searchUser.emptyResult`),className:`!pt-[72px]`}):E(a,{className:`w-full pb-[24px]`,children:[T(a,{className:`grid grid-cols-2 gap-[16px] px-[16px]`,children:p.map((e,t)=>T(P,{item:e,onFollowChange:t=>{h(String(e.user_id||``),t)}},String(e.user_id??t)))}),f.hasNextPage&&T(s,{loadMore:async e=>g(),hasMore:f.hasNextPage,className:`w-full`})]})});I.displayName=`SearchUser`;export{N as SearchUserRowCard,I as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
import{
|
|
2
|
+
import{formatCompactCount as e}from"../../../../utils/common.mjs";import{getPostDetailPagePath as t}from"../../../../utils/tools.mjs";const n=[{label:`综合`,value:1},{label:`最新`,value:2},{label:`最热`,value:3}];function r(t){return!Number.isFinite(t)||t<=0?``:`${e(t)}热度`}function i(e){let t=Number(e);if(!(!Number.isFinite(t)||t<=0))return t>10&&t<=100?t/10:Math.min(t,10)}function a(e){return String(e.img_type??``).trim().toLowerCase()===`long`?`short`:`tall`}function o(e){let t=[],n=[],r=0,i=0;return e.forEach(e=>{let a=(e.cardKind===`short`?142:216)+16;if(r<=i){t.push(e),r+=a;return}n.push(e),i+=a}),{left:t,right:n}}function s(e){return String(e.name||``).trim()}function c(e){return e.img_y||e.img_x||``}function l(e){return String(e.group_name||e.description||``).trim()}function u(e){let n=String(e.video_id||``).trim();return n?t({id:n,contentType:0}):`#`}function d(e){return o(e.filter(e=>String(e.video_id||``).trim()).map((e,t)=>({key:`${e.video_id??`video`}-${t}`,sourceIndex:t,href:u(e),cardKind:a(e),coverUrl:c(e),title:s(e),metaPrimaryText:l(e),heatText:r(Number(e.play_count||0)),score:i(e.score),selectionId:String(e.video_id??``).trim()||void 0})))}function f(e){for(let t of e)if(typeof t==`string`&&t.trim())return t.trim();return``}function p(e){return f([e.nick_name,e.nickname,e.display_id,e.user_id])}function m(e){return f([e.signature,e.description,e.text,e.introduce,e.bio])}function h(t){let n=Number(t||0);return!Number.isFinite(n)||n<=0?`0`:e(n)}export{n as SEARCH_RESULT_SORT_OPTIONS,d as buildSearchVideoWaterfallColumns,h as formatSearchFollowerCount,m as resolveSearchUserDescription,p as resolveSearchUserName};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Input as t}from"../../ui/input.mjs";import{toast as n}from"../../../ui.mjs";import{useKeepAliveEffect as r,useKeepAliveState as i}from"../../common/keep-scroll-position/index.mjs";import{isPCEnv as a}from"../../../utils/tools.mjs";import{LeftArrowIcon as o}from"../../common/icons/left-arrow.mjs";import s from"../../../assets/icons/search.mjs";import c from"../../../assets/icons/clear.mjs";import{memo as l,useCallback as u}from"react";import{
|
|
2
|
+
"use client";import{useRouter as e}from"../../../utils/use-compatible-router.mjs";import{Input as t}from"../../ui/input.mjs";import{toast as n}from"../../../ui.mjs";import{useKeepAliveEffect as r,useKeepAliveState as i}from"../../common/keep-scroll-position/index.mjs";import{isPCEnv as a}from"../../../utils/tools.mjs";import{LeftArrowIcon as o}from"../../common/icons/left-arrow.mjs";import s from"../../../assets/icons/search.mjs";import c from"../../../assets/icons/clear.mjs";import{memo as l,useCallback as u}from"react";import{useSearchParams as d}from"next/navigation";import{jsx as f,jsxs as p}from"react/jsx-runtime";import{useTranslations as m}from"next-intl";function h(){}const g=l(({setSearchInputVal:l,initInputVal:g,initInputVersion:_,addSearchHistory:v,clearCallback:y=h})=>{let b=m(`components.pages.search`),x=e(),[S,C]=i(`search-input-val`,``),w=d().get(`q`),T=e=>{C(e.target.value)},E=u(e=>{l(e),v(e)},[v,l]);r(()=>{g&&(C(g),E(g))},[E,g,_,C],`search-init-input-effect`),r(()=>{w&&(C(w),E(w))},[E,C,w],`search-url-params-effect`);function D(){if(n.dismiss(),window.location.search.split(`from_code=`)[1]){x.push(`/`);return}x.back()}return f(`div`,{className:`app-top-nav relative h-[66px] w-full`,children:f(`header`,{className:`fixed left-0 right-0 top-0 z-50`,style:{willChange:`transform`,transform:`translateZ(0)`},children:p(`div`,{className:`mx-auto flex h-[66px] items-end gap-[8px] px-[16px] pb-[16px] pt-[16px]`,children:[f(`button`,{type:`button`,"aria-label":`返回`,className:`flex size-[24px] shrink-0 items-center justify-center text-white`,onClick:D,children:f(o,{className:`h-[16px] w-[16px]`})}),p(`div`,{className:`flex h-[34px] min-w-0 flex-1 items-center overflow-hidden rounded-[100px] border border-[#E62AFF]/90 bg-black/40 backdrop-blur-[2px]`,children:[p(`div`,{className:`relative flex h-full min-w-0 flex-1 items-center pl-[12px] pr-[10px]`,children:[f(`span`,{className:`pointer-events-none absolute inset-y-0 left-[12px] flex items-center justify-center`,children:f(s,{className:`h-[14px] w-[14px] text-white/60`})}),f(t,{placeholder:b(`topHeader.placeholder`),maxLength:20,value:S,className:`!h-[20px] !w-full !rounded-none !border-0 !bg-transparent !px-0 !pl-[22px] !pr-[18px] !py-0 !text-[14px] !leading-[20px] !text-white placeholder:!text-white/90`,onChange:T,onKeyDown:e=>{if(e.key===`Enter`){if(e.preventDefault(),!S.trim())return;E(S.trim())}}}),S&&f(`span`,{className:`absolute inset-y-0 right-0 flex items-center justify-center`,children:f(c,{className:`h-[15px] w-[15px] text-white/50`,onClick:()=>{a()||(C(``),l(``),y())}})})]}),f(`button`,{type:`button`,className:`mx-[2px] flex h-[30px] w-[56px] shrink-0 items-center justify-center rounded-[100px] bg-[linear-gradient(90deg,#9756E3_0%,#6C43EE_100%)] text-[14px] leading-[20px] text-white`,onClick:()=>{S.trim()&&E(S.trim())},children:b(`topHeader.search`)})]})]})})})});g.displayName=`SearchTopHeader`;export{g as default};
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
|
|
2
|
-
"use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{usePageLifecycle as r}from"../../../utils/tracking.mjs";import{useRouter as i}from"../../../utils/use-compatible-router.mjs";import{Box as a}from"../../ui/box.mjs";import{eventKey as o}from"../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../hooks/use-search-history.mjs";import{trackSearchResultPageView as c}from"./tracking.mjs";import{SEARCH_RESULT_SORT_OPTIONS as l}from"./shared.mjs";import u from"./search-user.mjs";import d from"./search-video-info.mjs";import f from"./search-all.mjs";import{SearchTab as p}from"./search-tab.mjs";import m from"./top-header.mjs";import{useEffect as h,useMemo as g,useState as _}from"react";import{
|
|
2
|
+
"use client";import{updateUrlParams as e}from"../../../utils/common.mjs";import t from"../../../utils/event-bus.mjs";import{useUserStore as n}from"../../../store/modules/user-store.mjs";import{usePageLifecycle as r}from"../../../utils/tracking.mjs";import{useRouter as i}from"../../../utils/use-compatible-router.mjs";import{Box as a}from"../../ui/box.mjs";import{eventKey as o}from"../../../constants/event-key.mjs";import{useSearchHistory as s}from"../../../hooks/use-search-history.mjs";import{trackSearchResultPageView as c}from"./tracking.mjs";import{SEARCH_RESULT_SORT_OPTIONS as l}from"./shared.mjs";import u from"./search-user.mjs";import d from"./search-video-info.mjs";import f from"./search-all.mjs";import{SearchTab as p}from"./search-tab.mjs";import m from"./top-header.mjs";import{useEffect as h,useMemo as g,useState as _}from"react";import{useSearchParams as v}from"next/navigation";import{jsx as y,jsxs as b}from"react/jsx-runtime";import{useTranslations as x}from"next-intl";const S=[{labelKey:`tabs.all`,value:`all`},{labelKey:`tabs.video`,value:`video`},{labelKey:`tabs.user`,value:`user`}];function C(){i(),r(`page_search_result`,`搜索结果`);let C=x(`components.pages.search.pageClient`),{userInfo:w}=n(),T=w?.user_id||`guest`,E=v().get(`q`)?.toString()||``,[D,O]=_(E),[k,A]=_(0);h(()=>{O(E),A(e=>e+1)},[E]);let[j,M]=_(S[0].value),[N,P]=_(l[0].value),[F,I]=_(0),{addHistory:L}=s({storageKey:T}),R=g(()=>S.map(e=>({value:e.value,label:C(e.labelKey)})),[C]),z=g(()=>D.trim()!==``,[D]);return h(()=>(t.on(o.EXCHANGE_SEARCH_TYPE,M),()=>{t.off(o.EXCHANGE_SEARCH_TYPE,M)}),[M]),h(()=>{D.trim()&&c(j,D)},[j,D]),b(a,{className:`flex h-dvh w-full flex-col`,children:[y(a,{className:`shrink-0`,children:y(m,{setSearchInputVal:t=>{t!==D&&(O(t),e({q:t}))},initInputVal:E,initInputVersion:k,addSearchHistory:L})}),y(a,{className:`mt-[16px] min-h-0 flex-1 overflow-hidden rounded-t-[16px]`,children:z&&b(a,{className:`flex h-full flex-col bg-[linear-gradient(180deg,rgba(6,3,21,0.9)_0%,rgba(6,3,21,0)_100%)] backdrop-blur-[2px]`,children:[y(p,{searchType:j,tabList:R,onChange:e=>{M(e)},sort:N,onSortChange:e=>{P(e),I(e=>e+1)}}),b(`div`,{className:`min-h-0 flex-1 overflow-y-auto pb-[24px]`,children:[j===`user`&&y(u,{inputVal:D,sort:N,refreshVersion:F}),j===`all`&&y(f,{searchInputVal:D,sort:N,refreshVersion:F}),j===`video`&&y(d,{inputVal:D,sort:N,refreshVersion:F})]})]})})]})}export{C as default};
|