From 93ee012feea6632ad610139bf0db94df66cd1380 Mon Sep 17 00:00:00 2001 From: Vomitblood Date: Tue, 6 Aug 2024 00:14:02 +0800 Subject: [PATCH] zustand store for paths --- bun.lockb | Bin 169198 -> 170480 bytes package.json | 4 +- src-tauri/tauri.conf.json | 68 ++---------- src/components/FooterBar/FooterBar.tsx | 0 src/components/Generic/FloatingDialog.tsx | 26 ++--- src/components/Generic/LoadingScreen.tsx | 25 +++++ .../HeaderBar/Settings/Settings.tsx | 20 ++++ src/lib/path.ts | 40 +++++++ src/lib/store/jotai/loading.ts | 3 + src/lib/store/zustand/path.ts | 14 +++ src/pages/index.tsx | 102 +++--------------- src/pages/testing.tsx | 22 ++-- 12 files changed, 153 insertions(+), 171 deletions(-) create mode 100644 src/components/FooterBar/FooterBar.tsx create mode 100644 src/components/Generic/LoadingScreen.tsx create mode 100644 src/lib/path.ts create mode 100644 src/lib/store/jotai/loading.ts create mode 100644 src/lib/store/zustand/path.ts diff --git a/bun.lockb b/bun.lockb index d4f8a20f90e9bf6c33bf4be97d3bbfd87cf3c313..4a446f30c57f48500a45a65b363f70b7414d25d7 100755 GIT binary patch delta 34048 zcmeI5d3;S*_y6xXa>)%b4@rb1<{%M462e8bic4##v8Eu18bV@74T-9!)zWIW+N7nb z13IWqh8k*Wi_%F4Qc*h6mTGBh_IhNRJ zr${kRbdbjrfxNgwPZaZb!r?!2=q6|w{BuHcNz5Z54NZnth7N^Rg!YC?gMNp;U&7|I zvqonOp`j+oOOhW84S{Y9w)tpyF)VXjR`$@WEKfd6DExe=lpC8ic3j3Vk7vlltRcn6 z<#;?#hNw|S_1sb8vePoqyAeqFm!V~#Pdj`e##DpHIm@o)6e7MQ6SCx8D z@nb4f+Os+^E+eZJ%0%y>(zc!R$tRf?Th`;L;PK?&ARL|6&_Bvj-_9QrYoHuL6Eo`&@v#speZCtiCa;4^z2~6P#Dw&$aib@td){Iu zM8UrVm3m8{V%o^GtZ|dadU8F#(!0_?S2Cmza?-|(#yron^sF?n7%CNKM%o4qgUXt zs5Cf_hUx#jiZM1V0Tn}+L&dOZ@_Xw@Y>=`k7+>o@@PQ^=yORbEq%Y&ezaf>54fdgwB9UPmF@fm}X?9O_-3D zHm*>5$l%XRR0 zR55R*-1?0@9(>9x1!dIoPA1rNK2+w?ekh%tSEGsD(|Z~@a}Qn|jcaO;SQJ$Jc$@Of zro3mN(qVbfvQXX3E;k`#%!IVz9*>L^W|#DIPO=NMO;XFfb-J%kw(T1}IxRapeV8ZH zsXsg|D|p^9BA{{!rwe9XSsE@^vSB?xB-{KC<$cnSNU|k!#;01NGc$M7Lwsv!+Z?Q)?Gc9{$ z+&$?zztQWmE`D@qXgixPboiIy%aT7jeUfd?hd%*Y#-o}Ni?^z3))ZG&3! zaYM5wWQ+gW}GcchYvK zlVjl;UdhbJJ2)00_-kp?_F&;54Q&y0thovvqlNZ$0o?BUt zWvk$&V%r{eLrb7#;D<{POdC4#r*3wB9jF9>O?TOoDA6f5tEU|-D)zD)uG`(FLGUta zr^y!weuDZWDor6F4Mw9t0($}#N<)3{vZ#KC7kUIL`R_qx)~<%iZoe2>3HlIJ3}v!S zNFR|tB?n#_a)ZK9crkd|-M0KoXs&cgFEXUdIzXjiKUC&lIj4dF70ds?<5JMCpwiHX zP^mX$pe^4CFZEVKr6CO!!ykl7`GP^V{z>rV;nTXYD~aWu5eRJwm4-?}B@CTrD8$1w zhDItp-q9W^H{d5Wvday#CvL`@OcC> zNiGm9LZEGlS;7yQkTx_u%i~!OFY?P!QP7p`M)Jp`PZ*J&=<&Gg{66%EzU;Kjv>~I@ zJ>eKA@$t)eo3739cxu5UEiH^T(hv1f8bXL)ONjtct93>O#k);lzH*Rbu|- zZ6Z;H3NJy+LB~1`42G75-*B(3C}OJJ1ErzT16Pojfqn}w_0y)L$FaYpcX#S_fXbZd zgkxgxUe1D2?hUBS3G3XJ%fW3C0%<4{Dr48jp>-Hn@q|XKF3!la8-}$SzBJS0sY!kz zG#a|up-Z7MxpEzv29?deokQzDtHFmrZ8~rPnud(2b zTdUVy`Dt#!{2vb-4xhhsf%)b5Jl!_2!LgMOmHFa};+a#!QqN~RaMy6PCiF<~TX`Kz zZ)G8C%%Oxh8 zLrql>;Wt-6s``yzRd{4;Z~q{Vr?;vWnd*JxYAVF*@$|H0gRZ9DB-O)`l_>6}`jP5p z$zCFLr z{21v`&$LbnVr4Y5>i6}j{Aj;#1p+qjJVQM*HYFH_g9J=Wbh6nbMD>gDneq=%rF7irPMZ!y}el`4Nprp#L;SZh3GLk%c#p6>)V;ZQBBZAF0N~(eye($ej zwoprAQq9;>s$WgNSt?ZJLq>+G0>~SoDx#L(ca{YsJzq@4L?wIUnNR>8C5{u&t+6Z9lzPKtm+4OxU9;rQ~S2QwUojEUD6J zC;Q5=Ae!23M<@GkgX;+AQE63^y^p}9ssU9~y}R9%8B|df#QMGMDtbJftVZWmRQ>Av zy=~bwTB!l`Q_UwTsR9H)BbclT>8Bx;Rlf#)?+#)^TU8jFY6ewN1r7XWt12p@q2D}J zMfGdw_cmm~wUF|@;iS4+COwmw>{|=h8O~5gW0QR*>-7$}Vhl^NIXqnD$N7DqAslWM zp@P{WLPf;;%}EieU%cP9k>w=*nJTSDvT;!zjBoApv!lsODq$&kxvJ{d$nPsecy$f< zs<0Ym26@#{X3*o2Dk8z}JA`nErR!)!vd_=TO@YI(`pLeTaQ5sxT07Z%r<#gr?Dtlv z&cLc_jZ?joNe!2jSy){aH1?bIqEtkp-<%Sq`aw2Dsr*F0?+n30l;9moT1TshCVt<; zL=Wlj^-fs-=}mt!?>TC)IqVw#rZT`{L_(Jl!qJ(y%iRu9Iz9e6qQxj_Q}< z_r-E$*WM~3zE7#E3Q|yxFrWrBNHzXYeVey7d(~6<&HcW)T#Siph779tQ9TvW!tV`> zMS)tDlC0YtZogdDg1S}tOT0_;ZmEYXaQ02Fxm*Y^b zszs-ot>aXL-|w4@z%EQxb6cFs_xrt<5O%TR+T2DeqP5?5XJf9tESto_ZE!uWa+PVh zJ6w>gR&!ROifH3EKS@;m+W39`CInr}u$Y#~-bdjW!<3dr6BW_c?@MM$$ei-1n3$Ac zm}}j&4o*Sq7_BDrUW~TwRQP6z}X8!8vhGU#)-xwlD%<^ zMr&2gpK9i&sQlafzSj}h!+10`**un_BHH`C9h=KE6-O44vL{+hyJX*CxYp=m1~4;CWx_eZhMBV$PSg^mV+cg4_B60(P765c0A^K0vN<+Y_3Pj_Urkl{ke^aj zK?lFDF5M+_mLm0&&HG!bejWYhx|S-xqu*DNc--G^wn2)~N=0l{%T9TOR8$e2&U=-=yC*VXo%Zd^H#Nq78R;8V5JEL#*Xr~J9^!qj; zl<9>z?UKDgxSgP?bxQR$C1opOQTQ?)jv&ou_cENg&6JEx_Wl6JifoZ;M&2fC&D-rZ zStWF&`S5L4Jl=soI)FjO$#V|pwSw(!_#|Crhu&EZSKP|m1}CoBCC|Z$7Ap|@THJ2e z!_k;z?-aNsIZgOhlVUx~^dgcRfx|r6qUerVI4b(=w)(@_Ez3~m!_iw}BP9>PiT8NO z1P)^%kAkD+4$0=*9aTgxzwfV|1Se#6bnye_QIU1(H zu|p=LdOsz_By5@LEqkYECFScxO2V`4O+K6*AMn(>$1WA0>Z?K#S*ElWNcN_~-72-s zH@m8Scl*umJyibPe&5SIT+79Z-{GW38HJk3X8pTVzy5yj$h$nAyHqt)enG0gYosr+ zXVI#Q;3VqWL91FXjI|q2P4@N{PBeHQBh|r59VFFB6{59f?;>S=1K{jV!XWRHaGh0Q zyHxYX-m2dqzpo)(MoqgJ?|s6l0sUGAld!vwT4t@js^4J0H?J=}tOg8DH4pSv1qkZ* z!(yv5GfA11ZVAd2q}R$?KgG4C8b^kusGIk%>kK zYM*RQ@2?_;`hD9G+Vf4ExC}=JGIHGqxT{lEPCgv*LdKCfS^y_=h*?ROMGv%Q09`hg z6d}4DYk`!ll@h+6;A{)UW&a?RpYHc9803x#3)_1PjzK4?G#u=nQKaE1aQ0Y9B-(S8 z6Eh;yuI*1LK`;YVwYyselc0+oQzM4B+R_Fm`-a2GM5A*ECU3$eT5hEEPd0xTqVh-j zeYXy^=M_J zyN2R~cN-k%Ma; zFjA|86}J?e)WQmOnfKxRaQ0EjJJLQE5Yui;_T2$z&mrml`{DYjC4p35Scb=QyQS}_ zj5HjB?L@J5gd&!m!!3l9Fl0qI?^kebtVmMz9@`?H6?1#SwWpLF-JXOK`%0)Z9Qg>2 zg9jHf(${51+t%7W-vus(Ja$52#ca4lYtvariuLQXT51dyS*NXWV^qKKe&5#!h@dhx z8R5jSwn{pfZF#JUnBe!VN0v&75EauV*>@UFn!yQ%puxDSrZd~p9gcmkS+Z{v+%1&k z%Bp#?@3NB@Z0)n_Gm8$w?{KnMXqAoauJN+)Wxsrplnh6(HB`soWZ;4==W9%`rvi4+ z6$2g4-aYf-M4vs3$KY;-v-jDCS+-8Das$aexzR2y5b-&Jugp^Ulei{9D60=4*Iz$o zGtzMOB|zJWs^4V4`Q${EKbevfZ5P>CQj*Q2Nh)HB->WBCagF7Dj?`V&@*XtVjbXA$ zorRM=x8vzuQ*2KdaMthqtDG#Ey>K%8cAh7v2xm6UQT^`qdmli^Jq~s+5_TYyMN{`) zmYxJi-$YX4KO@W(+5snl295M}&8hUMT9VG$gp~A|y@4%(lS#<3pw4+Xdr_m=>^e;q zO!NEZOmn+c0>wT!QOgqJg5Eb>Y2I%2WBdesf};D#-PF*XCLF$E13r?<1VZvBG;Fss2{# z@YPg{S=MqTcfr-vNm6~Ra_#STQ%gxP_b7LU6l0gy(wMFC?`zSvvd6mB=Lv#F00UHY zXrx1{LFFT~7>EW^E(TOmOXf$Zm*4a9_jKt4sOs2mKWW*U%B zQCbR~$l~z=)}JRBF!QYP%qHtol$JokXj$bS;Hv?v0Ez!fWjr1R(trX!@DvckmN;}N zR1A3*$fqbR3BTHs7NvIk|CS*=@fr~NrcEsI)J*R-= z{|3a0vp_yVMSe~gK2W>IiU{0{t5h1e3`DWi76pdEw5H@`Z}LyCd)6$cs{0bD{m6455bF{9xV2VrQCDZHSXAR62UN!~Yvq ztrk|X`f-GlTa=0s8ID}2Bu6>CP)Xk7(9w=us8})1k!Lz`p^_Z$@I@%isCjd$w3SYs z;$#bz=I@1yXsRRsTdG1Is$xa<8BS@Tl9Z7Wn&;4&!tfC)$@};tt=;eNvqi{9s3ia8 z&<7m3P#J;w(DKmbQ0d|q3^@+iiK|rVtdKtrmEL&~UPLcBa-kw$?eIbkwNKk)^OhqO zDy7y-E_4HbWQlEoO6To_O8)!Mc<3Ka{&^_>JQo~#Q5Zf#C3(r=g^C*neIa^_o2+rk zD}g|0utR-N{&`9|d?{i02o*!hJMsz+9}X3T)uCcwj6-WVv@TQ{Zs73oQ2u!mOtwhL zXeyjTg-?MO+R~8=6~2wb3l)RgI`kGtF4R!f=Gq5`wdzedIc&T z2BBSc&yr9%msNpExvEg9S`8|n8&T0;oqVBD4vo%rDnvVi7^p-Zd2&+}Hgjk)R3cLw zs3>R)l}}MB@>`HsfcAt+edh^Lk32CdRfan>11b*XjwK;oo(&ZR6CFAUDj%UC&^(9# ze?>(%7Xp6yV|C#_R|3|64W>I}9MXV%iqe0s1f)m)xe}0Gu&)SYQT}r!AXfnL5h}@+ z{E^`IcUJ&XUh<{k?(qNfO5k#t z%Z5k&_|)(=7c1=D_4*wDC%10yex|}Ft-Q@j{hSrLr^0&+FAn>B%Fok>efGqlnYZsc zIU}{+rfEOFRee#jt+!@wIh1g3qegu%?VPlxyqdQptn-u(b*q${|JehF|JZckjpqXo ze{^=xvPVW|CHxU`>CHb=4%b+-=3>j8clyiT9d%`dcf^8q_r81N`H^uQ8U&ifH>>h< zh@2h_k7X10V;3*!tvW0XRhO0o46o|Aw6{77*9DGmJ(u=2g4H?x`c${4d#gUnLe*PO z2aJ-+Sk~JprTX$WRK3RE(#rQtZ=;M#<8N8DfxqQcx#hi8*t4N(;_`q|L2ZNE1y}po zfKf?}f3~-p@?5C;9IlFrd9Jsr_k5_D{anBZSD(NgfNS=Az^JNbKHpnC_(G`q9bZ>qzCf$)ol9izb<4SPis2Ae%H@KieKp3EP7Z$o3OR9AAj=tv^9_Z zRCCezJ+n$bT1vHA6{fnZ3>dZ5;+6EzDtZg9uIjj|w_5pPsCs2pz=&1n;QG82ss_9m zFdC>;FZNc!FNdnomjXtd>ibe}wH|IWTqEUsxwjhmN~jw1a=>V;Ho%3g4pr4&3Ge_~ z#w+v_+&;KwDttBl^lGS@zB*tetKD$*)`Y6KR|7_KmGdh71Xl=`s$$pBPp^fld20eZ zBXtli<@He2>a~E;TFrTleu6sz*H$%uoqpm;+$FCEjCSfcT!%Lq@izj-ZEEow_y>0h z?snDjP5gTc|K1E39o0FwK5Oyst$-0wtKP!Db@;b7V02M^*Ww@CX1F_*Zyo-v$G>#} zqnp|Q7q$Wa)(4CpDq}tV!R>?Vslqql-`n`NAz<`YyW#3>#J{%#MqiclHvYjC!riT6 zH{#zW{M#5X2B?E@DVy5NH_7nX36#qU67)#VaxRm|)_i4a*TFva^yjDz?Gw-4?u6<&aUU*TUtz*wht!__;4 ze_sWR4Jzj={DUim+o)m>;a?&C9SRtm)j_zF!}wPiFy2vf3h@u_1l%^&{4oA~jemy& z#twBHuEP=h`#NB}s}_Hae{h%J-d7!u;NMaFI}$KL~twi+|q) zjD4!_H~0s)8SW$H`xgJc!@q9>#wTh6T-f*c_g#ShL6Gqs{=w~o`&@;8kAFYl-}eFI zOSK!W-jDeAL%=wwa(=)+xI(zER4h+kJ$MZNehe6e>L6Uoar`?LFuqoEj^Q8N3Am%G z`EmUF3IC17f7{93vaABwL@7I8FT4nr-e{lQY{!rnk z@b5SLI~6egQoG^m{f>XX1&nhl=QsR=D}=kCVt>cK)A;v$z__Fi!lj(SztaKZikfp8 z|KLuX4w#0aTAb;n7X5*PX97ksb^Htt{)vNs$OgLj4;+NM1Xn_J{1XTN!ofcSY@z4i z`kckVzhnzt^%oAF!@;uwHqpLkaS(1ZTp8s%hlA&F@LYh6bOT)21spst8)?RQ9E95k zS4o9mz`=_+ctJMO-Ej3T;owEtNOLaYAY36_RTX;)2QTB`CD}+1!lhin!OOCd&bf?( za3|nmRP!snpIC%VORfZrn(FwK-nxTfgg(*5UGqg3TgmqcHOZQf|a2NUMYp3qdq5sKBW;12t^Rkt3nY3mq8F(8bKG`w={zFBG@c~JGHM2 zf{|qrj46Ylo8BOTuyP2hl||4)XOu;-O9cBw&{Kz(LolU0g6ZWD^wzsYP_F`lxbg`4 z>YVZj4v3&o1b6G$3J4yoh+tj?1OxOz5u{W?(5fPWL3&O_1jj^hLIi2Lc_jpkDkE4@ z3Bgc(Tm&7eAm~yVLAqXC8Npc*ToS9~VJ~8VI_?AegNe#~?T>f=eQJKzFQxU}a4Nuhc*= zN1qcxpIQh8)I{*GUR4u8aBT#kwGhnHeQP0DFM`b?cvSmpBN$l+!I;_z9@85{5LOpK zwK@ot&ZvW6mk9QW;0YaG7r~Tz2&UIXp!IG9#v&b453*S22+7x<2zgS+#zLObGleYC z2Zb!vjq5|6)^mg`(?^9oqnkH?EZ2_-c~&29z`0^sL`D8XSdg((=QQNV>aafdr$N41 zx4EJ5tl_QAcP^#ZZEI*KL!WAI47=H%uA)pgOf-VMcZc)6)D5f9N|BKx2mgEfntqH z9(Y=AHhVlPmmAtBV^+``pE6=|J(sW8AIX|yU3>D?oL%xNFC9|ckv#+zUhe&ua%6KI znS2+S59IR*GRc;&`Pz$s&!dh^zVXwNDG&R|(+-lBFE-^XUHQm=@)VhTS^SJ6dmMoz z<$FjmLOu(ea`F}7N=xGLJmJXXsUG(+q=k-5zQStj)D;7)hkZg3UUnK;J>}Ex8aUVz9`L=2cyK&r3l4_ zilC(Hk+D)eyO5zb z*Ymt1lrKQ{I0bp@HTvJV{DN~fGWBDoF7XO$z9$0X&;Z!y4q2BkXb&ya~;c@Bkt z^8blF`;dv=mn~U;k0%;tI}pXMAQY!!zz7SB)MXYdP{ z=ke6{v?b9F+zM_3vYKuO9YH5R)RO;J;qmJw&lq)c>yvB%8iF_=kL)x82|zkt21{no z5NsL-(t$h|l>_brvw%DtI1oAr%mmZGbT9zi1NsB`x+@E0gULW1y&7%s5ZxFOW5Ec} z2iy(1fIEPE=hXt-qSKZe6>>Y$*PTFT&;{H9x`J+?JLmx<7RcI{^(sqImd`REPgfiQ zh2Svw8XN)Nfgiy!An{}=cp5AN5=$PWuEdXr4QBsf9DNo%4?#(?eO{57K{vv)~*!4=#X<;1ZAk_bV7i*>o@f z43_Dh28IAxH4-2s9!TVqXHw#TJYBO9YzAAvb6_QS5ir9v3qB;>9oiYlQ)aoF`6I#M6(En7?E<^O2VgJQ2R;S+!RMe590p&5Bj6kG9rzyn z0Db`{z)A2cI0b$Kzk}1@3@CxICJwfc$A2W$)&_M!1CRjZaYqTa?}F`ME0AZB-T-d_ zc}(gFa1d__z*j(?uKg732cLnpU_ICX-UesDAK)*LhY{_-tup?%ljs00g5D^N0GCNi zY)=I(L2FuDT z6+Qv-kk|JV_z`>y-U0H!S9{9HHY?leMEJ?zDe?vYc_K}A#OJ{Z@EBNwTsE~^DBlFW zKK13vtJUC3i4_tv>LHW;{|TtXT8X)`OxuAO;1XuM;!3ZE*ZWT}&Q~>35#}<>-7{TOZKXYKz44? zT@6SGsS2V%3~=i;CoS<_!i|I)2{{t;n}Wum36On2_Jg{>ttXVWa;*lWgG5OzkV>*q zh(n^tbzFGaL}W9OGEzPfxCRt$T=FFrHUmW)6kV=?Qs&B)+$&c^C`w!pq*2KfW2Ca= z3zY`lJQ+Qa$w%_rfY!hdBoMa*b^~_4jI8h-!F13b+y?x){AmY7iCaLFUoAjd6y6G? zjCe1!184(o2hyk*HyVfzH&1lj0lI+BAOJc6*SMafbMNF&chC)V1wFuB;2tmn^Z~s= zFE9Yy4f=t;pg)j#F%S#}GXI1h1crejAPo!!>0mg>03*RDFkZ%g3<*&@2}}gpfDF$# zFcxHjEFelJ0LhbbQfHdO-wT}#a=;WY)!`-G21pM*1oD9NxD4A&Xd~h7BQXa&2p$0c z0<*#WV3w1994h&bfk(i@4xI~~2c-Ud@FSPlY_3olfLJ0#1TofjA?F&*tD(Alp)RWMYgp{xVVIfYk=bfvXje6RMohWU@#_S(a`k>4g+z zUho&`Kf&)nhUyRS7&rq?J83xsohN-3oC9(;x(K}haxd}cGLVeBfNYLeAkv`ZiQGgc zWn5m$2_J-9l(}_9CS^sr+h}q4WFY^Er6dr!T(2|*P2~LRDi!Mz5hj2}K$OWvPaJTS z7B#K`^7=q7a$-R}P#x3-WkF?72h;}QX)S0Bhyv9>B&aIqp9m7+APiIil|U#c0bGma zYD$a<2GTpyXel7xRCHvep%p-RP!5O@Wq_2IdIBjgRO(3DCudSoES`zQqVz@$yZKfn z$`q|5G8qD?FKKtIZU6XXtF_!Yu#iB>x z8X~%+uFR!|PM+{0mtjFSkH24+Aqu2Xu~Zt8u5JvZE5%5uEL4gnOvZ)9%8f$&2?Iv57hz##AuWd=hfZwL^bBfxMl4rG8a z;0wx)hK`i=FCkMhL@2n2^e8X^NF}K-)}iB}ncxx77D%L=2j+r*f!RRHl@pKM723)Qcl6vtO3v6-Wc7)lJzgM`F5LFa>O{+lJJfmm6X+(us|6z?RPX)d9O{4z0@7^@- zGs4{;33q=$%sHM-`yzohQ|RH11MY#QGzzNtOhRTymd z#|urPaeQKY0*W%m@N=Ee6@6~;ocvCCD;oY*%~6@e&kWnY!|wjjq2x49ichhx0861Q zqEhX0Gi&zP>*N?II&*_j(U*-+)yUqd?^$PrH;cw%AFTTWiKbB&Nm(RvD@$^^fBV8c z3x>Sf3wsmd6Pv^*dhDt?a-9*ucRQ%*k`!IcF1&i>=?A*!zqT6}n&Lw<0ya4zs4-tS zwP*Oq^$kp;S$yO8#yHiam_E7A2uqUdaxwUWUJLhq`q_PhOe2AQp{n~odh(h)KJ?yg zOO{PH4Y_|8O4*^sbj$TdSft!ztqi}kPm3?i9Yd=JU2S(>F`Y??X3tR~j1u!tt=!vw z(%zcaO1M8gfAGRz?}eQBcJ{TL&-CW?MtIT*s)kc_#Jq|7=RP(v?^*%(*X%p|%hRdh ziazREPIQniwZTXw#|@iA^Kuj{g`{nOzAtoC#Krp8vLShdH8@ zKJqq}j4!35w?L<{Y5zOe;Qrox_{gB7O;aw^!-mB8#*LX$FPGBO zC>gmO1FF&=%Qh5mK4tlepDDpuCNWfnrSzJOxOHBCwbAHO<2(h+Q}BAz${KEt-V$m? z=wX|T2y=O;&fCO5xj%qk`Erfh-g$NZBWO>y=YjhZ`Ez^pes0mLi{G)@WnFRV*ZVfn ztF}uO^~Fs_3NzA@)heUAZe}2G?|z}NW%c^aM(3M$htmzFr<@)u-BiAuesGKHQmQVy z%_tw@T7P|4+I8#yFMcy5RrE9O7}c&C;*N)F0R2&Vt5Lt1+t|%J@jvIpc|B$;)9N~v zdiz#m@KxhKF0ZTaWHgU3LZum`4s)Ii{bonYL-cCn_@)wePL|h$w;5r^MLlze5w0KK z#wa;1R{a~R^yzIfrAz5$s5kdk)Ct>J-A60hD|E-vxeLcU+N8MEOcQCweVag|R&#@D zo%>3LwQ;$JBd8*ixQrC{o%QdOL@zostHk(7Ts4V{Cq4w zzel4Toylp;Dj{cg6}{zC#?^iK!gp(KU-ZVd`){>MSapA>qBGyMmjpvpvAD$NuHkx% z$d-ibghR-r|6dB%(WT5V^Q~}Q=RG4a$$bmMlZ*F6j32YUq@$4@a$j>$u=bu;s^rXg zfgEO#STnDxe&ju@ao^A|ve}>)8Z|ue1SPOmN<3RtZ%4b?BU1kT8wmLE!t zIk%0HiS~4uNlrON=-#iQ%I+N+m*cdb#EGw(9!UIjG)mfre8bk!p_8KJq8&eA4);IO^IA?}4c&RS5mxmC zb!9e}Y1jU%GObRe*d=6woY%R#iIsLkmGzq4M%PH|H4~Js{q74r>Q)^UHF>UvE>7g0hEON^KMMvR=_ z-a7DA>rFEp?TJl2cHPQB30GIN`wo=M+Xv3L`1Jg?*R(XPr#I1#*|whk;sa)7C(eVi z@BZ07qIca+`&dlw zYYS>t+_L29FF*OkDS>u;DE}b?JSSGShbFnd8~)9yI)(L<$9;vj$?;9($mqUHq4@W| zSLj)+;v}md5>seqe7s)$p%FIffq3gni@fqi$3thTEQc`vdO#QKuzI>6AzctdMrQ`*4mZZ_HGe&PZ^x7LQQ&LW541e(iy^In`?rS$1 zl?fga_1GIfS-RMVxobrS%glRnajh*~)QU4!-9)KdFF~J_y6(F@Dn4BBP0zjWK2Hh4 zx7gvn6(oGuW4^-KYhJQ)tRU4bLAR7$VldjvqCI`a@yQeV9$i5RR*|%unV>T%k(B3@ zNF4pf={+Bf96^aBv@SFilII_I(8-;Dpu(%w|sb@rg7XQ?Y!G_Qw81-4bFS%MPI zC5`*~m7@=SmHpZsdxFVn8lNOu_b2F5`?2gKb*oc1Yg5mcR-0vhvr1T(L!}z)Hd4ZU zB}}h~4xdE*_68RlXm>2r+53(9=Ey|7Y`+m5>AoT$%KT4tBBlyF}lvwPmO(pAjQIUf-I#9)tZrf>bs`0&Q9 zSPQgml8*nJ`OrB@clg{GZmv$&YlI)2qW65xvW#nPkHW*l7QD8pVE5OiA<;oDecac^ zJWwKbX_seTm+=w1C_ksU?)-(3Z#p~d!Y?_UxifS?3!U^O3-X0jJxXZxmU^ko-1!N5 z{g?DhT1)-im-Nd`<_Avw&{9Vq;Ouu^H$PxBF{icGV__rR*Tvk^YQcl!_aAy6bDG)L zsIyz^I}{f4QA5T>x+Ahea-LXK%qN3*#2V>?qF!uwoXvDbc@x z8jafP`BI}rd;MYo*0}G4X|%$>^@rI*xRPYaT8E+=dS>O6iP8 zYaKGaR;xB8%gEL$qlMiwqxAwxB;D819?p@!zWHnSrrEKUXN_gj>x(DYk4*p(dn{&{)VJBIk`@g%4_O2z(MAPohN?vx8>&Jx0I0yeh1URj`dCkhr z=^XdnHmCAF=vu$dxqPRuanyaG(746-AA7F))}u}iQ_;~H>AoLl&&mhN9Pr*==#)Tf z=Wcq8{eo?{0+w6mLj^IK+bkxsLx zPMBF_-c*s!{IHwu`W-hj-1iNQ$=?+7SlX8DD3gtc_3pllspP>kPxM(^a=g_{qO9IO z^e4Y@KsUPU_21E2x$gSZ@61k|sM}o+K1Py43Eg${_snj8cfGe5>%e^h(rr1n0hGd+DEP>aU-X@ z-XyI&)LoCg0$q$P@Ja6bn=;!>dueNKYH6!Rg4}g<-|!Sx=f{}C^Yd$7%Q@0r`+uOW z`%b8eZJXUPar;MdIFxZ_Cb(~nn)%$0@&!TjS~@w{5#2-2rEaAAqN-D+s*D=>>G>|# zO0?~vw@Qh>orwv@IcP8Gp%dsacgP}dI1ttuY13VLKEc3=R+XYK#C_qFr}>#l%Wr>J zE`!8)a-11p&g!`^$PBA$y&{X*{8QR$Z>#JVKELMWY2DzM5gr-T%ibf3^_=|B4+|sz zbP6yt>`~?thZ1sOv21ZjQq+dIzd9wD2k+luA16yZ_1NB;vwm29%?jJON?zG6EI+NJ zy$G#U?nvdD2?Bz8?H^aO;>*XR`I{e z?Jy=6eeNbh%{C_(Ry#_%n^Do;k?wQ#yW5Dn!fT!2oaL%;jdB96Iqh!!2&!+qe-#bQ z=9hQtyi*uaB$lAG>`6qfQg=o<3)r28MPv29car4-_8t)}?iN-4SL_`!P{+$Y>pJDy z>p1r}(Ze>z>Lkm!>uMG?$}Vb6IJ?v3&QfEK<7v`O))^DteYsj>`1csSM>P6)lu-6G;56ClhHI~$#x0~?aF1xgXN;8p zVHiFgs^_1%di1iU%1s8$E_rRTTyKCo1>E&ym$x+jjm_5i&K*2wBa31q%SgB5VD%>L z(~jNyL=9)~S%GoQ^^89meEUMw+5ov)e*I4)(YT<$|I=vFtnF}nEP4+9<;wZ_X%a)_ zRv{zkzV)uv>8-ErDcfu$IoyMloXfh)U+k`3N9d7%(H(sG^weL*t-*&!^0hy~R?ql? z+saJJK^Z#p9Ia2z(ACc}Q0{B$##TT5&gTbeH8&0J#mPC-vo=F_Kg)#}7hfl(r29g= z4=Z(O``npP#~hDn`+A)>xq!Y}GVw;2rOvg6b6KjtIA@GBxp-)Ep1sw5$KHqEZO&Zu z$RAus(jjb6a+lTas?~=!{t}bbFoGQCUgUK~>8KYeenh8wU+O zVkxw4)!}W~3!HG=*YeFS+kf=v`;Dh8ZyU>g?!Le;ynOl5chxNO89B~PybF531;(K6 zSUu%}Q9s0O?A5XQWmNu+(@&4nM<~(NeZ}9(oXg{yEUVf!$hwRZN8Ok9T^eny$*gf} z0gcM-GdAeEGwq3X_Wab5+xslwF3GJ(sxaoMVQbz!ldYrWDC*wourEq0c{zK!r_|Ni`oSyAtM{`x zIWjf`uuW8nbYGA9@U9spzub5D0!p!jFBd(tChAj^xY;E&R|oF?&`;zBS(+;E7CEV)#9G~-QZ8;wvH99hHoe7 zh9;+I=frdMWZ{-~k6n#jCru~z|Bb<2ChLpn{F`euXVZ^#UwAq7uixXg4SGSQhlE8| zO2Hs~(u-Z2ChHk;%HKa(FDk}`u6>=9=p4@@-B)eyf8m+Cx;D}7twS7lE+lm4AhT(t z`v%Tsdq$K!@pjN4ryYuQnxdcLoPX7CcV{bdQnAOq=((~w2DMN4_ajTykw7e_ za~Wn`XorhN>tx`*q_f9ojEj0NsV)0xsYxh`bwy5~vzV&`VPNkQjIfw_MDD)`UdxpwNd zF12ocTg9D&w*Q??=QN>P2bQ>k+}SeiDPBol_kHs&x1&~g)#>)LA-ZPkh6Q6= zaqUfDu%23R!&&BZeLk3JV~1h zim%QW_PTP2S>AkMx~?B$Mw@R;*PTPquy?v19%9xH`IZ*=&gp*$YuER=dxX6H1jmH3 z?gqIX>x74-n@j*Emir>+H6;tiOqsoQzcY);VQTzR5^HbpMRMd@JVg_Qiddsis!j|!eWcRlM}}Q1(T*JX z@?vP0?N6jdhAzIAlQvWLr*32}C8RHUjOm+~_51t<*Gep%spnIo*=9<}_O&yyT+6wn3rm~fAzdr*&=#Nh6&98;+Z4Cb9^IylnGo?-obB)Z zDb4m8Q%Yan>J;s>c-=!~%<@K}^L$#PxJFJY&U!p8K6?awdR$h{*r9RhQ?k=1j7=LI zmzB+HgZ0d^X4UpL$wbdha^hr-C5YaE^2AzvLiDt0(RzJVGfw|f)(rEF9ygBm(#KBH z9|g?nI;xzh^iyTcSiPgNS#{m(<;;TMa@K=)G-1)W#Q5fVe19`W&!1`*U-x)~+5g`E E1Lm(eKmY&$ delta 33282 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 void; - toggleOpen: () => void; - close: () => void; actionButtons?: ReactNode; body: ReactNode; bottomBar?: ReactNode; + close: () => void; + maximisedState: boolean; openButton: ReactNode; + openState: boolean; + setMaximisedState: (state: boolean) => void; + sx?: any; title: string; + toggleOpen: () => void; } export const FloatingDialog: FC = ({ - sx, - openState, - maximisedState, - setMaximisedState, - toggleOpen, - close, actionButtons, body, bottomBar, + close, + maximisedState, openButton, + openState, + setMaximisedState, + sx, title, + toggleOpen, }) => { const { settings } = useSettings(); @@ -75,7 +75,7 @@ export const FloatingDialog: FC = ({ { + onClick={() => { setMaximisedState(!maximisedState); }} sx={{ diff --git a/src/components/Generic/LoadingScreen.tsx b/src/components/Generic/LoadingScreen.tsx new file mode 100644 index 0000000..f74f25e --- /dev/null +++ b/src/components/Generic/LoadingScreen.tsx @@ -0,0 +1,25 @@ +import { Box, Typography, LinearProgress } from "@mui/material"; +import { FC } from "react"; + +interface LoadingScreenProps { + loadingText?: string; +} + +export const LoadingScreen: FC = ({ loadingText }) => { + return ( + + + {loadingText} + + + + ); +}; diff --git a/src/components/HeaderBar/Settings/Settings.tsx b/src/components/HeaderBar/Settings/Settings.tsx index e69de29..d6c0f0e 100644 --- a/src/components/HeaderBar/Settings/Settings.tsx +++ b/src/components/HeaderBar/Settings/Settings.tsx @@ -0,0 +1,20 @@ +// import { IconButton, Typography, useTheme } from "@mui/material"; +// import { FloatingDialog } from "../../Generic/FloatingDialog"; +// import { SettingsCell, SettingsOutlined } from "@mui/icons-material"; + +// export const Settings = () => { +// // contexts +// const theme = useTheme(); +// const { settings, updateSettingsLocal } = useSettings(); + +// return ( +// Settings} +// openButton={ +// +// +// +// } +// /> +// ); +// }; diff --git a/src/lib/path.ts b/src/lib/path.ts new file mode 100644 index 0000000..4eac8c6 --- /dev/null +++ b/src/lib/path.ts @@ -0,0 +1,40 @@ +export const getConfigDirectory = async () => { + const { configDir } = await import("@tauri-apps/api/path"); + return (await configDir()) + "stort/"; +}; + +const pathBase = "stort/"; + +export const getPaths = async () => { + const { + cacheDir, + configDir, + dataDir, + desktopDir, + documentDir, + downloadDir, + executableDir, + fontDir, + homeDir, + logDir, + pictureDir, + templateDir, + videoDir, + } = await import("@tauri-apps/api/path"); + + return { + cacheDirectory: (await cacheDir()) + pathBase, + configDirectory: (await configDir()) + pathBase, + dataDirectory: (await dataDir()) + pathBase, + desktopDirectory: (await desktopDir()) + pathBase, + documentDirectory: (await documentDir()) + pathBase, + downloadDirectory: (await downloadDir()) + pathBase, + executableDirectory: (await executableDir()) + pathBase, + fontDirectory: (await fontDir()) + pathBase, + homeDirectory: (await homeDir()) + pathBase, + logDirectory: (await logDir()) + pathBase, + pictureDirectory: (await pictureDir()) + pathBase, + templateDirectory: (await templateDir()) + pathBase, + videoDirectory: (await videoDir()) + pathBase, + }; +}; diff --git a/src/lib/store/jotai/loading.ts b/src/lib/store/jotai/loading.ts new file mode 100644 index 0000000..31e3deb --- /dev/null +++ b/src/lib/store/jotai/loading.ts @@ -0,0 +1,3 @@ +import { atom } from "jotai"; + +export const loadingAtom = atom(false); diff --git a/src/lib/store/zustand/path.ts b/src/lib/store/zustand/path.ts new file mode 100644 index 0000000..1467f48 --- /dev/null +++ b/src/lib/store/zustand/path.ts @@ -0,0 +1,14 @@ +import { create } from "zustand"; + +type PathType = { + configDirectory: string; +}; + +export const getPaths = async () => { + const { configDir } = await import("@tauri-apps/api/path"); + return (await configDir()) + "stort/"; +}; + +export const usePathStore = create((set) => ({ + configDirectory: getPaths(), +})); diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 2abcfc7..4f785f5 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -1,95 +1,19 @@ -import { Box, Button, TextField, Typography } from "@mui/material"; -import { - ConfirmDialogOptions, - DialogFilter, - MessageDialogOptions, - OpenDialogOptions, -} from "@tauri-apps/api/dialog"; -import { - isPermissionGranted, - Options, - requestPermission, - sendNotification, -} from "@tauri-apps/api/notification"; -import { useState } from "react"; +import { Box } from "@mui/material"; +import { useAtom } from "jotai"; +import { LoadingScreen } from "../components/Generic/LoadingScreen"; import { HeaderBar } from "../components/HeaderBar/HeaderBar"; +import { loadingAtom } from "../lib/store/jotai/loading"; export default function Home() { - const [content, setContent] = useState("Please enter your name"); + const [loading] = useAtom(loadingAtom); - const confirmDialogOptions: ConfirmDialogOptions = { - cancelLabel: "fuck no", - okLabel: "fuck yes", - title: "this is a title", - type: "error", - }; - - const dialogFilter: DialogFilter = { - extensions: ["png", "jpeg"], - name: "this is a name", - }; - - const messageDialogOptions: MessageDialogOptions = { - okLabel: "fuck yes", - title: "this is a title", - type: "warning", - }; - - const openDialogOptions: OpenDialogOptions = { - defaultPath: "/home/vomitblood/Downloads", - directory: false, - filters: [dialogFilter], - multiple: true, - }; - - const notificationOptions: Options = { - // body: "hello this is the body", - // icon: "/home/vomitblood/Downloads/Screenshot 2024-07-14 212730.png", - // sound: "Alerts", - title: "hello this is the title", - }; - - const bruh = async () => { - let permissionGranted = await isPermissionGranted(); - if (!permissionGranted) { - const permission = await requestPermission(); - permissionGranted = permission === "granted"; - } - if (permissionGranted) { - sendNotification("Tauri is awesome!"); - sendNotification({ title: "TAURI", body: "Tauri is awesome!" }); - } - }; - - async function handleClick() { - console.log("bruh"); - // let permissionGranted = await isPermissionGranted(); - // console.log(permissionGranted); - // const permission = await requestPermission(); - // if (!permissionGranted) { - // const permission = await requestPermission(); - // permissionGranted = permission === "granted"; - // } - // if (permissionGranted) { - sendNotification(notificationOptions); - // } + if (loading) { + return ; + } else { + return ( + + + + ); } - - return ( - - - setContent(e.target.value)} - size="small" - variant="outlined" - /> - - - Response: {content} - - - ); } diff --git a/src/pages/testing.tsx b/src/pages/testing.tsx index 377f099..534deda 100644 --- a/src/pages/testing.tsx +++ b/src/pages/testing.tsx @@ -4,19 +4,22 @@ import { BugReport } from "@mui/icons-material"; import { Box, Button, IconButton, Typography } from "@mui/material"; import { useRouter } from "next/router"; import { useEffect, useState } from "react"; +import { getConfigDirectory } from "../lib/path"; +import { usePathStore } from "../lib/store/zustand/path"; export default function Testing() { const router = useRouter(); - const [configDir, setConfigDir] = useState(""); + const configPath = usePathStore((state) => state.configDirectory); + const dataPath = usePathStore((state) => state.dataDirectory); + const cachePath = usePathStore((state) => state.cacheDirectory); - const initializeConfigDir = async () => { - const { appConfigDir } = await import("@tauri-apps/api/path"); - setConfigDir(await appConfigDir()); - }; + const [text, setText] = useState(""); useEffect(() => { - initializeConfigDir(); + getConfigDirectory().then((configDirectory) => { + setText(configDirectory); + }); }); return ( @@ -30,12 +33,15 @@ export default function Testing() { - {configDir} + {text} ); }