most-box 0.2.0 → 0.2.1
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/README.md +3 -3
- package/out/admin/index.html +0 -0
- package/out/app/index.html +0 -0
- package/out/assets/{AppShell-CQhg6DJU.js → AppShell-OiOEqXPr.js} +1 -1
- package/out/assets/ChatUi-Cif5LRF3.js +1 -0
- package/out/assets/CopyButton-Dm7krgbq.js +1 -0
- package/out/assets/LanguageToggle-B4ZNuBCV.js +1 -0
- package/out/assets/LogoIcon-B2fFe0l1.js +1 -0
- package/out/assets/MarketingHeader-yIZuQP7m.js +1 -0
- package/out/assets/MarketingLayout-DVH0Nx7S.js +1 -0
- package/out/assets/{MarketingThemeToggle-DBaC9bjz.js → MarketingThemeToggle-qlwCZU1o.js} +1 -1
- package/out/assets/{MilkdownEditor-BqJzntYE.js → MilkdownEditor-_TGlDyA_.js} +1 -1
- package/out/assets/MoveModal-BVr4Q7-b.js +1 -0
- package/out/assets/Nav-5xeettNJ.js +1 -0
- package/out/assets/NoteSidebar-DpniUKmy.js +1 -0
- package/out/assets/OpenSidebarButton-BfgG2HIT.js +1 -0
- package/out/assets/PemBlock-CxwIepth.js +1 -0
- package/out/assets/SidebarAccount-Zg5DZblE.js +1 -0
- package/out/assets/arrow-right-CL9YSDVS.js +1 -0
- package/out/assets/channelApi-DNdJfsJ-.js +1 -0
- package/out/assets/chevron-down-CnLh_-aO.js +1 -0
- package/out/assets/{circle-alert-W0iyN4sC.js → circle-alert-oiiRDvhx.js} +1 -1
- package/out/assets/cloud-BEe2N89j.js +1 -0
- package/out/assets/code-9LB8QqxL.js +1 -0
- package/out/assets/{copy-C1MttOli.js → copy-giX4rmFJ.js} +1 -1
- package/out/assets/{download-y7SZXu6E.js → download-D0oMEYQZ.js} +1 -1
- package/out/assets/{downloadValidation-B0p9Ai_9.js → downloadValidation-Bk1VsBBo.js} +1 -1
- package/out/assets/external-link-Cm2WCUxv.js +1 -0
- package/out/assets/filePreview-BZ50vZZf.js +1 -0
- package/out/assets/game-Bvz4dspe.js +1 -0
- package/out/assets/{hard-drive-D13Qbobu.js → hard-drive-B3CQbcp2.js} +1 -1
- package/out/assets/index-BkZvz4WA.css +1 -0
- package/out/assets/index-WCK14Vja.js +34 -0
- package/out/assets/index.lazy-5Q6GuMNT.js +1 -0
- package/out/assets/index.lazy-5jq6EFXa.js +3 -0
- package/out/assets/index.lazy-7n1Q-NrA.js +3 -0
- package/out/assets/index.lazy-BFnOyQFj.js +1 -0
- package/out/assets/index.lazy-B_oPp6qK.js +1 -0
- package/out/assets/index.lazy-BvY50KVz.js +1 -0
- package/out/assets/index.lazy-C0Kn_amZ.js +1 -0
- package/out/assets/index.lazy-C3cek3Gn.js +1 -0
- package/out/assets/index.lazy-CLpPkdy1.js +1 -0
- package/out/assets/index.lazy-Cpr1kApf.js +2 -0
- package/out/assets/index.lazy-CuwLZiUK.js +1 -0
- package/out/assets/index.lazy-DDc3Ylgf.js +2 -0
- package/out/assets/index.lazy-Dg3aqOss.js +1 -0
- package/out/assets/{key-round-CZniN9lv.js → key-round-CzuljhND.js} +1 -1
- package/out/assets/{lock-D5OSNhep.js → lock-D2NhNoJW.js} +1 -1
- package/out/assets/message-square-DwBq_Go5.js +1 -0
- package/out/assets/mp-Bln2MB9G.js +1 -0
- package/out/assets/{music-CbUskKgg.js → music-CB73K5Gz.js} +1 -1
- package/out/assets/{notebook-pen-DqKDQ6MJ.js → notebook-pen-Up7r5zoI.js} +1 -1
- package/out/assets/play-OszVgROb.js +1 -0
- package/out/assets/plus-BbxQG_Ai.js +1 -0
- package/out/assets/{save-DkH1n_Ov.js → save-CiqyiifY.js} +1 -1
- package/out/assets/search-gqAPOsgS.js +1 -0
- package/out/assets/{send-Cl6NtD2T.js → send-vwCWsZGP.js} +1 -1
- package/out/assets/shield-check-CxWxsNLc.js +1 -0
- package/out/assets/{trash-2-BBjpgK_f.js → trash-2-DNGr8IgF.js} +1 -1
- package/out/assets/{triangle-alert-l98G8u9O.js → triangle-alert-B_1BlX1b.js} +1 -1
- package/out/assets/{upload-ByP6Ydde.js → upload-Dxl7GUzb.js} +1 -1
- package/out/assets/useChannelMessages-7bYKXU_R.js +3 -0
- package/out/assets/useGameRoom-DqA1mkfk.js +1 -0
- package/out/assets/wallet-DlkawdPJ.js +1 -0
- package/out/assets/{wifi-Bm4biAjc.js → wifi-sBOKcPFM.js} +1 -1
- package/out/avatars/default/LICENSE.md +7 -0
- package/out/avatars/default/dusk.svg +100 -0
- package/out/avatars/default/ember.svg +55 -0
- package/out/avatars/default/mint.svg +29 -0
- package/out/avatars/default/ocean.svg +25 -0
- package/out/avatars/default/sage.svg +34 -0
- package/out/avatars/default/violet.svg +60 -0
- package/out/chat/index.html +0 -0
- package/out/chat/join/index.html +0 -0
- package/out/demo/index.html +0 -0
- package/out/download/index.html +4 -3
- package/out/game/gandengyan/index.html +0 -0
- package/out/game/index.html +0 -0
- package/out/game/zhajinhua/index.html +0 -0
- package/out/index.html +4 -3
- package/out/note/index.html +0 -0
- package/out/ping/index.html +4 -3
- package/out/profile/index.html +0 -0
- package/out/web3/index.html +0 -0
- package/package.json +1 -1
- package/public/avatars/default/LICENSE.md +7 -0
- package/public/avatars/default/dusk.svg +100 -0
- package/public/avatars/default/ember.svg +55 -0
- package/public/avatars/default/mint.svg +29 -0
- package/public/avatars/default/ocean.svg +25 -0
- package/public/avatars/default/sage.svg +34 -0
- package/public/avatars/default/violet.svg +60 -0
- package/server/src/core/channelIdentity.js +2 -13
- package/server/src/http/app.js +1 -3
- package/server/src/index.js +286 -249
- package/server/src/utils/avatar.js +44 -3
- package/out/assets/ChatUi-BepWs-ZU.js +0 -1
- package/out/assets/LanguageToggle-CtzCCAYv.js +0 -1
- package/out/assets/LogoIcon-Dxto3Sb4.js +0 -1
- package/out/assets/MarketingLayout-BQw0IS2i.js +0 -1
- package/out/assets/MoveModal-4D9n11Kw.js +0 -1
- package/out/assets/Nav-9MDdvgNs.js +0 -1
- package/out/assets/NoteSidebar-C-rIt32H.js +0 -1
- package/out/assets/OpenSidebarButton-Dd0JmKuE.js +0 -1
- package/out/assets/PemBlock-C8dEIzu-.js +0 -1
- package/out/assets/SidebarAccount-ClS-N0lq.js +0 -1
- package/out/assets/arrow-right-urE9Rd7j.js +0 -1
- package/out/assets/channelApi-BwQU0-h1.js +0 -1
- package/out/assets/check-DUNsD2t6.js +0 -1
- package/out/assets/chevron-down-D6mpsfv4.js +0 -1
- package/out/assets/cloud-BMyOoC2x.js +0 -1
- package/out/assets/code-B1Cb_Icm.js +0 -1
- package/out/assets/filePreview-UI9NH34f.js +0 -1
- package/out/assets/game-CdU3xnZo.js +0 -1
- package/out/assets/image-DJCA16l_.js +0 -1
- package/out/assets/index-BdaFEQG-.css +0 -1
- package/out/assets/index-QxXZzOUL.js +0 -33
- package/out/assets/index.lazy-BBTTFanX.js +0 -1
- package/out/assets/index.lazy-BG4ZylHD.js +0 -2
- package/out/assets/index.lazy-Bi-6ZXZX.js +0 -1
- package/out/assets/index.lazy-BixWVr0B.js +0 -1
- package/out/assets/index.lazy-BjFwNYy5.js +0 -3
- package/out/assets/index.lazy-C8EIQsXY.js +0 -2
- package/out/assets/index.lazy-CarNe2uu.js +0 -1
- package/out/assets/index.lazy-DEuGu3H3.js +0 -1
- package/out/assets/index.lazy-GPyILCA7.js +0 -3
- package/out/assets/index.lazy-I8ofndXl.js +0 -1
- package/out/assets/index.lazy-TxhWsA7y.js +0 -1
- package/out/assets/index.lazy-azfky8k7.js +0 -1
- package/out/assets/log-out-B6phyZ5z.js +0 -1
- package/out/assets/play-BIl8q9eU.js +0 -1
- package/out/assets/plus-BxxbpH6Q.js +0 -1
- package/out/assets/search-BQi5Z0E-.js +0 -1
- package/out/assets/useChannelMessages-BgbYfF2c.js +0 -3
- package/out/assets/useGameRoom-DPmweWwe.js +0 -1
- package/out/assets/wallet-c7zIhNSM.js +0 -1
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{t as r}from"./SidebarAccount-ClS-N0lq.js";import{n as i,r as a,t as o}from"./filePreview-UI9NH34f.js";import{n as ee,r as te}from"./LanguageToggle-CtzCCAYv.js";import{r as ne,t as re}from"./AppShell-CQhg6DJU.js";import{n as ie,t as ae}from"./LogoIcon-Dxto3Sb4.js";import{t as oe}from"./OpenSidebarButton-Dd0JmKuE.js";import{a as se,c as ce,i as le,n as ue,o as de,r as fe,s as pe,t as me}from"./ChatUi-BepWs-ZU.js";import{t as he}from"./plus-BxxbpH6Q.js";import{t as ge}from"./search-BQi5Z0E-.js";import{G as _e,J as s,U as ve,W as ye,f as c,g as be,i as xe,l as Se,o as Ce,p as we,s as Te,u as Ee,z as De}from"./index-QxXZzOUL.js";import{i as Oe,n as l,r as ke,t as Ae}from"./downloadValidation-B0p9Ai_9.js";import{t as u}from"./channelApi-BwQU0-h1.js";import{t as je}from"./useChannelMessages-BgbYfF2c.js";var Me=ye(`calendar`,[[`path`,{d:`M8 2v4`,key:`1cmpym`}],[`path`,{d:`M16 2v4`,key:`4m81vk`}],[`rect`,{width:`18`,height:`18`,x:`3`,y:`4`,rx:`2`,key:`1hopcy`}],[`path`,{d:`M3 10h18`,key:`8toen8`}]]),Ne=ye(`hash`,[[`line`,{x1:`4`,x2:`20`,y1:`9`,y2:`9`,key:`4lhtct`}],[`line`,{x1:`4`,x2:`20`,y1:`15`,y2:`15`,key:`vyu0kd`}],[`line`,{x1:`10`,x2:`8`,y1:`3`,y2:`21`,key:`1ggp8o`}],[`line`,{x1:`16`,x2:`14`,y1:`3`,y2:`21`,key:`weycgp`}]]),Pe=ye(`settings`,[[`path`,{d:`M9.671 4.136a2.34 2.34 0 0 1 4.659 0 2.34 2.34 0 0 0 3.319 1.915 2.34 2.34 0 0 1 2.33 4.033 2.34 2.34 0 0 0 0 3.831 2.34 2.34 0 0 1-2.33 4.033 2.34 2.34 0 0 0-3.319 1.915 2.34 2.34 0 0 1-4.659 0 2.34 2.34 0 0 0-3.32-1.915 2.34 2.34 0 0 1-2.33-4.033 2.34 2.34 0 0 0 0-3.831A2.34 2.34 0 0 1 6.35 6.051a2.34 2.34 0 0 0 3.319-1.915`,key:`1i5ecw`}],[`circle`,{cx:`12`,cy:`12`,r:`3`,key:`1v7zrd`}]]),d=t(e(),1),f=`mostbox.chat.lastReadAt`;function p(e){return Date.parse(e?.lastMessageAt||``)||Date.parse(e?.createdAt||``)||0}function Fe(e){let t=String(e||``).trim().toLowerCase();return t?`${f}:${t}`:``}function Ie(e,t=Date.now()){let n=Number(e);return Math.max(0,Math.floor(Number.isFinite(n)&&n>0?n:t))}function Le(e,t=m()){if(!e||!t)return{};try{let n=t.getItem(e);if(!n)return{};let r=JSON.parse(n);return!r||typeof r!=`object`?{}:Object.entries(r).reduce((e,[t,n])=>{let r=Number(n);return t&&Number.isFinite(r)&&r>=0&&(e[t]=r),e},{})}catch{return{}}}function Re(e,t,n=m()){if(!(!e||!n))try{n.setItem(e,JSON.stringify(t))}catch{}}function ze(e,t,n=Date.now(),r=Date.now()){if(!t)return{changed:!1,value:e};let i=Ie(n,r);return(e[t]||0)>=i?{changed:!1,value:e}:{changed:!0,value:{...e,[t]:i}}}function Be(e,t,n=Date.now()){let r=!1,i={...e};for(let e of t){let t=e?.channelKey||e?.name;!t||i[t]!==void 0||(i[t]=Ie(p(e),n),r=!0)}return{changed:r,value:r?i:e}}function Ve(e,{channelName:t,messageTime:n,activeChannelName:r=``,messageAuthor:i=``,userAddress:a=``,now:o=Date.now()}){if(!t)return{changed:!1,notify:!1,value:e};let ee=Ie(n,o),te=t===r,ne=String(i||``).toLowerCase()===String(a||``).toLowerCase();if(te||ne)return{...ze(e,t,ee,o),notify:!1};let re=e[t]||0;if(re<ee)return{changed:!1,notify:!0,value:e};let ie=Math.max(0,ee-1);return re===ie?{changed:!1,notify:!0,value:e}:{changed:!0,notify:!0,value:{...e,[t]:ie}}}function He(e,t){let n=e?.channelKey||e?.name;return p(e)>(t[n]||0)}function m(){if(!(typeof window>`u`))return window.localStorage}var h=n(),Ue=3,We=30,Ge=/^[a-zA-Z0-9_-]+$/,Ke=1e4,qe=12e3,Je=1200;function g(e){return e?.channelKey||e?.name||``}function _(e){return e?.channelId||e?.name||``}function v(e){return e?.remark||_(e)}var Ye=`chat-file`;function Xe(e,t){return e.type.startsWith(`image/`)?`image`:e.type.startsWith(`video/`)?`video`:e.type.startsWith(`audio/`)?`audio`:e.type.startsWith(`text/`)?`text`:o(t)}function Ze(e){return e?`${e.slice(0,6)}...${e.slice(-4)}`:`Unknown`}function Qe(e){return/#[a-fA-F0-9]{4}$/.test(String(e||``).trim())}function $e(){if(typeof window>`u`)return;let e=window;return e.AudioContext||e.webkitAudioContext}function y(){let e=c(e=>e.isDarkMode),t=c(e=>e.setIsDarkMode),n=c(e=>e.hasBackend),s=c(e=>e.addToast),ye=c(e=>e.openConnectModal),f=Ee(e=>e.identity),Ie=Ee(e=>e.openLoginModal),[m,y]=(0,d.useState)([]),[b,x]=(0,d.useState)(null),[S,C]=(0,d.useState)(``),[et,w]=(0,d.useState)(``),[tt,T]=(0,d.useState)([]),[nt,rt]=(0,d.useState)(``),[it,at]=(0,d.useState)(``),[ot,E]=ne(!1),[st,ct]=(0,d.useState)(``),[D,O]=(0,d.useState)(!1),[lt,ut]=(0,d.useState)(!1),[dt,k]=ne(!1),[ft,A]=(0,d.useState)(null),[j,M]=(0,d.useState)(null),[pt,N]=(0,d.useState)(!1),[mt,ht]=(0,d.useState)(``),[gt,_t]=(0,d.useState)(!1),[vt,yt]=(0,d.useState)(null),[bt,xt]=(0,d.useState)(!1),[P,F]=(0,d.useState)({}),[I,L]=(0,d.useState)(null),[St,R]=(0,d.useState)([]),[Ct,wt]=(0,d.useState)(!1),[Tt,Et]=(0,d.useState)(!1),[Dt,Ot]=(0,d.useState)(!1),[kt,z]=(0,d.useState)({}),B=f?.identity===`user`,At=B&&!Dt?f.logo:``,jt=(0,d.useRef)(null),Mt=(0,d.useRef)(null),Nt=(0,d.useRef)(``),V=(0,d.useRef)(null),H=(0,d.useRef)(!1),Pt=(0,d.useRef)(0),U=(0,d.useRef)(new Map),W=(0,d.useRef)(new Set),G=n===!0,{t:K,compareStrings:Ft,formatDate:It,formatTime:Lt,formatDateTime:Rt}=_e(),q=(0,d.useCallback)(async(e,t)=>{s(await be(e,t),`error`)},[s]),J=(0,d.useMemo)(()=>Fe(f?.address),[f?.address]),zt=(0,d.useCallback)((e,t=Date.now())=>{e&&z(n=>{let r=ze(n,e,t);return r.changed?(Re(J,r.value),r.value):n})},[J]),Y=(0,d.useCallback)(()=>{if(H.current||typeof window>`u`)return;let e=$e();if(e)try{let t=V.current||new e;V.current=t,t.state===`suspended`&&t.resume().catch(()=>{}),H.current=!0}catch{}},[]),Bt=(0,d.useCallback)(()=>{if(!H.current)return;let e=Date.now();if(e-Pt.current<Je)return;Pt.current=e;let t=$e();if(t)try{let e=V.current||new t;if(V.current=e,e.state===`suspended`){e.resume().catch(()=>{});return}let n=e.createGain();n.gain.setValueAtTime(1e-4,e.currentTime),n.gain.exponentialRampToValueAtTime(.08,e.currentTime+.015),n.gain.exponentialRampToValueAtTime(1e-4,e.currentTime+.18),n.connect(e.destination),[740,980].forEach((t,r)=>{let i=e.createOscillator();i.type=`sine`,i.frequency.setValueAtTime(t,e.currentTime),i.connect(n),i.start(e.currentTime+r*.035),i.stop(e.currentTime+.16+r*.035)})}catch{}},[]),Vt=(0,d.useCallback)(()=>({displayName:f?.displayName||f?.username||``,avatar:f?.avatar}),[f?.avatar,f?.displayName,f?.username]),X=(0,d.useCallback)(async(e=g(b))=>{if(!e||!G||!f){R([]);return}wt(!0);try{R(await u.getChannelMembers(e))}catch(e){R([]),await q(e,K(`chat.error.members`))}finally{wt(!1)}},[b,G,q,K,f]);function Ht(e,t){switch(e){case`channel:message`:{let e=t?.channelKey||t?.channel,n=t?.message,r=Number(n?.timestamp)||Date.now();if(e){y(t=>t.map(t=>g(t)===e?{...t,lastMessageAt:new Date(r).toISOString()}:t));let t=e===Nt.current;z(i=>{let a=Ve(i,{channelName:e,messageTime:r,activeChannelName:t?e:``,messageAuthor:n?.author,userAddress:f?.address});return a.changed&&Re(J,a.value),a.notify&&Bt(),a.changed?a.value:i})}break}case`channel:peer:online`:case`channel:peer:offline`:b&&u.getChannelPeers(g(b)).catch(e=>{console.warn(`[Chat] Failed to fetch peers on event:`,e.message)});break;case`channel:joined`:case`channel:left`:$(),X();break;case`user:metadata:updated`:t?.scope===`channels`&&$();break;case`download:success`:{let e=U.current.get(t.taskId);e&&(U.current.delete(t.taskId),W.current.delete(e.cid),F(t=>({...t,[e.cid]:{status:`available`}})),s(K(`chat.attachment.downloadCompleted`,{fileName:t.fileName||ce(e.fileName)}),`success`),Yt(e,t.fileName||e.fileName));break}case`download:error`:case`download:cancelled`:{let n=U.current.get(t.taskId);n&&(U.current.delete(t.taskId),W.current.delete(n.cid),F(r=>({...r,[n.cid]:{status:`error`,message:e===`download:cancelled`?K(`chat.attachment.downloadCancelled`):t.error||K(`chat.attachment.downloadFailed`)}})),s(e===`download:cancelled`?K(`chat.attachment.downloadCancelled`):t.error||K(`chat.attachment.downloadFailed`),`error`));break}}}let Ut=(0,d.useMemo)(()=>m.map(e=>g(e)),[m]),{clearMessages:Wt,messages:Gt,sendMessage:Kt,syncMessages:qt}=je({isReady:G,enabled:!!f,channelName:g(b),extraSubscribedChannelNames:Ut,peerId:st,waitForPeerId:!0,onSyncError:e=>q(e,K(`chat.error.messages`)),onSocketEvent:Ht,onReconnect:$});function Z(){return G?!0:(ye(),!1)}function Q(){return f?!0:(Ie(),!1)}(0,d.useEffect)(()=>{let e=()=>{C(new URLSearchParams(window.location.search).get(`channel`)||``)};return e(),window.addEventListener(`popstate`,e),()=>window.removeEventListener(`popstate`,e)},[]),(0,d.useEffect)(()=>{f&&C(new URLSearchParams(window.location.search).get(`channel`)||``)},[f?.address]),(0,d.useEffect)(()=>{Ot(!1)},[f?.logo]),(0,d.useEffect)(()=>{Nt.current=g(b)},[b]),(0,d.useEffect)(()=>{z(Le(J))},[J]),(0,d.useEffect)(()=>{!J||m.length===0||z(e=>{let t=Be(e,m);return t.changed&&Re(J,t.value),t.changed?t.value:e})},[J,m]),(0,d.useEffect)(()=>(window.addEventListener(`pointerdown`,Y,{passive:!0}),window.addEventListener(`keydown`,Y),()=>{window.removeEventListener(`pointerdown`,Y),window.removeEventListener(`keydown`,Y)}),[Y]),(0,d.useEffect)(()=>()=>{V.current?.close().catch(()=>{}),V.current=null,H.current=!1},[]),(0,d.useEffect)(()=>{jt.current?.scrollIntoView({behavior:`smooth`})},[Gt]),(0,d.useEffect)(()=>{if(!G){ct(``);return}we.get(`/api/node-id`).json().then(e=>ct(e.id)).catch(e=>{console.warn(`[Chat] Failed to fetch node ID:`,e.message),q(e,K(`chat.error.nodeId`))})},[G,q,K]),(0,d.useEffect)(()=>{G&&f&&$()},[n,G,f?.address]),(0,d.useEffect)(()=>{if(b&&G){let e=g(b);qt(e,{replace:!0}),u.getChannelPeers(e).catch(()=>{}),X(e)}},[b,n,G,X,qt]),(0,d.useEffect)(()=>{!pt||!b||X(g(b))},[b,X,pt]),(0,d.useEffect)(()=>{if(S&&m.length>0){let e=m.find(e=>g(e)===S)||m.find(e=>_(e)===S);e&&(!b||g(b)!==g(e))?$t(e):e&&b&&g(b)===g(e)&&(b.createdAt!==e.createdAt||b.coreKey!==e.coreKey||b.lastMessageAt!==e.lastMessageAt||b.pinned!==e.pinned||b.remark!==e.remark||b.type!==e.type)&&x(e)}},[m,b,S]),(0,d.useEffect)(()=>{f||(y([]),x(null),C(``),M(null),Wt(),at(``),ct(``),N(!1),yt(null),R([]),F({}),z({}),W.current.clear(),U.current.clear())},[Wt,f?.address]);function Jt(e){return e.length<Ue?K(`chat.validation.nameMin`,{count:Ue}):e.length>We?K(`chat.validation.nameMax`,{count:We}):e.includes(`.`)?K(`chat.validation.dotReserved`):Ge.test(e)?``:K(`chat.validation.allowedChars`)}async function $(){if(G)try{y(await u.getChannels({excludeType:`game`}))}catch(e){y([]),await q(e,K(`chat.error.channelList`))}}function Yt(e,t=e.fileName){let n=o(t);yt({cid:e.cid,fileName:t,subtype:n===`file`?e.kind:n})}async function Xt(e){let t=Ae(e.link,K);if(t)return F(n=>({...n,[e.cid]:{status:`error`,message:t}})),!1;try{F(t=>({...t,[e.cid]:{status:`checking`}}));let t=await l.checkDownload(e.link,{timeout:Ke,requestTimeout:qe});return F(n=>({...n,[e.cid]:{status:`available`,message:t.alreadyExists?K(`chat.attachment.localAvailable`):K(`chat.attachment.previewAvailable`)}})),!0}catch(t){let n=await ke(t);return F(t=>({...t,[e.cid]:{status:`error`,message:n}})),!1}}async function Zt(e){L(null),await Xt(e)&&await Qt(e)}async function Qt(e){if(!W.current.has(e.cid)){W.current.add(e.cid),F(t=>({...t,[e.cid]:{status:`available`}}));try{let t=await l.downloadFile(e.link);if(t.alreadyExists||t.fileName){W.current.delete(e.cid),F(t=>({...t,[e.cid]:{status:`available`}})),Yt({...e,fileName:t.fileName||e.fileName},t.fileName||e.fileName);return}t.taskId&&(U.current.set(t.taskId,e),s(K(`chat.attachment.downloadStarted`),`success`))}catch(t){let n=await ke(t);W.current.delete(e.cid),F(t=>({...t,[e.cid]:{status:`error`,message:n}}))}}}async function $t(e){if(!Q()||!Z())return;let t=g(e);zt(t,Math.max(p(e),Date.now())),x(e),C(t),window.history.pushState({},``,`?channel=${encodeURIComponent(t)}`)}async function en(e,t){if(t&&t.stopPropagation(),Q()&&Z()&&!lt){ut(!0);try{if(await u.leaveChannel(e),g(b)===e){x(null),C(``),Wt();let e=new URL(window.location.href);e.searchParams.delete(`channel`),window.history.pushState({},``,e.pathname)}$(),k.close(),A(null)}catch(e){await q(e,K(`chat.error.leave`))}finally{ut(!1)}}}async function tn(e){if(!Q()||!Z())return;let t=!e.pinned,n=g(e);try{let e=await u.setChannelPinned(n,t);y(t=>t.map(t=>g(t)===n?{...t,pinned:e.pinned}:t)),x(t=>t&&g(t)===n?{...t,pinned:e.pinned}:t)}catch(e){await q(e,K(t?`chat.error.pin`:`chat.error.unpin`))}}async function nn(e){let t=e.trim();if(!t||D)return;let n=Jt(t);if(n){s(n,`error`);return}if(Q()&&Z()){O(!0);try{let e=await u.createChannel(t,`public`,Vt());if(e.conflict&&e.candidates?.length){w(e.channelId||t),T(e.candidates),E.close();return}let n=e.channelKey||e.key||e.name||t,r=m.find(e=>g(e)===n),i={...r,name:e.name||t,channelId:e.channelId||e.name||t,channelKey:e.channelKey||e.key||r?.channelKey,fingerprint:e.fingerprint||r?.fingerprint,type:e.type||r?.type||`public`,createdAt:e.createdAt||r?.createdAt,coreKey:e.coreKey||e.key||r?.coreKey,localWriterCoreKey:e.localWriterCoreKey||r?.localWriterCoreKey,writerCoreKeys:e.writerCoreKeys||r?.writerCoreKeys,remark:e.remark||r?.remark},a=g(i);y(e=>e.some(e=>g(e)===a)?e.map(e=>g(e)===a?{...e,...i}:e):[...e,i]),E.close(),await $t(i),X(a),$()}catch(e){await q(e,K(`chat.error.join`))}finally{O(!1)}}}async function rn(e){let t=e.channelId||et;if(!(!t||!e.channelKey||D)&&Q()&&Z()){O(!0);try{let n=await u.createChannel(t,e.type||`public`,{...Vt(),channelKey:e.channelKey,fingerprint:e.fingerprint});if(n.conflict){T(n.candidates||[]);return}let r={...e,...n,name:n.name||t,channelId:n.channelId||t,channelKey:n.channelKey||e.channelKey,remark:n.remark||e.remark},i=g(r);y(e=>e.some(e=>g(e)===i)?e.map(e=>g(e)===i?{...e,...r}:e):[...e,r]),w(``),T([]),await $t(r),X(i),$()}catch(e){await q(e,K(`chat.error.join`))}finally{O(!1)}}}async function an(e,t){if(!e.trim()||!b||!Q()||!Z())return!1;let n=e.trim(),r=g(b);try{let e=await Kt({channelName:r,content:n,author:f.address,authorName:f.displayName||f.username,avatar:f.avatar,attachment:t});return y(t=>t.map(t=>g(t)===r?{...t,lastMessageAt:new Date(Number(e?.timestamp)||Date.now()).toISOString()}:t)),e&&zt(r,Number(e.timestamp)||Date.now()),X(r),!0}catch(e){return await q(e,K(`chat.error.send`)),!1}}async function on(){if(!it.trim())return;let e=it.trim();at(``),await an(e)}function sn(e,t){return`${Ye}/${e}/${t}`}async function cn(e){if(!(!e||e.length===0||!b)&&Q()&&Z()&&!bt){xt(!0);try{for(let t of Array.from(e)){let e=sn(_(b),t.name),n=await l.publishFile(t,e),r=n.fileName||e,i=n.link||`most://${n.cid}?filename=${encodeURIComponent(r)}`;await an(i,{kind:Xe(t,r),cid:n.cid,fileName:r,link:i,mimeType:t.type||void 0,size:t.size})&&s(K(`chat.attachment.published`,{fileName:ce(r)}),`success`)}}catch(e){await q(e,K(`chat.error.attachmentSend`))}finally{xt(!1)}}}async function ln(e){if(!Q()||!Z())return;let t=P[e.cid];if(t?.status!==`checking`){if(t?.status===`error`){L(e);return}if(t?.status!==`available`){await Xt(e)&&await Qt(e);return}await Qt(e)}}async function un(e,t){if(!Q()||!Z())return;let n=g(e),r=await u.setChannelRemark(n,t);return y(e=>e.map(e=>g(e)===n?{...e,remark:r.remark}:e)),x(e=>e&&g(e)===n?{...e,remark:r.remark}:e),r.remark}async function dn(){if(b)try{await un(b,mt)}catch(e){await q(e,K(`chat.error.remark`))}}async function fn(e){if(!(!j||gt)){_t(!0);try{await un(j,e),M(null)}catch(e){await q(e,K(`chat.error.rename`))}finally{_t(!1)}}}function pn(e){if(!e.attachment)return(0,h.jsx)(de,{children:e.content});let t=e.attachment,n=P[t.cid]?.status;return(0,h.jsx)(ue,{children:(0,h.jsx)(pe,{attachment:t,status:n,pending:e.pending,onOpen:ln})})}function mn(e,t){let n=String(e||``).trim();return n?Tt?Qe(n)?n:t?`${n}#${t.slice(-4).toUpperCase()}`:n:n.replace(/#[a-fA-F0-9]{4}$/,``):Ze(t)}function hn(){return(0,h.jsx)(me,{isLoading:Ct,members:St.map(e=>({id:e.address,name:mn(e.displayName,e.address),avatarSrc:xe(e.address,e.avatar)}))})}let gn=B&&!!S&&!b,_n=b?(0,h.jsx)(`h2`,{className:`header-title`,translate:`no`,children:v(b)}):(0,h.jsx)(`h2`,{className:`header-title`,children:K(`chat.title`)}),vn=nt.trim().toLowerCase(),yn=(0,d.useMemo)(()=>[...m].sort((e,t)=>{let n=Number(!!t.pinned)-Number(!!e.pinned);if(n!==0)return n;let r=p(t)-p(e);return r===0?Ft(v(e),v(t)):r}),[m,Ft]),bn=vn?yn.filter(e=>[v(e),_(e),g(e)].some(e=>e.toLowerCase().includes(vn))):yn;return(0,h.jsxs)(re,{className:`chat-app-layout`,defaultHide:B,sidebar:({closeSidebar:e})=>(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{className:`sidebar-header sidebar-header-link`,onClick:()=>window.location.href=`/`,children:[(0,h.jsx)(ve,{size:18}),(0,h.jsx)(`h1`,{children:`MOST PEOPLE`})]}),(0,h.jsx)(`div`,{className:`chat-channel-search`,children:(0,h.jsxs)(`div`,{className:`ui-input-control`,children:[(0,h.jsx)(ge,{className:`ui-input-icon`,size:15}),(0,h.jsx)(`input`,{type:`search`,className:`input input-compact`,placeholder:K(`chat.search.placeholder`),value:nt,onChange:e=>rt(e.target.value),"aria-label":K(`chat.search.placeholder`)})]})}),(0,h.jsx)(`nav`,{className:`sidebar-nav`,children:m.length===0?(0,h.jsx)(`div`,{className:`sidebar-empty-state`,children:(0,h.jsx)(`p`,{children:K(`chat.empty.noChannels`)})}):bn.length===0?(0,h.jsx)(`div`,{className:`sidebar-empty-state`,children:(0,h.jsx)(`p`,{children:K(`chat.empty.noMatches`)})}):bn.map(t=>(0,h.jsx)(fe,{active:g(b)===g(t),pinned:!!t.pinned,unread:He(t,kt),title:v(t),onSelect:()=>{$t(t),e()},onTogglePin:()=>void tn(t),onRename:()=>M(t),onLeave:()=>{A(t),k.open()}},g(t)))}),(0,h.jsxs)(`button`,{className:`ui-action-dashed create-channel-btn`,onClick:()=>{!Q()||!Z()||E.open()},children:[(0,h.jsx)(he,{size:16}),K(`chat.joinChannel`)]}),(0,h.jsx)(r,{})]}),headerTitle:_n,sidebarToggleReplacement:B?(0,h.jsx)(`span`,{className:`sidebar-toggle-static-logo`,"aria-hidden":`true`,children:At?(0,h.jsx)(`img`,{className:`sidebar-toggle-static-logo-img`,src:At,alt:``,onError:()=>Ot(!0)}):(0,h.jsx)(ae,{size:18})}):void 0,headerRight:(0,h.jsxs)(`div`,{className:`header-right-actions`,children:[(0,h.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>t(!e),title:K(`common.theme.toggle`),children:e?(0,h.jsx)(ee,{size:16}):(0,h.jsx)(te,{size:16})}),b&&(0,h.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>N(!0),title:K(`chat.channelSettings`),children:(0,h.jsx)(Pe,{size:16})})]}),children:[b?(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(`div`,{className:`chat-messages`,children:[Gt.length===0?(0,h.jsxs)(`div`,{className:`ui-empty-state chat-messages-empty`,children:[(0,h.jsx)(`div`,{className:`ui-empty-icon empty-icon`,children:(0,h.jsx)(ie,{size:28})}),(0,h.jsx)(`p`,{children:K(`chat.empty.noMessages`)})]}):Gt.map(e=>{let t=e.author===f?.address;return(0,h.jsx)(se,{variant:t?`self`:`other`,pending:e.pending,avatarSrc:xe(e.author,e.avatar||(t?f.avatar:void 0)),author:mn(e.authorName,e.author),time:Lt(e.timestamp),children:pn(e)},e.id||`${e.author}-${e.timestamp}`)}),(0,h.jsx)(`div`,{ref:jt})]}),(0,h.jsx)(le,{message:it,placeholder:K(f?`chat.composer.placeholder`:`chat.composer.signInPlaceholder`),disabled:!f,isPublishingAttachment:bt,attachmentInputRef:Mt,onMessageChange:at,onSend:on,onSelectAttachmentFiles:e=>{cn(e)}})]}):gn?(0,h.jsxs)(`div`,{className:`ui-empty-state chat-welcome`,children:[(0,h.jsx)(`div`,{className:`ui-empty-icon ui-empty-icon-lg welcome-icon`,children:(0,h.jsx)(a,{size:36,className:`ui-spinner`})}),(0,h.jsx)(`h2`,{className:`ui-empty-title`,children:K(`chat.restoring.title`)}),(0,h.jsx)(`p`,{className:`ui-empty-desc`,children:K(`chat.restoring.desc`)})]}):(0,h.jsx)(h.Fragment,{children:(0,h.jsxs)(`div`,{className:`ui-empty-state chat-welcome`,children:[(0,h.jsx)(`div`,{className:`ui-empty-icon ui-empty-icon-lg welcome-icon`,children:(0,h.jsx)(ie,{size:36})}),(0,h.jsx)(`h2`,{className:`ui-empty-title`,children:K(`chat.select.title`)}),(0,h.jsx)(`p`,{className:`ui-empty-desc`,children:K(`chat.select.desc`)}),(0,h.jsx)(oe,{label:K(`chat.openChannelList`)})]})}),ot&&(0,h.jsx)(Ce,{title:K(`chat.joinChannel`),placeholder:K(`chat.join.placeholder`),confirmText:K(`chat.join.confirm`),validate:Jt,onConfirm:nn,onClose:()=>E.close(),isLoading:D,loadingText:K(`chat.join.joining`)}),tt.length>0&&(0,h.jsx)(Se,{onClose:()=>{D||(w(``),T([]))},children:(0,h.jsxs)(`div`,{className:`confirm-modal channel-conflict-modal`,onClick:e=>e.stopPropagation(),children:[(0,h.jsxs)(`div`,{className:`modal-header`,children:[(0,h.jsx)(`h3`,{children:K(`chat.conflict.title`)}),(0,h.jsx)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>{D||(w(``),T([]))},"aria-label":K(`common.close`),children:(0,h.jsx)(De,{size:18})})]}),(0,h.jsx)(`div`,{className:`channel-conflict-list`,children:tt.map(e=>(0,h.jsxs)(`button`,{type:`button`,className:`channel-conflict-option`,onClick:()=>void rn(e),disabled:D,children:[(0,h.jsx)(`span`,{className:`channel-conflict-title`,translate:`no`,children:v(e)}),(0,h.jsx)(`span`,{className:`channel-conflict-meta`,translate:`no`,children:_(e)}),(0,h.jsxs)(`span`,{className:`channel-conflict-meta`,children:[e.onlineCount?` · ${K(`chat.channel.onlineCount`,{count:e.onlineCount})}`:``,e.local?` · ${K(`chat.channel.localAlready`)}`:``]}),e.lastMessageAt&&(0,h.jsx)(`span`,{className:`channel-conflict-meta`,children:K(`chat.channel.recentActive`,{time:Rt(e.lastMessageAt)})})]},e.channelKey||e.fingerprint))})]})}),j&&(0,h.jsx)(Ce,{title:K(`chat.renameChannel`),placeholder:K(`chat.remark.placeholder`),defaultValue:j.remark||``,confirmText:K(`chat.remark.save`),onConfirm:fn,onClose:()=>{gt||M(null)},isLoading:gt,loadingText:K(`chat.remark.saving`),allowEmpty:!0,validate:e=>e.length>50?K(`chat.remark.tooLong`):``}),dt&&ft&&(0,h.jsx)(Te,{title:K(`chat.leaveChannel`),message:K(`chat.leaveConfirm`,{channel:v(ft)}),confirmText:K(lt?`chat.leaving`:`chat.leaveChannel`),onConfirm:()=>en(g(ft),void 0),danger:!0,onClose:()=>{k.close(),A(null)}}),I&&(0,h.jsx)(Se,{onClose:()=>L(null),children:(0,h.jsxs)(`div`,{className:`confirm-modal`,onClick:e=>e.stopPropagation(),children:[(0,h.jsxs)(`div`,{className:`modal-header`,children:[(0,h.jsx)(`h3`,{children:K(`chat.attachment.noSeedsTitle`)}),(0,h.jsx)(`button`,{type:`button`,className:`btn btn-icon`,onClick:()=>L(null),"aria-label":K(`common.close`),children:(0,h.jsx)(De,{size:18})})]}),(0,h.jsx)(`p`,{children:P[I.cid]?.message||K(`chat.attachment.noSeedsFallback`)}),(0,h.jsxs)(`div`,{className:`modal-actions`,children:[(0,h.jsx)(`button`,{type:`button`,className:`btn btn-secondary`,onClick:()=>L(null),children:K(`common.cancel`)}),(0,h.jsx)(`button`,{type:`button`,className:`btn btn-primary`,onClick:()=>Zt(I),disabled:P[I.cid]?.status===`checking`,children:P[I.cid]?.status===`checking`?K(`app.checking`):K(`chat.attachment.retryCheck`)})]})]})}),vt&&(0,h.jsx)(Oe,{item:vt,isBackendReady:G,getFileDownloadUrl:l.getFileDownloadUrl,onClose:()=>yt(null)}),pt&&b&&(0,h.jsx)(`div`,{className:`channel-detail-overlay`,onClick:()=>N(!1),children:(0,h.jsxs)(`div`,{className:`channel-detail-drawer`,onClick:e=>e.stopPropagation(),children:[(0,h.jsxs)(`div`,{className:`channel-detail-header`,children:[(0,h.jsx)(`h3`,{children:K(`chat.details.title`)}),(0,h.jsx)(`button`,{className:`btn btn-icon`,onClick:()=>N(!1),children:(0,h.jsx)(De,{size:18})})]}),(0,h.jsxs)(`div`,{className:`channel-detail-body`,children:[(0,h.jsxs)(`div`,{className:`channel-detail-section channel-members-section`,children:[(0,h.jsx)(`div`,{className:`channel-detail-label`,children:(0,h.jsx)(`span`,{children:K(`chat.details.members`,{count:St.length})})}),hn()]}),!B&&(0,h.jsx)(`div`,{className:`channel-detail-section`,children:(0,h.jsxs)(`label`,{className:`setting-switch`,children:[(0,h.jsx)(`span`,{children:K(`chat.details.showAddressSuffix`)}),(0,h.jsx)(`input`,{type:`checkbox`,checked:Tt,onChange:e=>Et(e.target.checked)})]})}),!B&&(0,h.jsxs)(`div`,{className:`channel-detail-section`,children:[(0,h.jsxs)(`div`,{className:`channel-detail-label`,children:[(0,h.jsx)(Ne,{size:14}),(0,h.jsx)(`span`,{children:K(`chat.details.channelId`)})]}),(0,h.jsx)(`div`,{className:`ui-meta-box channel-detail-value channel-detail-mono`,translate:`no`,children:_(b)})]}),(0,h.jsxs)(`div`,{className:`channel-detail-section`,children:[(0,h.jsxs)(`div`,{className:`channel-detail-label`,children:[(0,h.jsx)(i,{size:14}),(0,h.jsx)(`span`,{children:K(`chat.remark.placeholder`)})]}),(0,h.jsx)(`input`,{type:`text`,className:`input input-compact`,placeholder:K(`chat.remark.placeholder`),value:mt,onChange:e=>ht(e.target.value),onFocus:()=>ht(b.remark||``),onBlur:()=>dn(),onKeyDown:e=>{e.key===`Enter`&&e.currentTarget.blur()},maxLength:50})]}),(0,h.jsxs)(`div`,{className:`channel-detail-section`,children:[(0,h.jsxs)(`div`,{className:`channel-detail-label`,children:[(0,h.jsx)(Me,{size:14}),(0,h.jsx)(`span`,{children:K(`chat.channel.createdAt`)})]}),(0,h.jsx)(`div`,{className:`ui-meta-box channel-detail-value`,children:b.createdAt?It(b.createdAt):`-`})]})]}),!B&&(0,h.jsx)(`div`,{className:`channel-detail-footer`,children:(0,h.jsx)(`button`,{className:`btn btn-secondary btn-block`,onClick:()=>{N(!1),A(b),k.open()},children:K(`chat.leaveChannel`)})})]})})]})}var b=s(`/chat/`)({component:y});export{b as Route};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{W as e}from"./index-QxXZzOUL.js";var t=e(`log-out`,[[`path`,{d:`m16 17 5-5-5-5`,key:`1bji2h`}],[`path`,{d:`M21 12H9`,key:`dn1m92`}],[`path`,{d:`M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4`,key:`1uf3rs`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{W as e}from"./index-QxXZzOUL.js";var t=e(`play`,[[`path`,{d:`M5 5a2 2 0 0 1 3.008-1.728l11.997 6.998a2 2 0 0 1 .003 3.458l-12 7A2 2 0 0 1 5 19z`,key:`10ikf1`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{W as e}from"./index-QxXZzOUL.js";var t=e(`plus`,[[`path`,{d:`M5 12h14`,key:`1ays0h`}],[`path`,{d:`M12 5v14`,key:`s699le`}]]);export{t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{W as e}from"./index-QxXZzOUL.js";var t=e(`search`,[[`path`,{d:`m21 21-4.34-4.34`,key:`14j7rj`}],[`circle`,{cx:`11`,cy:`11`,r:`8`,key:`4ej97u`}]]);export{t};
|
|
@@ -1,3 +0,0 @@
|
|
|
1
|
-
import{n as e,o as t}from"./jsx-runtime-Bt-cYkS5.js";import{b as n}from"./index-QxXZzOUL.js";import{t as r}from"./channelApi-BwQU0-h1.js";var i=t(e(),1);function a(e=``,t=[]){let n=[e,...t];return[...new Set(n.filter(Boolean))]}function o(e=[]){return a(``,e).join(`
|
|
2
|
-
`)}function s(e,t){let n=new Set(e),r=new Set(t);return{subscribe:[...r].filter(e=>!n.has(e)),unsubscribe:[...n].filter(e=>!r.has(e))}}function c(e){return String(e.id||`${e.author||``}-${e.timestamp||``}-${e.content||``}`)}function l({isReady:e,enabled:t=!0,channelName:l=``,extraSubscribedChannelNames:u=[],peerId:d=``,waitForPeerId:f=!1,limit:p=100,reconnectBaseDelay:m=2500,acceptMessage:h,getMessageKey:g=c,onSyncError:_,onSocketEvent:v,onReconnect:y}){let[b,x]=(0,i.useState)([]),[S,C]=(0,i.useState)(!1),w=(0,i.useMemo)(()=>o(u),[u]),T=(0,i.useRef)(null),E=(0,i.useRef)(l),D=(0,i.useRef)(u),O=(0,i.useRef)(null),k=(0,i.useRef)(0),A=(0,i.useRef)(h),j=(0,i.useRef)(g),M=(0,i.useRef)(v),N=(0,i.useRef)(_),P=(0,i.useRef)(y),F=(0,i.useRef)(d),I=(0,i.useRef)(new Set);(0,i.useEffect)(()=>{D.current=w?w.split(`
|
|
3
|
-
`):[]},[w]),(0,i.useEffect)(()=>{A.current=h},[h]),(0,i.useEffect)(()=>{j.current=g},[g]),(0,i.useEffect)(()=>{M.current=v},[v]),(0,i.useEffect)(()=>{N.current=_},[_]),(0,i.useEffect)(()=>{P.current=y},[y]);let L=(0,i.useCallback)(e=>{let t=A.current;return t?e.filter(t):e},[]),R=(0,i.useCallback)((e,t,n=!0)=>{let r=[...e];for(let e of L(t)){let t=j.current(e);if(n){let n=r.findIndex(t=>t.pending&&t.author?.toLowerCase()===e.author?.toLowerCase()&&t.content===e.content);if(n!==-1){r[n]={...e,id:e.id||t};continue}}r.some(e=>j.current(e)===t)||r.push({...e,id:e.id||t})}return r},[L]),z=(0,i.useCallback)((e,t)=>{T.current?.readyState===WebSocket.OPEN&&T.current.send(JSON.stringify({event:e,data:t}))},[]),B=(0,i.useCallback)(e=>{let t=new Set(e.filter(Boolean)),n=s(I.current,t);for(let e of n.unsubscribe)z(`channel:unsubscribe`,{channel:e});for(let e of n.subscribe)z(`channel:subscribe`,{channel:e});I.current=t},[z]),V=(0,i.useCallback)(()=>a(E.current,D.current),[]),H=(0,i.useCallback)(async(t=E.current,n={})=>{if(!t||!e)return[];try{let e=L(await r.getChannelMessages(t,p));return x(t=>n.replace?e:R(t,e,!1)),e}catch(e){return n.replace&&x([]),await N.current?.(e),[]}},[L,e,p,R]);(0,i.useEffect)(()=>{F.current=d,d&&(z(`register`,{peerId:d}),f&&(B(V()),E.current&&H(E.current,{replace:!0})))},[V,d,B,H,f,z]);let U=(0,i.useCallback)(()=>{x([])},[]),W=(0,i.useCallback)(async({channelName:e=E.current,content:t,author:n,authorName:i,avatar:a,attachment:o,optimisticId:s})=>{let c=t.trim();if(!e||!c)return null;let l={id:s||`${n}-${Date.now()}-${Math.random().toString(36).slice(2)}`,author:n,authorName:i,avatar:a,content:c,timestamp:Date.now(),pending:!0,attachment:o};x(e=>[...e,l]);try{let t=await r.sendChannelMessage({channelName:e,content:c,author:n,authorName:i,avatar:a,attachment:o});return x(e=>e.map(e=>e.id===l.id?{...t.message,id:t.message.id||j.current(t.message)}:e)),t.message}catch(e){throw x(e=>e.filter(e=>e.id!==l.id)),e}},[]);return(0,i.useEffect)(()=>{E.current=l,!(!e||!t)&&(l&&H(l,{replace:!0}),(!f||F.current)&&B(V()))},[l,t,w,V,e,B,H,f]),(0,i.useEffect)(()=>{!e||!t||f&&!F.current||B(V())},[t,V,e,B,f]),(0,i.useEffect)(()=>{if(!e||!t){C(!1);return}let r=!1;k.current=0;async function i(){let e=new WebSocket(await n(`/ws`));if(r){e.close();return}e.onopen=()=>{C(!0),k.current=0,F.current&&e.send(JSON.stringify({event:`register`,data:{peerId:F.current}})),(!f||F.current)&&(I.current.clear(),B(V()),E.current&&H(E.current,{replace:!0}),P.current?.())},e.onmessage=e=>{try{let t=JSON.parse(e.data);M.current?.(t.event,t.data),t.event===`channel:message`&&t.data?.channel===E.current&&t.data?.message&&x(e=>R(e,[t.data.message]))}catch{}},e.onclose=()=>{if(C(!1),r)return;let e=k.current;if(e>=20)return;let t=Math.min(m*2**e,3e4);k.current=e+1,O.current=setTimeout(i,t)},e.onerror=()=>e.close(),T.current=e}return i(),()=>{r=!0,O.current&&clearTimeout(O.current),T.current?.close(),T.current=null,I.current.clear()}},[t,V,e,R,m,B,H,f]),{clearMessages:U,connected:S,messages:b,sendMessage:W,setMessages:x,syncMessages:H}}export{l as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{n as e,o as t,t as n}from"./jsx-runtime-Bt-cYkS5.js";import{t as r}from"./SidebarAccount-ClS-N0lq.js";import{G as i,U as a,W as o,Y as s,f as c,g as l,u}from"./index-QxXZzOUL.js";import{t as d}from"./channelApi-BwQU0-h1.js";import{t as f}from"./useChannelMessages-BgbYfF2c.js";var p=o(`spade`,[[`path`,{d:`M12 18v4`,key:`jadmvz`}],[`path`,{d:`M2 14.499a5.5 5.5 0 0 0 9.591 3.675.6.6 0 0 1 .818.001A5.5 5.5 0 0 0 22 14.5c0-2.29-1.5-4-3-5.5l-5.492-5.312a2 2 0 0 0-3-.02L5 8.999c-1.5 1.5-3 3.2-3 5.5`,key:`1aw2pz`}]]),m=o(`swords`,[[`polyline`,{points:`14.5 17.5 3 6 3 3 6 3 17.5 14.5`,key:`1hfsw2`}],[`line`,{x1:`13`,x2:`19`,y1:`19`,y2:`13`,key:`1vrmhu`}],[`line`,{x1:`16`,x2:`20`,y1:`16`,y2:`20`,key:`1bron3`}],[`line`,{x1:`19`,x2:`21`,y1:`21`,y2:`19`,key:`13pww6`}],[`polyline`,{points:`14.5 6.5 18 3 21 3 21 6 17.5 9.5`,key:`hbey2j`}],[`line`,{x1:`5`,x2:`9`,y1:`14`,y2:`18`,key:`1hf58s`}],[`line`,{x1:`7`,x2:`4`,y1:`17`,y2:`20`,key:`pidxm4`}],[`line`,{x1:`3`,x2:`5`,y1:`19`,y2:`21`,key:`1pehsh`}]]),h=n(),g=[{id:`gandengyan`,labelKey:`game.gandengyan.title`,href:`/game/gandengyan/`,icon:(0,h.jsx)(m,{size:16})},{id:`zhajinhua`,labelKey:`game.zhajinhua.title`,href:`/game/zhajinhua/`,icon:(0,h.jsx)(p,{size:16})}];function _({activeGame:e,closeSidebar:t}){let{t:n}=i();return(0,h.jsxs)(h.Fragment,{children:[(0,h.jsxs)(s,{to:`/`,className:`sidebar-header sidebar-header-link`,children:[(0,h.jsx)(a,{size:18}),(0,h.jsx)(`h1`,{children:`MOST PEOPLE`})]}),(0,h.jsx)(`nav`,{className:`sidebar-nav`,children:g.map(r=>(0,h.jsxs)(s,{to:r.href,className:`sidebar-nav-btn ${e===r.id?`active`:``}`,onClick:t,children:[r.icon,(0,h.jsx)(`span`,{children:n(r.labelKey)})]},r.id))}),(0,h.jsx)(r,{})]})}var v=t(e(),1),y=`game`,b=`mostbox.game.event`,x=[`gandengyan`,`zhajinhua`],S=`ABCDEFGHJKLMNPQRSTUVWXYZ23456789`;function C(e){let t=String(e||``).trim().toLowerCase();return x.includes(t)?t:``}function w(e){return String(e||``).trim().toUpperCase().replace(/[^A-Z0-9]/g,``).slice(0,8)}function T(e){return/^[A-Z0-9]{4,8}$/.test(String(e||``))}function E(){let e=``;for(let t=0;t<6;t++)e+=S[L(32)];return e}function D(e,t){let n=C(e),r=w(t);return!n||!T(r)?``:`game.${n}.${r.toLowerCase()}`}function O({gameId:e,roomCode:t,event:n,payload:r}){let i=C(e);return{kind:b,version:1,gameId:i,roomCode:w(t),event:String(n||``),eventId:I(i||`game`),payload:r||{}}}function k(e,t={}){try{let n=JSON.parse(String(e||``));if(!n||n.kind!==`mostbox.game.event`||n.version!==1||typeof n.event!=`string`||typeof n.eventId!=`string`)return null;let r=C(n.gameId),i=w(n.roomCode);return!r||!T(i)||t.gameId&&r!==C(t.gameId)||t.roomCode&&i!==w(t.roomCode)?null:{...n,gameId:r,roomCode:i,payload:n.payload&&typeof n.payload==`object`?n.payload:{}}}catch{return null}}function A(e=[],t={}){let n=[],r=new Map,i=``;for(let a of F(e)){let e=k(a.content,t);if(e){if(e.event===`room:create`){let t=M(e.payload?.player,a.author);if(!t)continue;i||=t.address,P(n,r,t);continue}if(e.event===`player:join`){let t=M(e.payload?.player,a.author);t&&P(n,r,t);continue}if(e.event===`player:leave`){let t=N(e.payload?.player?.address||a.author);if(t){let e=n.findIndex(e=>e.address===t);e!==-1&&(n.splice(e,1),r.delete(t))}}}}return{gameId:C(t.gameId),roomCode:w(t.roomCode),hostAddress:i,players:n}}function j(e=[],t={}){let n=null;for(let r of F(e)){let e=k(r.content,t);if(!e||e.event!==`room:state`)continue;let i=Number(e.payload?.seq||0);(!n||i>=Number(n.payload?.seq||0))&&(n=e)}return n}function M(e,t){if(!e||typeof e!=`object`)return null;let n=N(e.address||t);return!n||N(t)!==n?null:{address:n,name:String(e.name||``).trim().slice(0,50)||z(n),publicKey:String(e.publicKey||``).trim(),joinedAt:Number(e.joinedAt||Date.now())}}function N(e){let t=String(e||``).trim();return/^0x[a-fA-F0-9]{40}$/.test(t)?t.toLowerCase():``}function P(e,t,n){let r=t.get(n.address);if(r){Object.assign(r,n);return}e.push(n),t.set(n.address,n)}function F(e){return[...e].sort((e,t)=>Number(e.timestamp||0)-Number(t.timestamp||0))}function I(e){return`${e}_${Date.now()}_${R(4)}`}function L(e){if(globalThis.crypto?.getRandomValues){let t=new Uint32Array(1);return globalThis.crypto.getRandomValues(t),t[0]%e}return Math.floor(Math.random()*e)}function R(e){let t=new Uint8Array(e);if(globalThis.crypto?.getRandomValues)globalThis.crypto.getRandomValues(t);else for(let e=0;e<t.length;e++)t[e]=Math.floor(Math.random()*256);return[...t].map(e=>e.toString(16).padStart(2,`0`)).join(``)}function z(e){return e?`${e.slice(0,6)}...${e.slice(-4)}`:``}function B({gameId:e,onError:t,getPlayerPayload:n}){let r=c(e=>e.hasBackend),i=c(e=>e.checkBackend),a=c(e=>e.openConnectModal),o=u(e=>e.identity),s=u(e=>e.openLoginModal),[p,m]=(0,v.useState)(``),[h,g]=(0,v.useState)(``),[_,b]=(0,v.useState)(!1),x=r===!0,S=(0,v.useCallback)(async(e,n)=>{let r=await l(e,n);t&&t(r)},[t]),C=(0,v.useCallback)(t=>!!k(t.content,{gameId:e,roomCode:p}),[e,p]),T=(0,v.useCallback)(t=>{let n=k(t.content,{gameId:e,roomCode:p});return n?`${t.author}-${n.eventId}`:`${t.author}-${t.timestamp}-${t.content}`},[e,p]),{clearMessages:A,connected:j,messages:M,sendMessage:N,syncMessages:P}=f({isReady:x,enabled:!!o,channelName:h,limit:500,acceptMessage:C,getMessageKey:T,onSyncError:e=>S(e,`无法读取房间记录`)}),F=(0,v.useMemo)(()=>M.map(t=>({message:t,event:k(t.content,{gameId:e,roomCode:p})})).filter(e=>e.event),[e,M,p]),I=(0,v.useCallback)(()=>o?x?!0:(a(),!1):(s(),!1),[x,a,s,o]);(0,v.useEffect)(()=>{r===null&&i()},[i,r]);let L=(0,v.useCallback)(async(r,i=!1)=>{if(!I()||!o)return!1;let a=i?E():w(r),s=D(e,a);if(!s)return t&&t(`请输入 4-8 位房间码`),!1;b(!0);try{let t=await d.createChannel(s,y);if(t.conflict)throw Error(`房间码存在多个候选,请换一个房间码`);let r=t.channelKey||t.key||s;return await V(r,o,e,a,i?`room:create`:`player:join`,{player:n?n(o):H(o)}),m(a),g(r),A(),!0}catch(e){return await S(e,i?`创建房间失败`:`进入房间失败`),!1}finally{b(!1)}},[I,e,n,t,S,A,o]);return{channelName:h,connected:j,createRoom:(0,v.useCallback)(()=>L(``,!0),[L]),ensureReady:I,isBackendReady:x,joinRoom:(0,v.useCallback)(e=>L(e),[L]),joining:_,messages:M,roomCode:p,roomEvents:F,sendRoomEvent:(0,v.useCallback)(async(t,n={})=>{if(!I()||!o||!h||!p)return!1;let r=O({gameId:e,roomCode:p,event:t,payload:n}),i=JSON.stringify(r);try{return await N({channelName:h,content:i,author:o.address,authorName:U(o),optimisticId:`${o.address}-${r.eventId}`}),!0}catch(e){return await S(e,`发送房间事件失败`),!1}},[h,I,e,S,p,N,o]),setRoomCode:m,syncMessages:P,userIdentity:o}}async function V(e,t,n,r,i,a){let o=O({gameId:n,roomCode:r,event:i,payload:a});await d.sendChannelMessage({channelName:e,content:JSON.stringify(o),author:t.address,authorName:U(t)})}function H(e){return{address:e.address,name:U(e),publicKey:``,joinedAt:Date.now()}}function U(e){return e.displayName||e.username}export{p as a,_ as i,A as n,j as r,B as t};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{W as e}from"./index-QxXZzOUL.js";var t=e(`external-link`,[[`path`,{d:`M15 3h6v6`,key:`1q9fwt`}],[`path`,{d:`M10 14 21 3`,key:`gplh6r`}],[`path`,{d:`M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6`,key:`a6xqqp`}]]),n=e(`wallet`,[[`path`,{d:`M19 7V4a1 1 0 0 0-1-1H5a2 2 0 0 0 0 4h15a1 1 0 0 1 1 1v4h-3a2 2 0 0 0 0 4h3a1 1 0 0 0 1-1v-2a1 1 0 0 0-1-1`,key:`18etb6`}],[`path`,{d:`M3 5v14a2 2 0 0 0 2 2h15a1 1 0 0 0 1-1v-4`,key:`xoc0q4`}]]);export{t as n,n as t};
|