From 1e2c271dc803dcda861b97b5243342fdee6da89f Mon Sep 17 00:00:00 2001 From: hamster1963 <1410514192@qq.com> Date: Fri, 3 Jan 2025 09:38:19 +0800 Subject: [PATCH] feat: store position --- bun.lockb | Bin 185943 -> 185953 bytes package.json | 6 +++--- src/components/ServerCard.tsx | 9 +++++++-- src/components/ServerCardInline.tsx | 9 +++++++-- src/components/ServerDetailOverview.tsx | 20 +++++++++++++++++++- 5 files changed, 36 insertions(+), 8 deletions(-) diff --git a/bun.lockb b/bun.lockb index f707626f80cd657bfcce4e60a3453f2f931ba53f..cb015a0e94052aa764e8b8aa00abd10b1083eac4 100755 GIT binary patch delta 10687 zcmeHNeOOgh)<64jFLLk$MG&r61QG;6u6$pv7rdY(3gQPTnhAOpL=Y4KO-Ka%Xe={7 zwzZo+EG^U0rco;*vqCG&GNr81#$@bm8ZD=E#+=6wrJPzIj+=_nO&Q|bTuN4>o+(1oTf*ZEp zDM`J-4Ie2a2Y!|%Neb|ghMtgfD|-9mu*3T=19ET6f!y1C4VPyN zyK{lOJs$|W4UOp_xZ?I4F`#jbB>95B2)-9E69zax2*?B09muC~E>lduJy!&D6sE}? zjRpn*J;sS?uLE-Zdx1P01;D;Qf9Um*XtI|td5DhoifHhkBsyN6C_0=3azh7zY8-+6 z!8ZZJfKDKf^9W5I0vrJT`dz}Ic3?30cQo7r{HU@}^$&C(r!7HF)Yk`>W z24HVAF9rGm%Qg8FjUNu=aT@~UdVPU>{$4;ee$zz1Q$VhFNaOba`NBP=$sYvr{)OM- z+sXy!3mraEN`>e#1F z5@(q@y0oH7UIHmOuwPggz@+~l~u>oIxEU0XH`k1v#PqdJLEi;BkmQL4CIE}fP4i?%ID8? zA|4Z9i0h>Rxg#Gh7V8}bp4WjVkULgfU0ym5PW7p~F>Vd+z-a;c*$jTc^Tt~T)(6xV zA`OcYf`P+;+>vLOib6bBFA8ln_`tzvH~;~kL3MG(qGE)*D;jvmBajCHyTJh8gWjNR z-Lh=b3Xu;#Ef@K57RY-a)o}Dmk>ADDvz+D5qT*EWJZ_P6LigYXy`1zi)5}V)8ofI7 zs?p0?FXM|^mFeZFm7%Np^eWSvTtbA>sK#NegDw+3w=M(%X&Y`l;_#;`^B;w z){4CR?qPv#Kpx$_z&^lDKpwP}n!Ez2Zs5QGY+Q}QG(i-Q=Sv8X*O4E6phpBbxo1}o zW~W{uvC4FtB;}()qD?7Q@+xh~b{GfaaX6dq8_`rE*G%N|mH|nDL;kAy(rwaOrBlC+X!e4&|8EYM@OaR>d<-l6XeQv~_9< zZOL_zwe&K6zo53U4&%gOl9Wx;#@fkl+5-ME_;GaKSi3R`&&X`_BeXThs??@S(pbS^ z#53S#(2l!Py)wjnpoF0|fh*IMlt?^;3tim(;KqZKX;YZh_yxF;G%dt#>^A}yRH_Qp z7?pYpRHjPFc*2cWsXS0)Rq7c~V`xW$oxDz4@*K+Yk&*I7Laq09LWC18vsA^1p= z)(9)fr?rzE3WW?YgL@fuDF!eT)mRM5)uN{~fSREyv_@GKg0W@_4l|tvjz>YJ8Q^w+ zo1$_g(W(UCEP#;lC?r~qJHe@|p~zS)zFvsOm=pu3Jaxe5Kw)|bcI5|9+Ke#m)Cqi{ z>Id4DZJ;Kq9eLhd1&0LWLkC-x97K~Zl~HwMBe+;_o-_k<_olXK4rBZzNxFxoO|u)< zfVx|yzIDkmP&;?2vW=h$RO$k#Qk9xI8BZpa+6zjw24bcqs;mK2u}XadYPw2|xLc>T zfD%1AU9!Tdx(CgmCeyUSR4?ots6rlO0`B> zX>EyvtfDRWZKId*doQ)kaVUQ&fv&pp2$d2!N369(Gf;?Az+sc(8J=!6ZsZ&<8FG}? zmO2#gQb|fyTX{;RgBwZrrQ4PJLGgmZu7`Yiht`%klwM`JC0@3<^fF{?Agh8N7AefC zbb=eETT{|-Zb}4aqjg|43wZY8f!+dPNzBV@dnhq@WY%u{C=Wml>}aoZ?H zc>aRM5lT=yXTkB98ENYsRwW!KvLtZcDmM$E=Wc&U2(z;QhTw_*Gjxbf=jvla;Ny6_}dR)UKcTBzsuz-5B#!YvpTggJ%x;r6Q> z$|msB(2Cs*8_gAPo+J9&*>u68Kbz-PF0(`qCMMK4y6 zY@jVQ4swECu5l>67rOMqt;$4j+#89KL00*(h4f0vFy%0We3BmOBnK}Np+TrKQ@p_N z_+rNJ?=5hAUDZdDatWO1#-lL~Cqg_^kqc`<4TqM%kYC*kjo^RUWP_Zt$3`!i*#s!OM-?%n<}kJNS&U~e7~Fqj<-44lSA-ytkp#BLn1ly3-}ItZ#zrNSHd(}~M!L19xVu`6$b z;?Cl!jO6XsC{m#dZ7o58gA>*s1%-zQdVUK^?P(m`gemdzC$niwgTuI0@FF53@mT@8kYT1s=1Jgq8L9^*LaA+; zL-`Uio`?oYoL1v>9CXzut@0))KAM_UR#M1+UuT_qj7glwm%;dIvW|7o@rn5^7Zcywl8k$G**5s1%LKge%Rb)zK=)G ze09y5wmHULJMT0;64l-}#+gxvq3;hE`kGe^`NTKC1GoIkFZTJ!eThjS+X z*rWTWuYI1iJ8SYmM=5)wIVOt?@F7RpgnVKqq0JTfPI~nt@nqOYNuu_t) zLgv%lE0@eAh=zfEJdJo68}ET47j~7|AG3&oohc;!$h)j{HW|`fc@LRF_^%&f&p1gp zlM!YVgq54s-wCKPZeg!#R?+_kuVZUwksog`HBq$df1!4=?z71r(QYS8S;uUW<*)w% zI;*_Y!rv6|fkv~tOUT@trc_)#b75(DktDodkWWfH=&G_nyBi!dzyMNukvepJcH~-fZn<(nO+IuPY>h*w~#{ zNG?%@CbshmISNtzRkYm4c3nkFJnOtlqDeN3zD7dHCYF1RL@U{NBJlAyu%>IoM7A<# z57|UoA6bvz<19`FTwq`I1_ZDn{(uA))Ip|`9JatuHYqvjl4L>mgY0w{*~HR4<-Y8l zPU4I9r#msU0B>E*YdA~qCTF@^k6b4ux7rduu;;to)|P8X;oT#V^2l2a-01!7+HW`4 zbL?eI+^oNA-uCLO^aDLUc|j&|7W_vY4q_QR3Yn~+JM{FI+&i;g$vhL$^#iUKuj-Yv zI3MUOW2X@x5yAvLgpacZ9?-3Kx{$<9xAt*i~K@d(%;HX%^t3cKFE!0BqJ@J@y67JT{4$l<(g`ynaFas%S%pR<2%UUTNhewy7NEC zi0!ONk#osKc0`d)N&1Dui7spYHu-mJw!_C*tRBugzue-UvPf{(pjyR<$Y?Vu)Eouy zDsbuEoOm~N2_)@oU)P^!g;p^x6Th7GHyao6)v{H;8F@42pBc$d9atq3Yts%I{)f+dY|7=eeGcZ3iL0rRmo;da7 z>LUL|VoQui^8A~0xGBWi_V=slb(6oEh1`eN(fa+kOb@vQl@sQiRtrx=Dp^&6s zBYv9^?)B4%%y-=i`bDEP;-!@Mt4Bw=Tbfvm8Me1h6h2Hm_4el9U2N*>Rye?%P#`DS zeOyn!+4T9kEpG6&kFL4({MpN9xx}pB4V*gl_ES6J_t^{tJ0U_LNyk`RKNvd0asX!i zQX=rmmAJe^$;ECxU)BJHB>gfXcKGAdn>~FH72S}2FVa0A^X#TSEIR0J8P5)L+xk64 zX-n$%M9+$E-3p5s34#v~GBd!eU$pEPSz1u#hww?}LKvDtBHuUnxnYvVo)VY^agKh_x}8_oJfY<#c! z{L^pb&2%eIVNGeW-%vGx`gKg}U)OK%9gy`ex0Ze*^ueXZ;3dyZqVARrtfD`>(QkB; z$9(+S<_)jZxfQyx%}^j=Y%hm2_IZCfniMb+EStRN6^naF&)IBA5}u}EEDd5Py_^J? zz!q?>fUOQjNmQ`6IoH7Ak^v8~91btC)`7C0XCgnxI9LN0y~Q#@P)|ph*$VC(_EiYr zJPQp+J@pKg$I2chY(^*s^JQ&ToHOoVr$b>rhE=3MF^>(o16(0HZ2?!o>N&TE?E;wf zYv6Z!{OyITJw+GP^G&=3?`+;@om@e`M_%0WlhrtM^bYMLfg_Jf5Jy&ojqUSN2z3SCfUtA!f-Cw#wLWp z!4x(ZoLRp%t{BvR=8GF=j*|(FUFzAcoqZMt&-DA@$2O+Fd+hZofv}f^qZx`ujZE}_ z@9|2qFOFvVJ+X6t=zCd@nSO#|qBz5~v-t=iwh9i+@Ez&P-VB$=l4jO*AUqdQ_3w{` z&~J}VtQvTI*gdNh*x<87%L=w;AmXX6nu&bO{yb2Am2_w8BQPTqYmb1Z`i<|7&?#H4 ztn3U!=QuI*5iBMWnWkR_f8Q;{)OA^SJQVn3u@8RCoRKhep1m9?M|;1I*LG&i$emjq z=q_^0-{PB*>B>vaeR= z!FrkNm*TTeICf8pN%?C}5{;LVfvi3jr~B0`DDGA(S01>?Vg?#)T!b{?$SCo0E3@LH6MrM4~8f5tLh} z(;So_7s#?ZLw{-avv{KVCFwV9fkmt%8Dae&+y|MLP4=BKbh&tGt-tx1|JV_qrK`p; zb+YjZmIO)vI3Z!fth&~xo~f6~N%ZNCTGT&Z$a<%c-RB=&rS?g%;0-;thANvpJL%_r z&HASdKtI^{-tKgM7(bTpDsh%1OJbaq%DN9l=8R?$Ls3Py`qh){K~Mf#;y7D76v=eD zdGAo!gA544yWidre~s5{-GED9Us(M?%IEQZ+;BXvHE{|f``J|-#`@j%p$``%$*X|H zrpkdyw|#!98n=Bssx1+$J{47{e<88ug{5Ubc!hteK0j3j^)YTD8`wwCBkCE)&r@x= z&N_M5@wm|8f!QzpkTvkEobK+b9!50fLo7E9%KE1qGy7aqe1iQhxs}y}fC=yQp5S`= zry!fmv2T2KcGgt4-WhfT3Q4y;BdKoP_RyoYoMJ)4U|atjrEPQ1pm!tBj&s}gV-ui2 zLfBlcr+=*Rg6)yYJkvj(HsFng)sldhOvBjIP)N#uSbQdS;=5IBz=rLI-3s~#Ae&w~ zReoj0q^<6jmF(}_w*JLP#;5HEp1kMzTDQVp7V3ZxZOjhnr+;x$F*do|vg+JbZau?V zR_VZ_xXr=QQB z^PM?!=FFLMW`>!2@fDv>Uh!FPihjM+|T>(~s^MeO+%51`5Ihf>8IBO%RNr5@-NufB7NLND?JGJ>$qidAnz5{-(i#5QLg| z&@j*@A_yU%eKI(128{;x1MLBN#UTj2LGNS=LKNt6U<2rH(2nWZ49w&jK|?_sWJ8z8 z+ReiSp*v7omLT}BT2Oz`c+jq(-9dvvKgbpY3G|Rk+t7|_(dyR&v-XQYnYFV)nYB48 zb&lkE^FdjC4k+~2)(rr|1h zYd25l<81)#j_NAVAkf)rd7g^XK$+iSL77}vP&WQM(^UU~vUX=cncN{2?*wHNC#&Uk zpsal3g6o zj!KIb%@^?Rpjy6DrF%hHToo1-l_!=|3KQgL?@&W~32!|DwZ5p00gVL>lgE08N;~H9 zSlc2m^bW1vQp%ARWLQt8GTwGhX?|5zQK2xe$hnC1{29u9P~SR-XIxQbbyZ1erBGD4 zu)3(iDV&9U%;KWT@`|D&LAVS#Hr_D{xP|!z3o6(UH2N9pVVif|%jI0)J-M4tXzlKW zJkTG>uS|pq#rboU-i0L~fxnmuh&T)dPq1Lq!t`*a#|%$`%#D-2@e^;kzi0 z02QHttwFz)Px)rszF*1X;cHM99~VGb>-SXZSk2?RsInlxG{3OO49xu2Qy%LVS*xX! zmS$R7X<4IXhn6*3I%{csP0cbbJ=HXHWuKO1T6Ss6f|~ZVbz1&v>8Y(B+Ipd_2U=S1 zN1C!YJN_7-_FGT#xcrk!kAgDq?g0$}-2}>N~b*XAW6ex?A5Kxv! z-tt=iIC6UL9)D_=M?@w`6K#Sp2^E4|pJpYyE4*kf%f-q7ZlxHV9&PIU;}^8%3StiD$LHw?+`k#=bf3b{sRNeht6iTVKS>?7D{q{-l52%Dq`D@N2h z$szgW2m)pRQPL7;B{{NlvO`*nGB^$P5mTBDV1nX|$XwNZQZ+brUiw<4e*(=`#98ML zp=ag>QO*R~4m3qUB-JYU;V=N7F*l@I^)CSN>G&78F>>?hbRDK`oYL8^z+r4DcInUH z_-N{L({y8*WKD0ov<2J*-YXn)9cU2mHPR|&!jo*8^okAZfRcbb<@y9G5oFsmhdzFy zAUrG&nr7Fp1ox1_eeNo=B5%ekW$VCASGX(SN)&F)Wb8@`w+9?*XQk^f#$u(Y8eEaW zeFko(!r30uxM#p|bvIpQ6Q*hg>;^ZPwUBgJHIRfXLSV8(ZkpvF^>XVhhko~T7O(BI z({*67;wt$0gA$A2EZ;*ib{z! zYGsw+n7(w`S?nOoR@^cpNxm1zw!W3A+6**4!HeT6dC%tKiVW9BQv>}!`w zz%k`W#a>ovn~IR}NS_NpY`A*4yrRJOVOs++(u0-Iij@y6;vNFR zL@ftme#Xdw_5raGC_9t%4G?d~{5%{7Lxy-@tOgna#KY?(kQ$WG;=Nc9tf=#6lTR{b z+hXiYD8qID!|IEz(kDRJ1o%QrqUBad%yse|29{(%0>}ahNvWq1j|iJ9Mb5e+&JF#S|HU!F!f^~S2ucb8CuKD52ky8VSYez zVtrd8+m<<`BPe4dfPMY3N7iUwBuQ5NRG>+6O|e~XTh0~-#x;YRp>W1pwneeB1>mw6 zC%plV8H$95Z^b$u3SH!uVkA2d*Y*o=*iO*$b8t#a{R8zF4qFPyG`XqPq2J6ga^@^J zW_5tvQf?)Fva`-XO64Z}ZfC#JA65v$RMaDH;G9*mv)&=;S3xhzFjB2+|dHzlgbHQBb(K@w#rez6eZ_ba&-zkOueDu;g7 z8hA?{w92l36&%)QaJO7sR)bcyQQ_Lxrt84qJO;7&walT6D_6LhRp~lck+4py9O2^D zySQ^MF6wbj?h$Y}Z81w++zl5u@E2Nb9XOo3Aoq@o^Lj!n%W-k*HIAH-ZR;HRsHfQ3 zb3^Ty`+HTw@7UDHnrd&mvF;<>&5|I23VL}S8X zax#pV8{0l3sl+4AWTq*f6EjI_obx$ZO+df-f~+DCSa^Y4GLciz^ z;z#=jgY=;h?PMm&qzi*YgOr&e2qrXdrWd=22Abh1hSNhGBoOu6I?y#I-kR8*Oq$^< z4s+L@xI>EX)x~X~FZ$kBm#a%|-7n+Cta}yQZTE*<^fe6Js9o~D^hQC(5&z>m zMUrg7e}sP|&17B}NT>TjPP<)xC41knzr^{x&*aRC+-#a00J+8VBK*T$n4-CGJ*{O9 z-Aua$iJA*tzG)jydw7Upq&u~Eh$%+x9^Bg8rSU+I(MK`u$)*%j5>{lo(nB0B4aH{4 z&Qp!_6rlcHzz8}vObn(;IjQc~Cl*6#j9#3ne{O^z#M5u}VuV^xf2SAw zk)iZ!y%?=czI!fz;8`^yekc*6&9HW>Zdg5KXoP;o8JKN0B{8#e=uCu&*2&#-BqA)H z_r}nTYA6WH0+(#(!0Xf`jGU#-K0k~KHDg>V zemv?sE9d@Iqg8v7IGFg4%mG`DG>8PTYQkRxf;yo*#py9Gq}=@+t?C|6JJ=G?X^|+S zr@Er-|1y6J)qFdli zx&Z=61R2_KsUXd*QRj?M^e_KAGjN zd6Xs^p<8 zciSD`A8-qFrKgw;v2;(m7(_cFM7>da0X284nRM~3akJgRd9;3z7&K6Ep!N>Z^3{eN z-9xkg>6X%-V&4D0E^^tgC(7=c23pn=)@V;D19CokbNj}9OWXn?-3|c~P7g4WLeKUT z6UcZ9ssg}j$-6_ z+R|GL@=Rst7z?dsMf+%G6!PgkYP14g9&I4 zxQm-^TJ-}T+@+o*aO6=m7>wGBZram{o1%{dejt+NNhT$SchdS8F;{Fap(kU+Fyoea z{Ex6nV?WHx@4Am2r3Uab$qwq#3+I9@bZjpeXrl9gjM{r`S)ZP>U*0r(v`BF5QqFc~ z>F;~NGVNjZnN1n*oY_Am4EiiMnjvWv&m_cL#2;qi2zl*+Hve$+yV=heZbC4XpW)8Z z1#lsj3Pz~z8Yb&tte8i3Q=i_joO?C6CniFBw*9oB_npBHH%QRIMv0mw^oic^r!s2> za+vaq5yg!4wh<9t-GS9yl`uEM=vx^<|DV!#CSxS_6Ga4Z)*8_d&^cI;szhDxkFtDe)ER zVG-_*un^td@kRRH9ba4eqLt#sAo^inas1DYF9Y$Vllx&7e`1n?qTmQY_{kY^c{eWc z9`7=jGZ)c~CNZ4+mhMK38?_hUC+3R{f2`V*hjSN; zjAZ8ccWM9r@WCb8!3d$vW(3Hx{$ik-=8;;OYp>CBK6Si4F){6{t|S`wfMK*I38(vd z8j*aj7V<2$n_bHVDWuLMaqWMwxRVY#CRq%Ww7&TYp!PzyCc^=prN2SZe^9M1W1S3g zDd(Du+H-&9!HK(G6$97;k;>DXJLTTtG)AO|(?!u8p+C0znLLsGg7CAJz(U$S0B-$X zTnDL_O$?lpw36QuYZopHo;eY)ydj4wgEgm^QUvX*fRv2|OIo%(Un7#!Xyb=m)V>?Y zJ~V?a4Nj;~+N79pAO8JHT459CSbo^HoAwO>Xb{t3&(HtBoX1v`WRt~|nk<;9-#|o; zgT@U+7Ts%CSF#f=*|o%R`qV%K(>}) zw6cFH0?IaSAPw|G$Pwj?6XdDX+@Kw-srK>FVc~Dty|0QH?xxCNL=`?na|c0K`-Wn6 zNShQ88T7qdSUCt7aGkc9$!XtUY&9mm_4}&@Q{8gs=?Mr}?t4a3%)0NPN2xhOBL+ja z_8rKn?Oh|@iN8A9t=pT9g#Zbm^O&6WmBdclFU!XnzT2k5jfK^ef?K3ix(x!BoG1DB zS)X2OpfMYFeC!s`zP#AF`+VuGSrdQbu31X|%5-a=YGj_iaOAm%Uv# { + sessionStorage.setItem("fromMainPage", "true") + navigate(`/server/${serverInfo.id}`) + } + const showFlag = true const customBackgroundImage = @@ -46,7 +51,7 @@ export default function ServerCard({ now, serverInfo }: { now: number; serverInf "bg-card/70": customBackgroundImage, }, )} - onClick={() => navigate(`/server/${serverInfo.id}`)} + onClick={cardClick} >
navigate(`/server/${serverInfo.id}`, { replace: true })} + onClick={cardClick} >
{ + sessionStorage.setItem("fromMainPage", "true") + navigate(`/server/${serverInfo.id}`) + } + const showFlag = true const customBackgroundImage = @@ -37,7 +42,7 @@ export default function ServerCardInline({ now, serverInfo }: { now: number; ser "bg-card/70": customBackgroundImage, }, )} - onClick={() => navigate(`/server/${serverInfo.id}`)} + onClick={cardClick} >
@@ -121,7 +126,7 @@ export default function ServerCardInline({ now, serverInfo }: { now: number; ser "bg-card/70": customBackgroundImage, }, )} - onClick={() => navigate(`/server/${serverInfo.id}`)} + onClick={cardClick} >
diff --git a/src/components/ServerDetailOverview.tsx b/src/components/ServerDetailOverview.tsx index 8b3966a..facc583 100644 --- a/src/components/ServerDetailOverview.tsx +++ b/src/components/ServerDetailOverview.tsx @@ -7,6 +7,7 @@ import { useWebSocketContext } from "@/hooks/use-websocket-context" import { formatBytes } from "@/lib/format" import { cn, formatNezhaInfo } from "@/lib/utils" import { NezhaWebsocketResponse } from "@/types/nezha-api" +import { useEffect, useState } from "react" import { useTranslation } from "react-i18next" import { useNavigate } from "react-router-dom" @@ -16,12 +17,29 @@ export default function ServerDetailOverview({ server_id }: { server_id: string const { t } = useTranslation() const navigate = useNavigate() + const [hasHistory, setHasHistory] = useState(false) + + useEffect(() => { + const previousPath = sessionStorage.getItem("fromMainPage") + if (previousPath) { + setHasHistory(true) + } + }, []) + const { lastMessage, connected } = useWebSocketContext() if (!connected && !lastMessage) { return } + const linkClick = () => { + if (hasHistory) { + navigate(-1) + } else { + navigate("/") + } + } + const nezhaWsData = lastMessage ? (JSON.parse(lastMessage.data) as NezhaWebsocketResponse) : null if (!nezhaWsData) { @@ -66,7 +84,7 @@ export default function ServerDetailOverview({ server_id }: { server_id: string })} >
navigate("/")} + onClick={linkClick} className="flex flex-none cursor-pointer font-semibold leading-none items-center break-all tracking-tight gap-1 text-xl server-name" >