From b3b3c9691a31337154a551c8a1057023e3b44a32 Mon Sep 17 00:00:00 2001 From: Aamir Azad Date: Mon, 8 Jul 2024 14:22:34 -0400 Subject: [PATCH] Maybe start using api instead of actions --- bun.lockb | Bin 259484 -> 260348 bytes package.json | 1 + src/app/actions.ts | 17 --- src/app/page.tsx | 53 ++++++-- src/components/audio-preview.tsx | 47 ++++--- src/components/secondary-audio-preview.tsx | 138 +++++++++++++++++++++ src/server/querys.ts | 15 +++ 7 files changed, 216 insertions(+), 55 deletions(-) create mode 100644 src/components/secondary-audio-preview.tsx create mode 100644 src/server/querys.ts diff --git a/bun.lockb b/bun.lockb index c35e0ae6f4d559afa33622d85ddc74fd83b1e72b..d257f1598969d55412202a0f348f0966bc3ecef3 100755 GIT binary patch delta 47489 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 VGRTiJ;a|=p9>R)Ha{kR%{|gln6V(6! delta 47430 zcmeFa33yFc_dkB`Np9t$=8#AXsiB0Bgye>hi<;*k<|znC$Rt5bO;E%v4z{u8xrR_v zQL|FBR*P0u)m!t>(xTe_KA*GqiM&eRzTfZndH&Dye|ny*yY~9*wfA0o?X`z(JOLfueUytgKPN?LY_pytGS88U5 zQfVGZnjy%Kf)-2qu!KH_unZZ6A%6}j4|pY4i=`O&9PoVLy_1upl6zY$9+0V*n2?+T z%(C8QvAhZSL$s0`JU%i$AqG_n$acs>BjX0J0XLK@kOtrxGFagq#RoUB7BA=2YQfb981g!gOaE?Y~{Lr|_l-|+F zgL)5)OpdbrUPyK>F=k+73XF;y#x7edmoWtFWJ+{YJpFK3$!EaXr@JV}`i!1Kf1NwL z4>?~^SgZ_wWo2J_%k7b*A4z(80L$v*2heypJ_ zKT^NyTD8;hO0o;P!0G%6mF3`k1J2I)`^nPjkZI&b=+XE6A_w(j5HzhKeQidI6Ea&1 z(qn9;3Lb-LG`WGlAq#8!H|;t}8+?^=qN1!u*16@MHoop%KslOg>$IMetgAHeb(?4ZuNjXD5`$n;}%C%+jZZOaAbyQ3;?Q5gV^#x}?%Q>YvQDJgy>erFA zybWE}egrbhC-(D88JZZCoKjc%JvAjNz7KTzLFPp31Wtc8le{2sO#{uB5vw98XV7l)`QIas*-!9*Fb_5^ofc} z^ovQhEL8>PHqs~BOQv1wAnQG?c%t8cgx=UYz+>WKQY@!C%KWJ0q(M;whgy0^M-J$Z zcG5dZyRqH+!KeM4sFndRy|V@0v7|e?$nCi!Wa5<|vwv4mmiEzYy@p!!w{sUv3+yIM z+|yOIm54H>p>q~Nf@L?oeRtW%k0CP{%taCw4T7gF;XP!X#-fToMh%XNPf4~|>H=ph z_=6j3O{9#K_Tcn+eQ?yDmL7rxja$-7X8Z(BXIEBuajBTTr?)hyEM^Y%6HOl3KLK`F zydcxp(L)ol(ON9MV*14R#U@)aVI>XEi+b3w7YuR-&uti1#FGA1U+Jyb$f16TQT;5l z`{_;dlut9)4wIjQ8tXp@&frN@?QVw54nBpW$k)Y6`^`;lv63f&v)uz2LE66qoP*JH zfDF>%$fv_@p&rz)-_PTd_6+?f1#A~MC)`M@)GY{^`{C!{<-tRfy z`CH(>$4O`RfuS_G6*wyl1m}`7ELC0;dx$gS+#{(QUZ&dOO9B zAcK~624|FnfzuQBP_ZZY=itS`%K-NR&!zH^eOG$I1#)4?KO=Iuw3s_Y!!$WM zH;E&i?vpNi`UC`7t8ZHnI;Epc3Q>2PTQCvU3_7@bY07dvZBwy8Ar##*)UIgaoDF~ zaoh>AU;+ZC!Nn)bcufGOo*kS+SYe9vU;%K(!ZC0T>DyCfxioNiI4ylJ5-j)}1-Z)i zOW@SQr7GM#O}et0GAwestoZ2+*-(To4d|ON&<`iC=%tx5{~PErC{t$2A-e^APOQ*b zGG#;SCq64=gUukb;grb4$X)}YEW=STr(-VD+r^+=2=NKQxbf&>yZI&G~Z>{%3W(T)`vz@d_NYEuo;EdW%N=A7j>f^S`hE6K( zw@vm~fU}{=;G7*%$-M@}4CrI|V~5ng2~H1vruZJkS1CRN9G*x^e-{bHK&;~J6|bjw z6~&7y{)XZ|ZkOe*fU~D36yK@%O2ub_7efAM#S<0pZgB1a=ve_M{11EZzv}?!|NpKB zh=skfhyQ6dn6scIhPE`?jX#P5Ij5a@z(XJ!!O{Pitg!pBElrEG%vHc|<658aS{crk zb2{~0`7e)Ox9srRl-IgVkE!6)u50?*3SrjP`ppVXYdyVUMW=P89#he2d*q5+S3Ry~ zsJ(*CVnLhfu6j~Mhjp-C(bsAHNRRP#YR_%@THi2hL;WV8VS2?%PV0wyOeLrN`!}$| zpomRR@^#qD<+51nLwZBcf)oR(0i^tT0IK^^kE!gmH*m99a8OFet#M6h%A=PJB zY#WgZGdgvbDQLW5bgGgbQ`Kqhudk`4*PwjkxS2lR0DIBJ+~R9$3dzIDHnTb-KXCSaN3_MOf$R@tj7d8t<&{2 zflm7&%x_v~)6q?zs&1z0tK7@W9JJO_s?17l*!H`_^EPsbR8j{QlsN%4%ghWTdZB-rGjUsw%NEiZY zO^DOFOTQW7w0mMXp}H%3YVV*V_yT_V7*Zhe-qWwA%DF`0TIWtn0LW zj8z6fQYqB#<|7@3FbHv2JLzlcIqegHRYA>GJs{X&-=QST_=*nOzaZ5&!Yf2y^N!Ox zLBEO53wp)+PJ7-ma$pJ>LDUseHPm8A)@k}pXxsqCe#3tl@wfDt22OjovJ$fs)9mH+ z*s5W6XE}4^0)iaYF?vixr+q&#PDi7|+T(Kit%hONK6=GQPWxx&rNy%MdEb_PGA4w* zDWnh-!z`}lu#bimY+7L7q4J=Kz#K#@`!ag%uATek#v@mpo653s-rMZJYw3QDPQ?%OWRUJ_=o zM(Og-kT^JSGKOO*q>fSwbl9Ik!k=obN)QKoebrEFcYRHS)3zUSh<>+1sQoEYw8~-( zVh4mXI+UJIPl5@D92QH5Y{?5T^+Fm5DIz=XlYf)EYgjC8v-1-EO*#N6JUg#2Vx(2J z)C*EGQ?jntZ+3KQk80|^ox-f4dQ2y$Jq}AX{%CBl!@63(3G4>|a!@hY_LfM>?r?A> zLqh*#cdYyMo1LBZC&1_!xmShMmXQgE;+T=Duj%5ne+LYsBb{t5uUG8qv?k~=`20j) zgU^EcO?GJg2Ye=Cl{CYtB0!C&of*$}QJ^8Y$L?5W%8nMX+PM;re%w z;t0z*GG0l>9I+jT6l_F=^&P2&Agb!H&eCu8a9S_w6?;0Z?s`m5r@bDk;7lu|b9I}d z-vo9J7#AjE(8cY!t1??#4NtLtleIkn7&`mJ7J z+J%OCZ0|6wPa}P8?=YLz#9|pplWZwSMHt2%L#hobbJZW#cWA*)^|gJ%wD+3oxB7(H zA7YYlq>Xsj>NV42qrz;HFutt}uUtZ^wNaESi!Wv(L-`FoV0nle1P&<{2w#V`qq)Ae zZM<8(?$=<((q+Fyql{-R0timY9$8<<6=VAo^ zO(hu{imf8zQqId1r08MPHzmXk0>cN3rN2Y_u9dzvCQK{STE7(&X77&vFwd?BbaU9} zLt-&3Nr4XSNo##=Y?xLlT)!0?X3v0QsEIu_&|%vRDMVlIA8LPu6rF;F9CNrnT-z0r z+D$uBp>-AJfbR~9P1jji@tj}o6 znpwyGJ1f z8hw0*6zfJvp{3An=1{O7gCMb2#;Du2K;=2aJ0c896t+J|SXbaqNVZjw-r;(# zrS{NchlJU;^pG8sThDb!Sk!Pc^{|ISd#k7Jn~L%5DPvFu|8z)HL96v0wv&*Y#{Muo zQXU74xoAHNi5`L<;V<`IatAdQPc5>Sersr$eIr1r!V~rHkk}cRiGZ%vTlxr6M2H&% z_CU^o(~z3$>jOjW{(Yp9u|U~JC<%)s&hWeY=(mQ4X?ObQz9Yi4@=<#1h%kGXC^^)I zihVgGOk{=+2L4A#H4KS+YNftd=O7s?gEp|QzIJ4o{TV>~F;coYY(4uiHgG_)FF}f? z%VWwF;zmWR);-!h)n-)+af84hg6rUvL6E9Lf>VMV+L~y6ZCaQ$zkV~#X>S&jJC58_HD6dKrmPyL2{y4ZmwBcwf_1os3i55 z9fL0u9QIR?WGHe;$Tz^8jf}4DkhsFgv(W}fwe`4Kq4wKIace~%oFD0TRNR9fyamLt;B}6oV3FUuE8KNSOFa^DHFv zNl9Ij5bxR2PDmU~S+2rBycLoyWkA9fgS;%9r_NC_HkPr;(#x{UUP!WrhiyaLQcQs+ zc7Y^2LunNxE^o5feMpQHV-ji&2kC1w!tBcjN!MeQLug-v#2F(`U!@02U&!LUAic2k zdq|iEs_KSASx#R5hU3Q&Npqi+@3Y#Ox_n#O`~=k?re)G8Qb|Kq;Tt5E7ayc0yP`M9*>kc zL?LbvUKm+qq^wk$+!s>27tKR5i(wyl*OWNjA-ou_BarIrcdLimbEnDh#Ev}DVQ< z&LwVu??K}1#U9noq3uc2W2cANW76e1h#fe=VcP&H)Yv;MqvV`KMZkMQYOmi72(|A- zDj1bue&hIa9}=B_c*diOilfcNip|9-33q-0IH5zr+`t@ou5jGiRB&ib$LPL#n0@RR zX*Vju-N=4OYC&HZ;s!ys$gCRgnH@}O8R7fSubmxcD?W)s%_m#! zkP6ZLs)gDnBZa-FVyO16Ms-|~jzW@^L$Ybp5M8>TGt|}wDcq&tggF{11ZRa% z+i9d)8sk`Ex*6ywr45*_$IcJqwmjcy>!WjiaM50i6vqJ`#p?T=uE#D2vz4BS7&VUE zQ<0Ku6il?;f@Bo4wVnn4>Tzpoxgvpv;h_ApO%s|Rgn@CW zgZA4ZC4Im{(jrJWTEmN3xcB}ZQhVKRVJ+7=Oz@t5I#Nn~M2H&%XEUpP{X0n9I*c99R$-nosLoJ(Po!Shw-yraAuz|jMXH@Fo#L=Jm@l=A9n!W8 zQfoa9T0bFG4_Y|PS954V3v}OQVYXol5WR+Lw;?4f;TYy#Xf9P8!#0rW7(JSS6iqXx zh3x_)d9zdgeREHOV{CmP;qDi%TZ&XWqyC?fYA-uA-C=LO$m}9RZZV|#MjmJF_mJo{ zbO4t4FE(AnF&$0Gh@sDsl21;&mzaABZ5;*)%PPEo4k=j=U0iah+#Il2_Hft-K;lA# z-G6~Ydw;3Ec6FHjIY362u|C_YFUvLjg(w2u?E{hmt*nQ*C&M979xc; zZ&avub-5n9Hq0KdB73pMgc%B{2`b0=b%?`$08+5g6#M@KQfEl=SU-8C+??b&^)pD_ zkS8VoRr20jN@E~3$j&m9fRMr)$$HrYIcCs7J0^^qOD!6$F2|4eqODwT_0w@ zxkk2b?B&`!YjxiZVcNpAdhCWU`_F4-(7;c19a_jb{T9Hv>&&p`4)rS}6@8c!ksoB| zArPKHYHWC|{rc=>62{GVAz^Pm1*tlWlLM}8$RTOL8+6~SFxv!x*u*deuOP)qU|4If zxG{Un#~2TR#5h89Rt<53P)jNzsLE}U&cU2Q`1OEP2YJTf!oCQSoNoc>!E;C|P%&(6 zvSdtP)(mynCqiNaSbxymDM)Mq59jf`BDWs%q0|0ov>{7OSVZvU>5F7FGC8Gb=3=T-Okk`ZdWbWoxC-_yFJtvg;Wb8wK+TWM|P_D zM`rF^q?#Fe-y_w;NcrtDQ-iZpd$Ut+yUpD2?9{yM)V1tX<68ARiA)&+j4Fz;~PpGZoKBG%W>Dj4o zvr~Ti&D>!~p~KKSj1)SIRK5ddszY{aadzrvb}I0osW&`3btpUa<{_g`sIOgiYQB;3 zJ6Ov#8>)EN=o8f9vr}7))cU=(T(hCtN0gd=< z*?9*bF~(({$I+b9BuK5Z^S*+VT~6~krr$aorj0zN`yL6?4j$8EkJL=7YQbBRAYSBF zkUyv>2t_R#2u2!LPVNc>>$AlL)XK>H?>OrX=jOnQB0#LDBZyZ{PJ=pu$UB30kyFN8 zHLic-dW%nrr7;%^uW^yHxgJt9IORwslT*K!;=L8`1J3JJ+y)%?g2qM8^06S+I{;s* z8$cWcUgXS308ud!#49IvgPdxhl2dOehT;y+n z7K7NzG7!rx2k{~&zKQ~_99;T!H9!`?)@NMgEP(yWz_BA47di1wQv6F!JuL5rp;)1f z>(AWizs2(B4B7BD6r*8SwvCINJ;(ZN7=ks_$j54Fa4d($Mb2_q{rD<}n@?fq0objR`8;2C>4s zAYM5+@%siUIrSfaTtSZ%PENg_LF~v=5cQscc)g0Fqa`hTuaDQOxK$r{yi{FQn+sax zcBP$@6Uwb{a_Z#;C-f#i^vlPKdD5tYloV&OkdbRU@wV=LqI4R|@vTF5@JdSa|B|zQ zKUME5c$#5&Ri%)V({#R%$*gKBpPb3+iU)xghs^gkIWBD#-VU7QJAm^dXR@P`$+=>5 zvsRKB-Bre4a=qJ0xg__5Hv82}alS^%D<>xurEqeZ6Rl)&mXB33IpqQ1<-untJSS)V zOe>aTUPu@f3Z?j0oGNpa{(NxC3;6L8=LB4#aB?PBDw&)HthN@$r;(5fYp9@4IaSK) zqMtlfERBP(85rR${P-VoHnvrjCuee-l5=v-?%fIpuW4Axcfg75RT+PWTlKip#R5>s zazK?nsQ4kp53Ab9nLL6IO}~7)SQ;bg6eMnbUl0YqKo!NAyr^VyV~JDp6>uiMRdPVb%AXk==Sz zq4^arNEKXv#aUY+rAJP=u#(AhK`stXYfGs7k}98^f%vw@_q1gqo3o+{P@pb<+k%Di ztlY~hQv&J-o)^3ZRbJxE=TA`Bys^3}PQ0GdCuayZ1m~zWQ#d)zZ3$igygN9{_0TXO zsn`bqIe#fc#R1^>v&1WzzmcSzj1La~P$dsn@+k0pz^8%pB4<4_6z6Zom?iMRb`~gn zk%k3<8B6$~I4xVM6jp%Kp&OK(rS!;I(Kf|*f#-pI1iUEt*WmQjHE??52XJ2GH0%~Q z%ire)!Ui8G1#%X6r0~b!3|I}NsNxFFiINwb4HQOB6nG)<0C3hDsPe0W^CBl6 z1Wx@lCla)zJ~%6E297^VOMFnV6@~x6S-zbr*Fou%)8I~ucTv0>IP2{Wjw{Vf7@WZo zFEb2I#RSN7?J#f-#Tan*a27Z{H5Z)Mt2oQgLq1g&;)C-0N}t??8^RI=kW*o);>*C< zv(+j;CnvN{>3yK|vcMUf+rjZ?`3N6Xz;A%Fp1a_z|DNLa!Ho@x31&PXptunOkXi7l z%IEKNsrRem&%x>9-IyUU1e|5S*$-z|)v0rhww$__LH$vJW^L zD5LPVnTd;>N&X_4yedBwXR?}-$!S1!#e)=1PCVEZ{bvIq0BA@kICY%(AYNDD^%dS& z$<4r7L31UyQoN1g5sG&N=WOW-&iZ5~(` z3eM^H6F4h;toSeBoUXKjdRAKV5(kd)M+T2Y?%=f02b@DuR`ItL_XWqFr7Av9x1}05 zU0MU2`nAAmK$zln6t4%)D<|g?-O<1?{xb3Z5l8#~l>zKwXINegJW2KJf5X}S|4Bvv zZ9N>iAvTOZrvuM`?Aa*QBXY`Pz`6EM1!tD7_#ANN&m)+FGhJ1YnP%|$gE;05K`hr8 z#H+Ef{u&7xRLzlQFtq~l`foTZ#=|TlI3vJWPtIpp5Dl3IbpnxhE{hLdok0Zt?ID&a z|MM{GpNCn91zhVvjH^u)aQzjh-aiksuE7hOSl@%V=J44SFO&cCFbk{dKM%A1d6<>+ zp%xEre2B%1oXLM4X5loge8GoUyvUjS=V2C{@T!Mebk08yv*e-kpNCohJk0v%Vb(tn zv;KLQ_0Pkse;#J>sT-e|{Qv1;R>S|Bhgn-{+^gPN91gQK6Fb7JZ;BF5YcuO@vEOO! zAflZB%GCjIS0vQ|;86#_c>?!^Ph9{<35=}^;GsB6Ahj-lpn3p)5~Jz?s8A2Ubpnq? zz&ijg5SaB2fM3K_0vYcBXiy)(Q;}I8KuCQ6j|u!L>NWsygTRUg0Dcn>3Cw8#AflnQ znf8Z8ENy6QFB&%lVrv8ys|ardl_vzY5^xdL#sF3~0ua?0fK6l(=-3#5dlLY;L}U{H zZcP9jCSVr@n*!KDU{F&4dBlDK(MPB~V6K+X7hK20&C>0Odp$ zfsSnfxVHoFwuo#8z^xsC!vrddf)N0A5Ev8zppw{6AUXm-x%L43L{fVI9_;~~Cs0-R zbO3Oaz}OA|0>oJYsT}|Wbp%jNjOqxWLPr4C2?U9NP5>?tnAHh@LtG`0(Fs6<&H!qN z%+3HpIsj04D*&fh(iK4Ct^jP^0Mr%X-2glxu$90& z!rC3c>TUp{x&vq+vIunS4#2$!fJP#+2LQJo01gvqA`12du!F#$o&cJO{REm=!lxI2qXfqG0uV0F5=iX@AgDKhwqjIo02O)zxK1EK1oQ!LfxxUj z06K`P1Ty*nXb=UUlgNw$5E2F8F@Y|kZeIX52(0J}pqqF|U`}5E5&Z!45KH<2XxtBg zEgC?i2#*Hvguqq;y@fRf!0KoKQ856bL>7ULF#z0S0rV4*u>jm+0URa}BMSBhu!F#$ z{s8)m{RE=>11L8DK%7V#0Kj7afb#?rgijoRqXfpr0Z0;O38cmW2#N=gEJnoxs1Og} zI)OnVAOXMy0<#hT3=vleWF!D+kO*L?$V>zfl4#8*eonMDwGJ0`lK|XEgvN>_Xp9sO z3Cu|X5HS!ynpiRrK;wY`Y{>vdiST3qPY7%!Fh*EY0IW_15S0R8tjHqJF$IA8AOPb< zRFhLX?3}6R=L4yHI68i~64+ciTp%!O7yu!z637?^puuneb4BKG03pKx zJSH$-)Exof27whL04x*_3CtM*AYvqdMPkWF0F6fiu)Pali3ooez!L&n2`m%VGytpL z1rU`6V1>vc&@l~wdpdwsA~GF-TRMQl1lEXxqX6t6FlZEjbz(n(=urU5jRvq@B#j2( zF&e;m0vmdX*m^Bu_c5#(J z##jIi#sSzVGRFZ383*7ofnB2RcmOvDtQZeqk9bI6&UgS3836W*B^dx3X8^EG0I*+# zPXO?Qz*YhWg>@o;)e`_jO$2aQWD)2%5rF$70H27+NdVj?0XR(Hm?$_Izzza~CIdJw z_7jMn44~W;04GJ#6aXGm0GuaqTKG%_aFoEWbIR|#ZH2hboBz(tXn2_PgBz+(bmiMlfY+#s-G27t@rA%QtF07U2j zu81W%fW|ri+e`pgMfgkrPY7%!a7|ce0a!f~K-4S%*F_eAj=h@1_;Z8m_z z1a69g0>BOeg9L!vVn2as0ifI*0Cz>w8~`430GuaqU---gaFoE-01&qe@835?wcAV8cYkh&2-&?W%Y#HdXGDr^F9oj{NX$O3SIz^p6) z4sn%0Mizhun*r1inVSKGYzFX{K&Ys@1;7mgE4BcrEgk}}hKVL0f;q(!Fwyu!WZSkP zyRHb|3cQ|JL-vlaZUd_?I*~OHS!4}`eLGkq5lPlq>?CU<3hn@FDq_f*iTz~Fh38JN z79xqPr8q{`O89&P)>;fD3m0d}+K7s~z}kvYWbMR7vIr5d8?3#UK-NKA1rr&&+1EWV zwUfx)1H7}iN!CTw{TQsPm`m18JS6Kbn(PJZA(oK!6i>+_Mfg6jUSbVdZ(-dJ)<<+A zixOF6eTDr1SU(X-7AR+0D_JHNEV}x0H|;Tz;yzHM8GEiE)baY34kHu>L=FEY`5@sM{e=(thKG) zvx2KAaLnpv3&B@+`G^%Wu#jWcj@A>~Gmlw6bI}6b#l5rmC(59ldpW-4$7^lr8;XjS zx2!9-m%eTF){G(}&Y+r>K6sx%gx|8R!e9iPwQjLDE^oYblHN|-J!_q0t589;E!(Ml z-s)zZw|&Vu>wGH)y7uSR{c zTN`e--nKgI))NB0=x-ET{m7bb^TLk~jE*j2vC3B2&|_5i?>Qmb_8U*FM^kh6OybQr z-ntnqypy#$crE1jKjcL;44HhC&v!L=nKH|G83^9lQab$Fxs<}{D2(sxm~T4p#P|j6AZGBjly?-!*O&O*lvjOVOwy1t|J-)v+9KB;NJ1C5=PVvnpUL6&Nx1rK36P4AS6j%fbd?}1qXNB=c2NQs?=Uo)W z*Ie4FvRxI%mxU@RjQ`p_?eYLsR+#xdt|zc2$T$3tmvaq8{y^Y3O0btb6~-|?p|D6` zEaMI0yI1T{ZvZr;1ZbY}0^iwXvLt9Ch#eZHFviO?bc7w^JH1wpe`!#JvT%e_^Z~|q zYk7@S*jq?nR@l1=D+BC`!pv7}%L4mWVd+Y*9I%o|v*&z?mErnHv%ontArCBl*=m%+@ zfnlr_#K8P3py9@mB9}lxEB7keE(hEeolkzlQoi=_a zQ4Qb&YT=r$3Rg$^vVq8VtLd&F&^HRxRfWNjH-c#VOoegEtpm|0zK_kaoN`M*G-|fO zY9QUEy|RWcY*Vo&=sAej9EF7<{RfDK&Q(|~r1_&D>d#YH>%mCi+MTY6&?heCMDtW_ zM;c!tn+xJ^Tlhni-XOki_8w>~XdGxfC<8PBG!Zlj#Fy;`g1Aia)x(;gP!NB75(kP0 zC4vTml0hk;L7>5)A)r*yFe?_O;Yf@Cjl?~qRwi;hk{O^0poySKpvj=AplP7#piB@~ zLauyCpn;%d&>#?3xgj9F!PWwV{lsuJUCZ$e5(S58UbfmuI&qV#d8P3c@L-Sw6auON zstF1Oxr2&=ih(>po}iE6#=W5ZATEbo>e_)KKwPExmOp=AaRbC9@)qbe=nm*E=pN`k z=mF@V)gtx|(`-Kcfd+ri69wYWkXnPnL2W=qK_24qFwGIP8)okV?FStI9RwW)9RcNq zS}I0hD2Pv!yMVfax`~M4TB|g!uC+lMp|%N>1>$dB_JH`k{U@NcpmiXApT7^ZAH?70 zbVc$E}*Bt@arB+S`U2ihi!o%{(`O&Xb<%HQ=&_t zZ$M7Cov(6lMtT+Uj)L=tOt+D~1JXe=Kzs*g6(}C*0U-V`Y%Yj<9A60^0U8N<7sNNa z)A@pXFe(oLZ3VCmv;(vg^bu$mXg6pN=wr}EkQa1If=Yo(gJ!{%vq1th2gEn2`TBQh zPzH>c0Gb4v3>pJ$6L=PAGi46?SR^7rLqVNE%~1(|t`Py^X3EWznsssqdGg8198)u044 zz~9t;07Eu`_>+vqApUY<7ic%=W6)mEKG0#%5ztZ48PHkKInZaI^Pn$57eE(5S3uu_ zY*+E|omi5l6-(m}C=S3w?})rkpw6H! zpspakZ*(2`H$XQ*{G~`!82Ba)Mfy|lUqR17e}EnVdkp#+bP@6;5DyPLEG%Rw@HDUp z)EmSdzaSd8k92NuSI`5bAA)`a{RFxQx&-J;GA<%f}WPoOX#-ZZzpbQX?y8NNW zK$PhVY61#|=Z>MCuaQafo}v~4*CGJ z2DA>e1k@FJzk~k)x(d1iq7I4r{CyNoFhvZ3z>Rd&hO4zOjxRoGgCH}az5^wo#etCH zKn~CyU>^eGhUA7c7c_2osMHbwz6it@{W$Bma7_SZfX0Icf_Qr2DW)bU1jGf9f%gN5 z5q%x|VE-|ikIi^(mIFbDvsL!p6I2nj8uA<9=!c~O$OrTmh!Iu-d5ntENS6X}fJ%Zh z7$T77rr!YE8|033ArPaK^U9oKzj7{BhQiMvhU{YyLyRHI@MTEf1KkBNp9az>HpbBY z1;h}20^-Ex9ApPf!)Yju=OEEomSZ?`;H)0;3YubpyD8U%>zW7GC4g~7E}gQ4pbiWHi&g}MmxS-R=JZ^1+ljdaPDqqPXm!2 z3!Lt53G#y3tkO82xRKlK$^Pv%jW#Qge?7m^a8a5wFT7$ z)d4xlkzX6U7AREgpNIoz7?Ld32At|mKvZuGY5=MadIwZbQCH|TM7j~kEY}+8R-mS! zmY`;!7NF*!a1ixKkx2Idbq8@}#TJxii9lisGG~D>)s3@1m)R~LF1wvT9K8-8R>(%! z02|_JcNk?zJ&|VRrcqqbOds?`+U!^q(tSYmL2usEE5te%njF37ZzdV@gJ9RV5+8U}i~DYGut zGmOm^4u6%E=_qP8H5%zrigFe=U1T;r)@)8>qBm);s`gcwSq(i+FHZzfF9r0n_0*jW zGJ8D>X^zeukO1WvrKZ`#G!q&0I^Cm#CV^hAcm}X(AjaWT@X1PtKA3{9p|ny3GXYJ{ z0prQ*RIOOWSD8dJ*afzj-3^XsF+cW_S+5KOmB(U+fkp_V<#f=zzbKwl?`5a_DQr>C z>wK{deSRPL3qjv=Phf&Gp5PMDYS1dsVh~RnW}q<7ENEhsSAtf6mV=gp%)DbLyG+T% z*v=-9+0GiIH(JZco5-~gJ^*oq)+@e2@x#KJp}j5Ar)wT*n}Kn;=H1OUq;DP# zBgm}tFxMs1x(7(#2b~7p1KkB(1Kk0g2Ym&)4Y~zlPj7<$1^OQJ9q20PThJBIH=xU) zuR)hU=RhYwropF>rV(i;@j(OF=vfeZc@aeHGtdRlm!K~|G~#m*^H`2VeR7sz+N_vv zr@^fARSm2Bv{x2lMH~WFz_dBmuS#<`=xVbJJ;t2(bGSJ=*g35_+VjL%Sz3H9RJs) z8GJb_H5+2=FjknybWR<5=nv2uv_a14S`d`x^O7Q;T9}5IRujuv85?AUFXP168ODhl z%6x(bcuQ^`2YIKG55yZz{-Y$o(~Q$@APS6yG8d2n$nb}3D)XGkbSuSKK|Q4TNQR3H z7Z?7MA(cUV7Qkl$k;vyG8Fqw^XNrQ%HHI^Vk8NnwUXDMFis^t0VxgQ6A|7-vT{~vMm+i3z|A<}jUe-Rv>$8?2kLlE%vUFd*lG!pP3q zplLn1*$69S4_T>c5XYVM@$m~iLL=x^-X3$9fF7;2ba05Du9cgfxUxj>fQ2u84FwJHaR~3@QXNgPB2U*0aajW`f^mi zESn7zj{vm;@p&L0QgJ7&4XO#M1qv0mIa=E{`D}{MsJL-Ph^RSQhctfm)?Pu0;0d54 zP&~+-FFB`0OBCg_Fm*XCm^Nh>{_UKdW}Tk{3u*!b(Mhm4;TBRu%k*)0R9J>$>KiLy=Fln z9~3r3iG06JIp+g~z$(>P`!Z4ceXRlB(iro;_N8^I=&}g)@wucO>Z#r_XRc;+|Ittn zp!#AljS6d_kQ)lO;||U5_(S+{C{(ZF&;Rk}LosrR=4t&{T&5l$>*ayo`{Q=Kv--Du zE1?$*y+BL}QE)Nzz7hFXYM$PAphx@s6Hd>~EH*L-dI3RI*y1x6(Q~op5#;77{o`G& zP)NBmWfwvts7fGB@<0yaGQHK)gIjmI_L`?`3Bc45S+GSMS*#Ve&JkA^!*2qw0%`rM z(n_!OHmsc}TIu|LkAi4(ouH_LW zmub!M!bSgOaMty_QnB_=`?5YQ5EKnXhg7U27C|9sBy8od_*QNF{7IK092N(>32PGJ zyaLFX)MsYa?n}q67;PASP8WAk)Ou9pS`NF`icqq;B4IgV(~Na2Ml=6x&R9B1Z!T0 z96H#uP@w_s%H;nXIn|8#w77^X`?R92=x{z!Y&HBdOEg=pweX5Y*Jxz!n;l9x7f*g> zlrRRXirBJRtCZWc>U$62UC_k?Z#`Mpz{`h)7ns*MJUn27tB3xcP;IeST~|6MfHR`I zXhnrl=n)m3JR2T;pySLHnl%;({h29})@h!tHbLZ^>eK1qf%o$-wrSS+K+uo$kHL*0 z`Rq>FVF?8~!L$(BnXiyTqXTk3yzSeth^uD(1PHvD{+75+>$;1~En1N`jI|(Blv=BK z2FG~Gu_RhMZ=o5EP0OkWmU@1Aum}`_rP1BReJG$VcH8R}=5WbD zMX{nb6<%Rg4NQ83ovgvSTTFtU_t{c7a-hMd1*7`^Uj5`;G#F5&I>Nznr>xq6xZNqd`X zEBnvvwXr>F#4P5VXf5`iz>2c^1FU5-?RBM$9L5`~C+7d+i#Oo-(?A##O1Z##t-6;e zizO0R!mMeDbJlg6Wpo2(;`UbbSdXCJ3k9xEmnzlGRW<9&3Q7S1eN5#7eK znNAT3=H0ZS?C{~^x3<39qj{2HyAffSRf$=MFg2?p#j-4Il-I^ea$(5ZeL?AeRc>Dj z`iwI4b(e5%hBJ;sfpcius*9XY zfQ{zt88CmmxrmjhToq~Hi$D(oLU+H}?dJ+9ea`k$Eg<}yqT3e4XFi;Z8R#Fki8-kK z{@HXW&_A%zn0%giYi%9$tY?H15rLPQuRto?9rKh+-fsh}n-bruk5~*Bc|O#9@V=wp zhghyBiQyl@$kSruhgv`FZlLhks^Lf^nqdI(etOhat&$o}+lnAO$rj<)HFqyZu-se! zJhBdPWvdoy%@AJOU~?w)*ePx0gHQWL@2I3%xqBnVEb~PxCG;bkQvPXO&%FjQxwh{&FPu-D_iCDAW?AwxjL{C}5#Y?>A-8XOlCd z(_bjWBL^-`Z#>S@wDPKs`iq5J2J2?Ai;^*kJ@GoMeFvm6qV^8>vkKlL z#R&Y>VZ+#?D~r8U|47{4ff|bl+fE$CqQvE$=t6v$np1cBoy;h7`>i5YUpS4|5K-_W z9PLI!f!-Pvv*EKw4I2LVLSdTd@e%sC5DMG}9zL$TcAV>yr$ww`wb40T>yX1^P~dV%{52L@j}Mh$OB;!Fo#k3g&$c6>(!J(4vQU z*yjDv7Zp7T6aKrfRKDqyBVp^;wEvYnm9EkV%y?YoR8EupmKm+fXC*PmSgtL##mHS~ zqrDKj;M0xbI3%x~P-kz>1Qlu5>FYu%xf|PW{W@|MO$)kT^vC2M zCu`Y$J0eEyhTodil@%Sz`21AoM`t`W>$_?x=p;_>MoaymK*wHhd2h|R_pe%@fQ5i@ zmm*yDz@i2sd=DB_Y@_H;X{Q*=yb)q2*+p@eEJgTyta)l98;Xe^Yk@_~{}nn{%i%*3 zE8eT8SpynvKl8CR(CRg}ksR(ro&0~vJ$c(SV|BpchDQ`Ed__aBPAr8ECtFclrxGno zj5(%RL#hPfAc$v_DyQ_|rke&9X}S-k{j1cVcV4VN+muek#jBMHm1;K3&@m3u#!1FA z`1NP@eJIM6scL?=UZpa(+%k${PsDA1BT;3)<`MiQG&s%UpVoNNBDReeG^$q#=H7Y@ zIUKhllP-N1apEwJE9R>Iu#t#At9f|wg%n1kdx5N7!=}a0fd=@Yjui99ATfxOM2nsyKOkJ`$;{+VW{=#JtPiWO}M_gmk{D9`+Jq{W?2h?tvIJCsr1GS)GoWugE zFKH~&p%J_n8YQ7oGoV?!;-jv7VANs6@MYwbLr(kRjn9^PxCKLn+Kn6-cItrUYx8P~ z+QrqQT5(q_m&PC$5mgUrHt+Mu!J#NUEF*mB(;fpxpezFvz8u(Gv_7cy)owHwI}U2| zv{fxcyF*ybWr*0Iv89Dr3dH+NOBuuKd^#?DHujIQs(tkPa!c{x5PH|Yl?=Gsc}sid z8C@0Ea){;=j=_B_tr|4nZThIW!8O_0*k@9k!ZH*gBntjiM@Y zIBT{XOPf)z-v{MXSvVbKD}RF4&`QHk(8}o!GR)hDA8#31;KNU#$!LOImpX`(OVw6wD2CH^9gjWk(hDUee%PMS2t&ezV?26vdjvRq3Z*ViPJ?J+tN&*G_3I zy!Z5$#_YS3+_u;A%X~Ct+(lv4>m!<cNOw-ET{l(BTZgmd!72api*15hS_zWH> zeAQRHcLwA4jmU9k*Jk$8Vei)%h~0HhZ?PL&n0Hy#g`*2c%?yn^ z*i9J<&!e*spi$(vXmz5BeYSa4`PONg^?J1MKBu+Ql!<0vULP34W5vF6uu_J!_v_1up-?OAH*oDF)5CzTeaywuUPz13764E z4(_@GlUysjKf-C+y;r~mo+ze zh%4q=#sBv>{459qP*4=Sic_6myl8z3?yMg#;sI+>@uKAy;6vhPUqehxiI=x8U#=;2 zZBO-e&#=0xTcc(1;sFcniWiH&!~%2b3$3{JdAta_1MpeAaQ#y2?(Lai{FBqKxVQF9 z5Z~U^ispTBvXvG6hcd-4Xno84Rjsl;**UTMf>v3REd}N_ONAzh1?ZXxyZ9p0Zf44Y z)?8x$MXkqwH2+1V$_uJsm|5MQ?>x;M?_}v%&#@ifDPil*M{-;h5K)22qRLl)9w60% zrp%Wuc?LH^J$yj2`^c#t@E8OxV(U%`+ZHAs~H26Je}Ai2C;%r)hQ z4&$e+hEKRUqcgA1d4+{9MfgjO(+&(4Wv^)6|AwJCBPF~4f4`r9U-Ko4%{gh##bK$U z=hYWe&75W8gR5G@ztIg`rFi9?l%qNjht@7#gErDU$f-DpQeiBGIXSIey?jn zD*er2GRNcPuvSa25fuM<;d*Jo%iac5tzyFst>@oZAJiuDk}cxhn_9#FY(w^xdUg1F z_kC9`kp-S^9P#GAnv{95_vEzl?@xf&Yao zv=kPX?_#$5q>CqaaYJ7Xiuf@;o}QL%hon1d|MNm_=BV1W97YuvAKcRl{f)Awg*Vg1 zb6BYTk}itg#~NVP{c@{CtY%J`T5=sZ8sB+ttCMdJGj<8%sYI1gV)K1;qQNLU(J(sk zVjjDT0uQveOjAwAX!k~o=m%If>WmQ!9>5GdHrVz+OV_HtCqf?LUb!~jMd72D=S8)M z)x8eIzj!tnK2|J#h+D$G(4d=o|1k7q?#1(SXbe|5pAA{mto?zMpI(%mK33dg*_F`X z1Kfc70VgW&-#q$-#$M#`v5o7c0jWp6Uxa6uzSz=vT^cKD{fHrb3=KYD`Jvy4>%X2_ z_4Nylf+FEZ+%5W#!@D6+xZkQnbn7wq@yfSZMQh~XyO#9n-v)1Y9QM!sA}4vA_!yOY z&sG{o=f350=%=eWo~`a2Cw}}9_aKMIi#k7H&%Q8TI_Qn-KNgN~DKgktkpuCCoaGL3 z_~iSSO*0$0bQydHIl)!%l`via5mSCb%z0*r)jw&zVF4M4IVcVXr#ITC+#A~I5BGzb zwG9w_N0L4hoZg6_xyZ&0QQ#5Q^D`NIa!@*`*#!9nCHnq{_uEuY zsR&KnTXRx$K~7=Rk>|r!CA{Vi7-Sgg;MOr!tb4>~)llHmKlgl1I`@wLvL+O&<0-#C zW)8n5cNdQyX(8H$@uJFO4Bc^P^NFCl$HK}*wUhjA9rtQg9C-Z=IlP_DU90w}jn?UF zki*GV4R6~_5F=0)_db!{E}mk;V|>5`VyldV&nJr5 zUr@D01i0X9f4j)c=i;dqpDd>PxOiv@lSOHpi-*_q$#Q7Vd++Mn*!L6-sw&l+1=`@LBHhKs-G*35n>uT% zi-)-PL@WLm^{Dcq)>Ex`@Y_@6W5GKcYcDCXH9~&n7eEKU-jJ6JP<93Ho+g9h!S;;l zbKS1bn(qI%$kGKWk5ej zKi=B6{8OyQhR4u_Z;-=TlQ8$a8_P@XyQ*>!SF%R0M^GpLg-=(H&ws(z=(19P$*!Wu zubB6qnQ}q8G-kg?(Nhokcu$SSe{@fF2vo@wU5mipI+^16uNdK0sFUZe?k&GOJ zZ*O6jqNRc`SkUFLlu2t?@uxeb`Tad!P~wB5fEi){CV^IOhImj2HiXX*iy;U1MG4-R zCDs|SZeLnxKIM@R{P+MleAety{s*6Lrq9E<#uy;v%$XtXvFuuC(A`Dq2GtvM;4~lS zaR>wOrlHCiwftbAORiJ+IG;IzcsqB7sPzYi>J~KUzXy4X#YUfd*5ZZ6(-|TW8eab) z#9C+(x>)Q1pP^PcM&7Ss1$a?s~>vu1sb;o1!a2EI$gkct1A?afzl z*mVSk9Al5*6RL{Eb8`om+Bx~Y(m)iXVaZ_Vx!~!H&M%^R(-xGUCPD16kPTn*HmrVeBp0L zIOSYNVL?&XpzL~OqvqbDEHo`sqo7b4Iz1QWq_RaE$mLR8EB?NyQ``tyZhmH-*(tBr zuL`nbBGoOsyEd3*_ER~=5magho%-o(

TFJL6PSbKN zd=?*aeqGp@Nyd&T9pGLH)9v+ZxLldlG%H#X{(HUdtG7@UtfF0BmzL@UM)6Tzm*Bs4 z{KRFV&YLb~K+6-)pGHS2(YTz)B6IIH9cdnuq_+F(H+xgjoGxlBDv7PgXN6qLN>*za zd1KhDx72!sXffV6DJtH{?^4y)W+mUB#kZ>^Uh#dKL*42*x`<8ru{{3y`!-W!dS~%{ zewTSTL8cXO@eHnnFU)w(J>}lG?(#>m|F4y+4~nXa;_iD$K&E^xAG;4%ML~Db*i}&c zV2Mb~49%~KQ81b@K_O_+44qBI3`84IX3xYhj34+xtb`Qof(oKJqOOffWr?AUk#6e2_rE4O0MhU@+)DXuV{!eqYP3Rv9LXFtWKJ;9Or%_9wu-p?&B>*x=X5x zsJRXti&%Uh_*M?aXzhsjHI?AyCu%*K20I$eG3vNyfg-5Ak<*A;aGpD-wI&zcH}&-GxRKpUp}oNIodb{a6{=oe%r-5z zH-Vux;o~ZZP@=EmXvlG-K*7`jbEn-|1=WO##{^O{;9OIEpQc8Eno^j%e%m+ zXjey!KWqUzQVPt+1_@0TGvYwuTMMWHMFYo$2FW!>`PBktgo8zQC7cfwCrj~%*`)10 z_m217MmH=DbG+Z1a~OsP$&tq42e>-iVL9A;)X~qGoZQQeXQUxvDlP~0ufjz{pk%`7 zM={3pIa{fnX=0JaX9`diH4OIo{BGW!7N=z4W{Z&<2El;* za4c9*3Ez+~}T$@Ni? ztvCb{IO10Y?s}m`Ertl4HE=_XR-{W;sllM@dg{3!QomWtOaP(Ah^tvMu-*!{8m-;n z9xA66)=Ma~s20qUXqcOi&cF{RO}Y5O&4|#iQn=0ZF<2hL?7VVDNkLBAHBz8KDpDfx z`&{Jd@0s>tx85j)`5z5h=nH&8Jm7;vX>&IJpkW6sJt-q%X#u4M|7}4cBIwSoc+b$6 z^T>-7;uvtGm>Jj*f@)$3Kxv4m_4t}og1sAG-?i7mZG772$@-ZTfET3Ki_Foofz@=C2YY$A+m~6tWZsOv#l&EbIY82 ze~+>Is2dio>ZgzZvx&E~bQT}-3ru_%7IoCst=ul-T8#`&KX^ufiQhhKc?osV*uT3vwq1-AfGX65?d) z2{y1JwG_`Ow7z2}DvECIktr72%%f423{J3X+MUph?WF}Wfr+=Yc5l$EuULd-u#PF% zX@exfdk`rCaG>*JFY2TapMx^Rao+M=U_w`U^_nwsOPdYKkXP#B6swl)?ftH}0Y7qZ zNbj}5#nEDdS4A`PoSn@ud<^!M!Y4kxVfvv-?wP+(ju=vr;M7>OWs?-X&ZGEe3`V1?a8dIO*My_Kendmdvh%M?zHMWtW2!ad|w-$!15oQKwD=E2O{nI~ml zYAj3++F*JZsxg62X?yK2H8jvy_i#^1w8T`rt$BVDV!RLs$sH06XD&7 zyh>D~Tpiii*7bI>%SLZQLAHGt-y8XACcsdAn>7hZF*uB{>{-*Bi<3 z3Asm9J7FANvy(y6;T3`MwQvfQ2b7;Z#lcI<`kwcfXpmeN!t#PP$#uP`F%fD|tLV&G zEFJz+L3{3zq;np)!^!s>xW%(tS%$gTdg@gAD1CvTz_dCAh66?fkyvE~aN^J2ZtEFp_WpzylruMan4D&@$bc{;>Lv7he&q>z)^l2{1WV{M4#hE&Akp(ch{<{fGPsQ+vcP JNa+#F{{ghGk)r?r diff --git a/package.json b/package.json index b10bea3..a5acf4a 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,7 @@ "@t3-oss/env-nextjs": "^0.10.1", "@tanstack/eslint-plugin-query": "^5.43.1", "@tanstack/react-query": "^5.45.0", + "@tanstack/react-query-devtools": "^5.50.1", "@tanstack/react-table": "^8.19.2", "@vercel/postgres": "^0.8.0", "class-variance-authority": "^0.7.0", diff --git a/src/app/actions.ts b/src/app/actions.ts index 7874db6..c1b98c6 100644 --- a/src/app/actions.ts +++ b/src/app/actions.ts @@ -38,7 +38,6 @@ export async function setUserProperty( } export async function getUserData() { - clerkMiddleware(); const { userId } = auth(); if (!userId) return null; @@ -79,19 +78,3 @@ export async function getPaperlessDocuments(query: string) { return data; } - -export async function getRecording(name: string): Promise { - const userData = await getUserData(); - if (!userData) { - throw new Error("User data is undefined"); - } - - const url = `${userData.whishperURL}/api/documents/${name}/download/`; - const response = await fetch(url); - if (!response.ok) { - console.log(response); - throw new Error("Failed to fetch recording"); - } - const blob = await response.blob(); - return URL.createObjectURL(blob); -} diff --git a/src/app/page.tsx b/src/app/page.tsx index 09c6070..1de8fd3 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,10 +1,45 @@ +// Fixed code: Moved the QueryClientProvider and ReactQueryDevtools to wrap the entire component, ensuring React Query's context is available throughout the component. + import OpenExternalLink from "@/components/external-link"; -import { getRecording } from "./actions"; -export default async function HomePage() { - const url = - "https://audio.typhon-sirius.ts.net/api/video/2024_07_04-230439000_WHSHPR_2024-05-18%20-%20Grandma%20telling%20me%20and%20dathi%20about%20the%20past.m4a/download/"; - const response = await fetch(url); - console.log(response); +import { getUserData } from "@/app/actions"; +import { + useQuery, + QueryClientProvider, + QueryClient, +} from "@tanstack/react-query"; +import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; + +const queryClient = new QueryClient(); + +export default function HomePage() { + return ( + + + + + ); +} + +function Content() { + const { + data: userData, + isLoading, + isError, + error, + } = useQuery({ + queryKey: ["userData"], + queryFn: getUserData, + }); + + if (isLoading) { + console.log("Loading user data..."); + } + + if (isError) { + console.error("Error fetching user data:", error); + } + + console.log("User data:", userData); return (

@@ -17,12 +52,6 @@ export default async function HomePage() { to get started.
Or sign in to access the dashboard.
-
); diff --git a/src/components/audio-preview.tsx b/src/components/audio-preview.tsx index eb9f897..a3ad414 100644 --- a/src/components/audio-preview.tsx +++ b/src/components/audio-preview.tsx @@ -6,44 +6,39 @@ import { QueryClientProvider, QueryClient, } from "@tanstack/react-query"; -import LoadingSpinner from "./loading-spinner"; -import type { UsersTableType } from "@/server/db/schema"; -import { getRecording } from "@/app/actions"; +import { ReactQueryDevtools } from "@tanstack/react-query-devtools"; const queryClient = new QueryClient(); -function Player(props: { name: string }) { - const { - data: userData, - isLoading, - error, - } = useQuery({ - queryKey: ["audioURL"], - queryFn: async () => { - return getUserData(); - }, - }); - - const { data: url } = useQuery({ - queryKey: ["url", props.name], - queryFn: getRecording, - }); - - if (isLoading ?? !userData) { - return Loading...; +async function getthedata() { + const userData = await getUserData(); + if (!userData) { + console.error("Error getting user data"); + return null; } + return userData; +} - if (error instanceof Error) { - return

Error: {error.message}

; - } +function Player(props: { name: string }) { + // Fetch user data using useQuery hook + + console.log("User data:", userData); - return

{url}

; + return ( + + ); } export default function AudioPreview({ name }: { name: string }) { return ( + ); } diff --git a/src/components/secondary-audio-preview.tsx b/src/components/secondary-audio-preview.tsx new file mode 100644 index 0000000..5eab2af --- /dev/null +++ b/src/components/secondary-audio-preview.tsx @@ -0,0 +1,138 @@ +"use client"; + +import { useState, useEffect, useRef } from "react"; +import { Button } from "./ui/button"; +import { useRouter } from "next/navigation"; +import { getUserData } from "@/app/actions"; +import { + useQuery, + QueryClientProvider, + QueryClient, +} from "@tanstack/react-query"; +import type { AdviceAPIType } from "@/types"; +import OpenInternalLink from "./internal-link"; + +const queryClient = new QueryClient(); + +async function getPaperlessDocument( + documentId: number, +): Promise { + const userData = await getUserData(); + if (!userData) { + console.error("Error getting user data"); + return null; + } + try { + const url = `${userData.paperlessURL}/api/documents/${documentId}/download/`; + const response = await fetch(url, { + headers: { + Authorization: `Token ${userData.paperlessToken}`, + }, + }); + if (response.ok) { + const blob = await response.blob(); + const objectUrl = URL.createObjectURL(blob); + return objectUrl; + } else { + console.error("Failed to fetch PDF"); + return null; + } + } catch (error) { + console.error("Error fetching PDF:", error); + return null; + } +} + +function DocumentViewer(props: { id: number }) { + const router = useRouter(); + + const [pdfUrl, setPdfUrl] = useState(null); + const [loading, setLoading] = useState(true); + const fetchDataCalledRef = useRef(false); + + useEffect(() => { + if (!fetchDataCalledRef.current) { + const fetchData = async () => { + setLoading(true); + + try { + const objectUrl = await getPaperlessDocument(props.id); + if (objectUrl) { + setPdfUrl(objectUrl); + } else { + setPdfUrl(null); + } + } catch (error) { + console.error("An error occurred:", error); + setPdfUrl(null); + } finally { + setLoading(false); + } + }; + + fetchData().catch((error) => { + console.error("An error occurred:", error); + }); + + fetchDataCalledRef.current = true; // Mark as fetched + } + }, [props.id]); // Include props.id in the dependency array if refetch is needed on id change + + if (loading) { + return ; + } + + if (!pdfUrl) { + return ( +
+
+

+ Failed to get document +

+
+
+ ); + } + + return ( +
+
+
+
+ +

+ Your web browser doesn't have a PDF plugin. Instead you can + + click here to download the PDF file. + +

+
+
+
+ +
+
+
+
+ ); +} + +export default function Page(props: { id: number }) { + return ( + + + + ); +} diff --git a/src/server/querys.ts b/src/server/querys.ts new file mode 100644 index 0000000..a9ab99a --- /dev/null +++ b/src/server/querys.ts @@ -0,0 +1,15 @@ +"use server"; +import { db } from "@/server/db"; +import { auth } from "@clerk/nextjs/server"; + +export async function getUserData() { + const { userId } = auth(); + + if (!userId) return null; + + const userData = await db.query.users.findFirst({ + where: (model, { eq }) => eq(model.userId, userId), + }); + + return userData; +}