*+$s&zQT&{xLE@;llUIg@+cN-S9m>UEKam=KxWePc=f)P zclaJG4Tm2)^Ipf&*2a>fdXMix9md$RDgT7dE0BAmtdm&Pd}n!k@8Vg1pxYxq)C74fq5SRG=P zPQWs=|I@!kk#HBR77D6m5uRyf@o%D!vEsY6%6`Mra-@SS)n^}zmoaDAnF){i(O-JC z4A+?xUybpJoQ$PLFg_C_!49lW(RICBgs+}k)PVe9k? P6?d~{&xlAX8HAR&I@^- zx13Az1o%1Q7vMzfm*L{@YSUkbee5-`l9($n?@cRz3+4jT`v^{gx50|D6IQyIRo||# zs&y@Q`<0UwcMpEzz2+}YaJ>@~Dzm|H6=(9FvBG^} r?fy*@eVpapLF R8(_7wEnF799aa)c?+$Cg` $bqnk`oOAPulGgAr80 z5SR;n??H2T2-bR@3TxfZGJ8HO|0t}1bg T{|(E3kNIEB zs&KFAV%d57$fyVVtw5}k<4e=Og5`L`>|?OfpRvxfGv
RlkCB(4aTV`9p>Z%QUaV&9YvG1brvL~J8m}aYPwi@ce5{M^}i>&+TH6C)~0+0@}Y_b!8&jlEXR?s8a4)2 z66>TM5A)>8i^B3-2$d5LZ0&sf35tdah=>EcVV-#1&V z02|B}tD&F3s%R6eHU1f_hU|is#5^hUPQmi~HqSC=U^$+JmBdxxFc0DsxD>1;)(oba zeKBhUYN0DmZ7Ub+`1)px)v*j%{&|^XbU<_CYhbnPT39`74J*L)u-euI*8bETmR}E8 z>Cafl_cFiU<|kHted3(p^(`p;(qCKsuM5=w=Ymyp^w$OIUl*t>1JYj?sJejFIdSoY zsYXV&wv)duQ2)9>wTqm;E>QovK((u=zb;V!x _olvl-bg>r) zw(0l7 qGVt4}$ zV(Csg>AJR0%m}yScO^EpxY^KcO;7yd|NK~?Ak$WKNi0~=B^a1etZaVZw$(3Q!8I5X zv}pbgm+|_l)D4tUk*%wE+d92M^U=W6loRP)w{%EQq2+s4q`QXJu>x*~(B!I+-AvnH ze!5BEhn!gY(48ej-p3TFHr*M$p{9^Fnmga)-e=Z~O{U2lXWC}dbY_n?Z3~*J*R92a zrfoMrJqUfsv>kE3yx7g_BojX~M?JB;$FyCh>0u%dPGV`dX}o{n-J{Nv_L#=Y3*L0K zoV3?8-JLbCWA~Y+TfPbb_nJzdBWiGTKY6(YJZz4<2jf*U?JG2mmTm)!Cg`a7>E<`V zDmi9;Rnfk+#+*RY$mlsr(c{xox7fkFbmO%%$8Sv2 1Hmw?39n;RZ zZNpd?XDL!$sbD%#I%n=R$j^)^JYP4hCiY{d{peDMvoL !W7@B# z)kd3U+66QXQyoyzwBJpui&n`rpJCOSs|RYBmJrwSy!wa(fKoAYyqdfoNGK(m)`0wA z(*o1@<;CluB}fXPsWJSd=$)|nNix4iXkVKaHjN+DypwuBrc}a2emM0`nPW){$j{i` zH>Q;`zb0tknpWC0epmBOn^wlOW@z7=Ru)Z@6#?f=tB{ANR`aV-?3oheRkDMdlTWwa zU1}P?JbBZ|Yal9{#xIrLo#t1?G=2m1wp%61rt!O*w*yV*XI0Zu`N1vrSP=435Y-s% zF_UrB1E 6R+Qm6$9J{apH=ov@C% z-zbT#OlNCdG_~R;kfiO6RNtLdh^x)LJyHcLYG7Iiv`VI>nbr~Q3ey_8tWktWx9FWH zs$)eN=H3~tk!ej#>w?zQw5D#JLS$MIziN7!R@B@yUMBFaG3^@D_(9Qomb_96cSs>x zTG8!DI#j8ZY5dIT<*-X>Q)!K+HFF0TYT9)!J(m#In>+8BcrP=qI=62yO`HEp)7qkG zIQe19TdnaY-Q@BW;%1B98)>Z-b+HhA(CTO=Nw=V>xGzXUyAtl^wkbq+bI(Rv0+jAB z?H=;0>~!y8T0gWbG;J9@UFv8;^s=G>NSWq-mudH+1*Y{zQ%44ZkZFD0C_?1jZSFY~ zU9deO+qA(7VP}WFMAWAt;DGt{Gi@l^*J#>5`kOY4{EKMX0tT2iocvTYo!a-twLabm zj5&x(1I=+H`MIVIGHn!^9u@0!&oM2Rysnm&2AejTd`HuUxa=|XahMg|N6{VhM`!qO z)5eltOjxB6rrl3|iD@HEdjRbprj0Uf9NIF|a!nhL_OxlE<63EN0^(fOU>kUh^Y3Ho z?l=F5NDC-Zdcd@Y$X~7J2BdLlnmX;a4NRNhx+=tj=AKVcx)n_{_lMESq1~WE&2KXK z^5!?mEmeqoE1F7C6)Sq!v`5gYnl{ t)xVyYF*polloV(AeyoqPHc4V(K6 z^P7eCBG9HY(`Ah%#G_U;8|f{^q9Z&TP5pihyoPo&JjeXzkY8?NHrLHlh C;#MjAd`+5r24)6q6W7^Z^w;1g<@=E`7`3muj6=_HKphT?1TW;Eun0Km2 zB<+f-{3&pkY0tTB3h}%ZEv2X=KHBD9Fl`xm>Dtm>L{o>KHc0!oOMQS4FPr rDGM+Iuud8|z!9y-dD3RoxB0?aGZKM4=U}MEV(IgLlys?G> #%t#?KEv2`M=v<_nB#Lp=s8&U+#))rM 2tN37^0iZmAw!$(c~n0zYkQ{iK#eM0^+v}y2hmo B-o(pl5ClW)y MV>BLBW==Uw`Px}UJ3JroVK z<^HQ_8u@1kt1aL+G*z_^Jc9NQ_;>UBocwfana?Js*6s(TIAAGU3{A%#02)iB#JE=4 zJBXnXTL!oXr%f$&WhwtdR`f5pxM^RKA4K7^u&y@ccNlahqq9EjQYR9kgcTh@x`A%# zY%XcqQSz!$XYM7Y9V1^^u}G!dC_?0vv7!@5zXF}jWlj5<`~}m>nRXI8fe`X5Z`vvH z8^U~$bOEdyz5%;zzAK`I3ci^byx`Y8YElt9jF@tI0Y|zNPtHf_*tSgVxG4`A9pbQ>?X#r4fE4 z;Ey=!+YQqz!^d1A|3*H`w6bVrZG~NDS~)ZY)IryqR-U{n(pcVLS_Sg^7z>R_+nB~3 zT}6y}RHDjmMAWjYM1DS+%G%k%ZFIpw>i>l6@I+9npiX}9p`X>al;_ x>JL-d3ubH1N7)%2p9^!XF|^b{jlC1=n=xrpcD9tE*=HPfF2|0vB628rviEk zpu2wE<$nisXRkZ?AHYxGyqLH@gI@qIiFEh&A+BI3bs9IMf<{1h^|~6J0(6-<3+Vb$ z4@P?e-OXQ*tvh(Vvojq$3TA`Hz!bOUk)T@JT(YCV7;qo>f;ta@qnte_IWwMS82$-b zQZ^f&3mTGd1ge4RAk|$yE%-fe4MlGNT^H&CurK-V!1v%B_yG(f> C+kO08t-UIDLyRj&Dr zU_)Lbrt1f~bRO27T_Pi+ySZ=Bz6H5xcN1d|tUJ2H-~`wSUInj%b>J-!24z55!22&= zHW&aN0n@<@FdIAubTh}zTRrbaGQUz$Zz|EXmR` hEOMZsza_}5@0lWxa0`pyiSwX{c&oBy6umC&`78VSf6;w-TS{9e{ z*jF&(2jGL?3vdYJq7}mLg7?6BpzG`n1% H$6 FqM`G?)jXU=i5m zQWpdjN)4rXw}MMS4VSebsNM7nvR5-@x|!88!kOSYunBz|(6hhEU_E`lgBtWi<59O{ zLC~;nDdgfH3Fz6=5TNHxy}@zZd(e+laAWtwf}p;?!lgbQ)bFh~rM?GxZ1M)4n_<1K zwF2m|$$j8=B2IuO0zEcq4z2_H(c8ni9oCCVdZh6sF&3ad52m{39uH3XtKH)ZgPQHj zP^$N_rZIlsaMV8yPrwU+E;zcwHv`=w+(=YK(`$Ykz`Nib@TT)!u*Lt_ZF9j||4BFd zZ^8G;n;DBeIO_^XS3I8sUF95bvlj&euhP5iv1 yA*e+qyAS z)lYSuwudtOk*?aNP`>|)Te=CqwQenxQuJ5m-3zl)etck72jZotH6ffAkC0OI-{%fX z8(*6GN}Dn93e(aXdwX5Y&4jJ#?hrL}vo;g2=r7cBMo!zf`1T4tV(}WKHPyq!w>MM$ ze3!L_>X*1)TR5tZo3kY}Fs0~^*(o)OJ=OIeO^(ElN^hFh%&YFoZ4GVlx41)FIcl%_ zWoxLDKhI6vMqNe!rrz0c(mC(Ikykm2mZ$MUK+GZIvVg}t%+{ng7uT#_y=JIoyzLBD zM(Gi5 (i*9M)7=I6Epe51)411M$KCv&=CnJwJ2b;T<#P6fR{2v3s_hL; z<^MOX ny0`a1-Q1pi)HlGj_!etILDuJ?uD+k_qWg(+ykNurP%+=X;66DJN=^vp zyQ2p}jrmJk@ *E$5B+7#YTMjBpZFlf+ zXt5i9h;B}IOOCP{mnrYux (9e-j$&jG#bwT~SgTMr#v z`jJq5|1Q`2NT^fLaXNoscG*Wlm%EKeLgo3V@xddZRKJb$kA^Z*ivHfc q0MzI`i<+qK;+wyWO^ 8ZJ^|9!0<}WQBa>pmPw>leZcat=pLjO@g)s&+Df~SpKJ?fj= z@7<4AM*N)V?y_ixpW}Lo@?FD|Q0&kQf1!Kt1VdBw2lSrLp4@Q5(vA1q!3+(j>DTmi zsB0_w*^T>}z3Ts8mqm{qmF(_0NzZq=l_yyUhu!Zd*}e`GEIy@`$yclvsx9J(OO<7- zx1H;GI+Wqc4hmIu%f2PV#m=4lSaBz2YdK!=8A^8NPKUPod2aogPzL{4cR!yAO=2f5 zc<^kfRWW7Ql1oIwBd=!LC!KLy>KD&q>-W5ZvR4
|T7B9KQ3l}VIP<(HYklxgF z%_v@Z+G82T3m(fzn$g=&cjbO9ewkY_HK~;AlTo~cqbTgU%}Yv`^Mwsbjbmj6ug**A h+|1qEEGfm6eJZKA%lj}XaHT#>Dqe8ihe = ({ tags, textClass = "text-x return ( {tags.map((tag, idx) => ( - + ))} diff --git a/components/series/JellyseerrSeasons.tsx b/components/series/JellyseerrSeasons.tsx index f0efa418..bcd9b336 100644 --- a/components/series/JellyseerrSeasons.tsx +++ b/components/series/JellyseerrSeasons.tsx @@ -15,11 +15,12 @@ import { Ionicons } from "@expo/vector-icons"; import { RoundButton } from "@/components/RoundButton"; import { useJellyseerr } from "@/hooks/useJellyseerr"; import { TvResult } from "@/utils/jellyseerr/server/models/Search"; -import { useQuery } from "@tanstack/react-query"; +import {QueryObserverResult, RefetchOptions, useQuery} from "@tanstack/react-query"; import { HorizontalScroll } from "@/components/common/HorrizontalScroll"; import { Image } from "expo-image"; import MediaRequest from "@/utils/jellyseerr/server/entity/MediaRequest"; import { Loader } from "../Loader"; +import {MovieDetails} from "@/utils/jellyseerr/server/models/Movie"; const JellyseerrSeasonEpisodes: React.FC<{ details: TvDetails; @@ -100,7 +101,8 @@ const JellyseerrSeasons: React.FC<{ isLoading: boolean; result?: TvResult; details?: TvDetails; -}> = ({ isLoading, result, details }) => { + refetch: (options?: (RefetchOptions | undefined)) => Promise >; +}> = ({ isLoading, result, details, refetch }) => { if (!details) return null; const { jellyseerrApi, requestMedia } = useJellyseerr(); @@ -168,6 +170,21 @@ const JellyseerrSeasons: React.FC<{ [requestAll] ); + const requestSeason = useCallback(async (canRequest: Boolean, seasonNumber: number) => { + if (canRequest) { + requestMedia( + `${result?.name!!}, Season ${seasonNumber}`, + { + mediaId: details.id, + mediaType: MediaType.TV, + tvdbId: details.externalIds?.tvdbId, + seasons: [seasonNumber], + }, + refetch + ) + } + }, [requestMedia]); + if (isLoading) return ( @@ -231,22 +248,7 @@ const JellyseerrSeasons: React.FC<{ return ( - requestMedia( - `${result?.name!!}, Season ${ - season.seasonNumber - }`, - { - mediaId: details.id, - mediaType: MediaType.TV, - tvdbId: details.externalIds?.tvdbId, - seasons: [season.seasonNumber], - } - ) - : undefined - } + onPress={() => requestSeason(canRequest, season.seasonNumber)} className={canRequest ? "bg-gray-700/40" : undefined} mediaStatus={ seasons?.find( diff --git a/hooks/useJellyseerr.ts b/hooks/useJellyseerr.ts index c0a8af22..8393798d 100644 --- a/hooks/useJellyseerr.ts +++ b/hooks/useJellyseerr.ts @@ -337,12 +337,13 @@ export const useJellyseerr = () => { }, []); const requestMedia = useCallback( - (title: string, request: MediaRequestBody) => { + (title: string, request: MediaRequestBody, onSuccess?: () => void) => { jellyseerrApi?.request?.(request)?.then((mediaRequest) => { switch (mediaRequest.status) { case MediaRequestStatus.PENDING: case MediaRequestStatus.APPROVED: toast.success(`Requested ${title}!`); + onSuccess?.() break; case MediaRequestStatus.DECLINED: toast.error(`You don't have permission to request!`); From eefcfb8be5623c7f81c8de8c065b8579c5fa3549 Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Thu, 2 Jan 2025 20:46:34 +0100 Subject: [PATCH 15/26] fix: plugins design stuff --- app/(auth)/(tabs)/(home)/_layout.tsx | 4 + .../(home)/settings/popular-lists/page.tsx | 96 +++++++++++------- app/(auth)/(tabs)/(search)/_layout.tsx | 13 ++- bun.lockb | Bin 590056 -> 589992 bytes components/home/LargeMovieCarousel.tsx | 16 ++- components/list/ListGroup.tsx | 3 +- 6 files changed, 84 insertions(+), 48 deletions(-) diff --git a/app/(auth)/(tabs)/(home)/_layout.tsx b/app/(auth)/(tabs)/(home)/_layout.tsx index fc135fda..3509be51 100644 --- a/app/(auth)/(tabs)/(home)/_layout.tsx +++ b/app/(auth)/(tabs)/(home)/_layout.tsx @@ -1,4 +1,5 @@ import { Chromecast } from "@/components/Chromecast"; +import { Text } from "@/components/common/Text"; import { nestedTabPageScreenOptions } from "@/components/stacks/NestedTabPageStack"; import { Feather } from "@expo/vector-icons"; import { Stack, useRouter } from "expo-router"; @@ -15,6 +16,9 @@ export default function IndexLayout() { headerLargeTitle: true, headerTitle: "Home", headerBlurEffect: "prominent", + headerLargeStyle: { + backgroundColor: "black", + }, headerTransparent: Platform.OS === "ios" ? true : false, headerShadowVisible: false, headerRight: () => ( diff --git a/app/(auth)/(tabs)/(home)/settings/popular-lists/page.tsx b/app/(auth)/(tabs)/(home)/settings/popular-lists/page.tsx index bbb89400..285f6e7d 100644 --- a/app/(auth)/(tabs)/(home)/settings/popular-lists/page.tsx +++ b/app/(auth)/(tabs)/(home)/settings/popular-lists/page.tsx @@ -52,7 +52,7 @@ export default function page() { return ( - ); } diff --git a/app/(auth)/(tabs)/(search)/_layout.tsx b/app/(auth)/(tabs)/(search)/_layout.tsx index 2917f1da..12cbad20 100644 --- a/app/(auth)/(tabs)/(search)/_layout.tsx +++ b/app/(auth)/(tabs)/(search)/_layout.tsx @@ -1,4 +1,7 @@ -import {commonScreenOptions, nestedTabPageScreenOptions} from "@/components/stacks/NestedTabPageStack"; +import { + commonScreenOptions, + nestedTabPageScreenOptions, +} from "@/components/stacks/NestedTabPageStack"; import { Stack } from "expo-router"; import { Platform } from "react-native"; @@ -11,6 +14,9 @@ export default function SearchLayout() { headerShown: true, headerLargeTitle: true, headerTitle: "Search", + headerLargeStyle: { + backgroundColor: "black", + }, headerBlurEffect: "prominent", headerTransparent: Platform.OS === "ios" ? true : false, headerShadowVisible: false, @@ -29,10 +35,7 @@ export default function SearchLayout() { headerShadowVisible: false, }} /> -+ - - {settings.usePopularPlugin && ( - { @@ -68,41 +68,6 @@ export default function page() { /> - {mediaListCollections?.map((mlc) => ( - - )}- - ))} - {isLoadingMediaListCollections &&{ - if (!settings.mediaListCollectionIds) { - updateSettings({ - mediaListCollectionIds: [mlc.Id!], - }); - return; - } - - updateSettings({ - mediaListCollectionIds: - settings.mediaListCollectionIds.includes(mlc.Id!) - ? settings.mediaListCollectionIds.filter( - (id) => id !== mlc.Id - ) - : [...settings.mediaListCollectionIds, mlc.Id!], - }); - }} - /> - } - {mediaListCollections?.length === 0 && ( - - No collections found. Add some in Jellyfin. - - )} -Popular Lists is a plugin that enables you to show custom Jellyfin lists on the Streamyfin home page.{" "} @@ -110,6 +75,65 @@ export default function page() { Read more about Popular Lists. + + {settings.usePopularPlugin && ( + <> + {!isLoadingMediaListCollections ? ( + <> + {mediaListCollections?.length === 0 ? ( ++ No collections found. Add some in Jellyfin. + + ) : ( + <> ++ {mediaListCollections?.map((mlc) => ( + ++ + ))} +{ + if (!settings.mediaListCollectionIds) { + updateSettings({ + mediaListCollectionIds: [mlc.Id!], + }); + return; + } + + updateSettings({ + mediaListCollectionIds: + settings.mediaListCollectionIds.includes( + mlc.Id! + ) + ? settings.mediaListCollectionIds.filter( + (id) => id !== mlc.Id + ) + : [ + ...settings.mediaListCollectionIds, + mlc.Id!, + ], + }); + }} + /> + + Popular Lists is a plugin that enables you to show custom + Jellyfin lists on the Streamyfin home page.{" "} + + > + )} + > + ) : ( ++ Read more about Popular Lists. + ++ )} + > + )} + ); } diff --git a/bun.lockb b/bun.lockb index 5712db3bd6ae099c9d606f610f47adb0b0f91ce4..bf2b7971ad8a3175345379c0bf51bd2b160f9c4c 100755 GIT binary patch delta 13396 zcmeI2i(ge$+Q;`gun%kvLK6|O81hysC?FmhQX{+JC37l`j0_bK6+ygP28_4VDaAvr z)XcHVXf;im H9LOznr5r| zssy#(-!CCPxpkhhuCuJNNcb8!XPB}Yz#HL)@TB1-mRxi4l@)<5^)E|^QN8?C3Gt<) z3X~OvEt5RqNrj_QMvS$rh!M()MkisH*e&43a1< iC4rE*74P8^&&Hm`Vi!Dy*$a~dNz#1y%W89%OInAnSR zM-~Z382gCgy!=FJ9Ez3#FOT-Weq$TYh0*@)H+E4Oey8Q#$;&1vD}lVCdn~I3JO>>E zkB6m^d6UNFjUH-QgVEC1z5eo+F|iMzB2o9i(&X44R*=W|SGDYzIs6GX#_!;! (bL ztA~Bg=cwCIA^z&KK9#O7iAz39BN3z5Uw+Q#RHD*R%3nRyr#{tHgH(4rf#r9rUN=Z( z*!d*W-Q;$X-Tdn+GVFdV<0Svop&5=Qb$hV9%n?3kFREKGn9B7zF~gPB85JsZQ3G^U zE~U@Im>ImGe3H-EhLX}PzZ&dw!V8qu2^HecEb!UssLuYW12fbU`qE%--GG55C{;b{ zb8cjdk?7n?$^B8%8OmQiBt0B)Z%|}D=5xMB_5P>2eWcqZmM$-*N2-R>+-hvU4Ytv_ zO!8JY&QPCo=O|avf?S^}*Hw8`<1ofYaS0Kla~nI7G&$5?y&*ju(G_9&Gl%$`EvPOi zZ%{>!c6$oP9G`O^%5*#GDU>wa q>XVa7p2QP z5~C35#t46zq;$GJ^WBdAqK6!3HwLMdk|9%Jdh$rsU1jPj$a%6vSr55ED}BxvD3)NE z($y`M&*?L^Zd9big(#V}gemqp7g5=$NL_s!V{}U)!CoGxtf4^<=BX1l-VIGh7x d|2!f2oKCQ8P~ Lkwr26}>WM|l+ zlazJ8o|>sLoB<@IvF6MM)v7rEH&5i*hHGRNptbZZu_VicojpY5QgRtu~6vF~xsC z$%+h@3OK$gj5I3D&tkBrp?dqLPRVe#l1jzy(V2w|fah^#`Sespoo*r7pB!&+^36kK zp(6a5YypS$r4o9ol%Ec9VHH*QoL#5~QS=n+Ep4i@?i3Xa>`X!49n36$+NY}ZE#tU9 znx7nFWPf-Bm4u5sZRenRp&I%#2l||oC|Pv$=1`w~Ybnk4Um294%5>Furol#i338gS zo6Cxi(AA28e-J6v3-hyMs5f-g1boW*#gJ~HStElLnaKS~da}?WT_xnvmmsGnKUw0* z?aY*osQXZsR-trM%yeb-4EA6yDH#LS2kYxql)I`$9YWnj9vxKdQ*CwCWWtx|OOW$1 zzjP_&vErFZir+gaOa&K$(-$d0-O?OCQkK5uFJ}j;LAg6`X1>oE#t)**j}TqmTcwAi zf^mYixqy=Lm2BKj->2OEVCP~cy^4}OjyXs9r%`erozI->&(EVMI~e6TR7Vsu3D3PK z=?FK<&2!xONDC<;7bW%NH-SN0ijva9{OU)aa|9(b(A_SaB!0-GqdflduV@lVhRO}v zmS0yX!p(ad)ibDM1^$dO4P5ARZhcx=8RXG1tksDq$#Z{_0w{Oemb_Y&%tso?Tz&Q# zH!s*RA)B62{>uZqI??mo`RER1F-mGd2Tk?aAEEmA*X3k5vGeO{P+sVB3Q@8!nDsS2 zXAMd=OG{U0GXpRF)0O_PQ!A9!LqgaS{+X&Gb&tLh!h%!$a!c*q<(r90LwWtx3w>&W zo;;m7a}cA9neEP!oBVF;gS}=CL3Q?DDdeY8Qn;}bF$s5~q~qNmv&hQ2mdjMS9VKOY zgTGPXsD7vjt(r2GP_myfC1o{5J!=+Ma4z*j$w&ux2Q^Pmp2f`GrmG;QHxC!?V5(<* z_DiT sQXc-3y&gYkGLjSY~u57iz9-Y z(r}cxUZbmr$nHId!Y^aH1DiXB-50uTXOS^IC!=JC;m42dayd$V7#qlPPzM5&=c@L- zOG7QodX?vM54_y)Yp~eggu~!>jC~EP&;eL3VIIe<_e}o#Fi)G-MmQYa3QL?Fuw3<7 z%G>40GqIZp2L8f03M*!bCnj0^zC;S|Gui) |328=4!0#U24m;7FsRU C-Oxj)h5Cp8%82I^=WQ(?J; zr3bngU7saDy0Ht3Uxwjs#xCs9*MCU|OFeraqu~2Zwy@YAfThD9F?L}IH^}JvEXC#; zyRi5THCkBmhZ!CYOZ)=qV4nJ|DJJ6ySmyII*bC1#dOj>SRKU`a&%$#3H!S`O@t1}y zgQX%b8-BF`11y36WC9Ay4X+zrpQS}_nj7DO<-V21{~cprWAuBlT=iM}*BZO9l=ERJ z38~pelOZg6tI_`ri~nxpU!SGGJ;p99dM_+J@RhNbN l!dz2P5?|0S38Tl-XWsnqBf3~~v}*oU%FNkwc}bVFE%AQG0YYi#nb zGxnxN#~5w~OWfur|9V(1VTtn_qv3YJ3^B+JH^NeIOQTyG#~|yjjwhy68rA``aI(o3 zmbse_%k8(o5-!8&TVc6`CBLiTZm^8tU9i+E3zqwO8GWzO_Zj|OLl%t`JOG1q#6Vas zVbOz(7UpEb8f~<&6kKGu7#9C=Cci%O4?9n~ZiS}7QlS~JjQBGRSu|493Ui~d1YQ7h zVr9K)?80LIi{ZBnuQd7pj>Uf!`4ayf<5!=hB5O)bpa3i_SZf@G#bKS%^;rUcfL-`Q zlP@g()yBTw*o7tT-;5TP3T-mFR1y+svoX|Xv2QW<`YdC-1G@~}9#{(g5*Gij4DW+E ze6lW?{L8Rh!cE|785cHcuN6 YWXXOWrliMJZ?)N^Tqpi{ofmDpVp~hGh{?LUW8|RT#fYSngYB z^b4@WTLQ}^ECnt#T3F)0WbCh8 FGZkE!-5n-e_S7u)%0yspuwH3fcn8 zB;N^3MRvh*33F^_orJ~jl;Ja_B*gJ7ESGRIIE+&{3EU8tOIU_5-st))J fPU5eM-IhlxlV4ms@7s)u&XqAO4%CQ@Sho6f6C9^(po0Q>r|j z$|Wqj@YSbOIzkpl{ijpuAkp%(cJ(Rs>QkzD^pdAlSu 3BlowTxY z{Ew<^Q1)w?I}6thnRg`qi2>hFdhFtlff*A*=6)Vg_qm3TSE7-DimcGKq5k5BLY zZW}$*oXvb`vg99`_WJZFyKi*evCUDFCI8)7x?dp$pE7ryAWP~bX9IOdf~Sl-AC*{l z8NbuUCjSBV*2@SH9dEMEnyh%T+UQM%_C)oX&Kzyejh6pB *QjSM&LovR^h>$EPH5a&%+6j{;>K5)U lQRBq64e)de}sWEGKq+JwkAwqk707~61T8-wjDoji{E%4vjL zBTUv<(pfrtoZVJEsLS!_y3n+!$aqY|W3jOn8`~soFB;nzW1EcakGh5sYFXgOIO%{- z0?Q`aBR$b=Ow)H6*LAoq(g{;2v{xW&iajkvZ3uie)!w3RJ|qVMT&bL3$P^3Z&lY3r zY;3k<1gcBz7^U_G_LkWlJz4S}@}ocw5?cW|{gL&&3w!}409nhjb|-@=Ko;v%APZEE zxdws9bk;PxZQe+dqd*}T2p$1BfCItcVPS7r2C^I69moM>3XsF}>0kzsh1?d~O`tuH zGtC4bhoo_!h2B5SZeJ>As{08gi~Cm~+l~Sr@H6@}d2%3p6dVU9K`oFK&!N6G0*nHM zpa>L$F+f)TU?49JdVo8Dto|&}3-ktk8t_W&J`(+aycv-_AOYM6T7uS~4QLB)0ypb- zr`wM=l9wyd;C@ENf!QBs*lSB=f5->JK>-*6F0u~41#&cUH;|2@C+GzZ)5LGU5g?m| zYz`-Y>;$s%Wu>16=YTA2S;`l|_uvQcBXNHMmjTCoO|88cSJH*6Kq3VsfsVRjrX6#$ z9K8$xvc7xJrLv}F@y-Nuz+CVL@Oxb|(~iHhnB*8x0>*-a6mbX~ X1l}ht?>XKEtHB#! zIamP}gQGO;7&rkQLcc`3TGAP$ )c`^~mD zmL@Se-_fKW;LE^6&&Vcq8rvCAjO{UE?1p8dIs}e^9bgq$1J;7~K^TYtkw6YC2Z14A zI+zJ&fw|xhKz1y4sCL#JBz~r#913}xM#yPeD(DQ-fb3Owfh=7;$8Os|4%7T}Yh^=y za*ln2y@d3OI%2LJ-)K3>*TC!G4KQEdIoIyk=oNaQ0xST2P#Ktkw xAQm(SEx`4_&-|MQ i`%x%Dv#IdhkD`zr7*ke36ibk2M`UcIWP&bJq*9inCZ*;XF{TS;#NHDEi~ z1-=0Cnrsu;47Pwzb)O2`pDgdUKLj6vYOo%B0yY2}w=3{3;5%>*tkI1Y*xjAA)Zu;b zmd-}n-{84hFIiywTFV>igFt=) EsUy@u*i?3zoM9~xd zfxO5*3ibebWiIdAw}BeH%WwN^dELHKH>$Mb5_r>YEvCUQfF Y{xLoV2#ZJbHMFj3-+y`29$#hRBZqu^TbELR%v&18e+DAS0AdhW1Rj}_Y_`y z`tYpXUj0QULOF7JeICdU{(H>2PvJj T~P8P1P;B-)`^qy4x1-aJ619-{M^ySNAb_K}nb8aZhi~^QcEVB_(%BO17Ho zoKL;6s ;!if95S$OZAn{ys>e0|6+XJ;-dzW zmdyW(K%J91CGm~c+dBDk0=W_5>b@xNxh$n=!rQlva|=vLPO&!X($5JSrB_37bzh=e z1Lv>$;|B+e@Jl8h&$LNeZ6#i&j@wG{rFw~|IXbYFn|tZnt=@b!N++Dh7@-TddAF+f zb=MlyMm?a$+b6E>)AR?9EqyTe?G>kj6-Z6u*;?rj#qUYIx5k^wr{y|wySG`~Wxn!c zEXoGd+}G*7SDM}KR+t`24b_?3gQW} O2r>g=hm zsqT(Choqf22ZO}wCw4MWrssdzS$AWsF3G|tBapw#TjYtW`)>WM*Yf-aqrZKT`lTnO zB=MmCfIh$5+eZ!7-S;p+bzi}sJ2mC0w&i^`x$Q`&;dAuZJ=A=eUcQG9lJ@D0z24bs zuimiN`>q-jc>GK645eCWwU0)o=s2NFowkpztotbb Nz9v*K;$r>9H{Rx+?`G%= z-%z eN zRmM?of=bjmN2z3YU2&A+dg?cX#_J7Y9Ir14ZP1Cwn8xw?S)md7$}wCf=$PZ=&D6b) zGn{qb*mvG`_v<&L_VY;(C8tSqR_oH^-uyW8k$su-;nJklH8YNhL$Isa+tdl-&DU{I zT-`_dZ!Q}-V9SHu&eIxk fm|V+u6!f-bT8 zgIe#s>JuGtiV@wW2cE)jOW=o7GRb0epR*Kfrf4fY^$hj=|L10!UUi1M|JPl*>?}(v zn3JlHpQY;Kb;!B8k%-mzo%3#Uca>DW_t*W;d&@kTivoMjd%J~@&>w8}w$m#&d2b91 z{m%PA7pGGPc7Lvwx_yVR%s_F6urlQwOmvM=flG;D`)p52ie8l(7BlNiYFOY*YWVCN zmRI$#uogOMW_X1DAT_LkCd<+9RD>s!)u>PSjryax;SF`S1>xa=qy^!3b ZgFh=f`UwC zRmawwJmHDiqgss|Ygr9ODyud+6}!Z40oQ~Z!BWRA6T7M5&8E(chS$Oleg{V>D@Ocb zY0IK)ub#2_dHFe6i4R(}MthA)A3Z5 Cd=ofF;}udG<|a=KX7P4IGb6g(T2 zPG(HZ&lo+-vc{pMv!!lfqp0ZNsH&&|uyi^49xKF8xoaA=NS*Sy7b63%LvC-l2HXj* z1_xj%9sPu-)ANQ)v#kwbR><$H8+&Vqf Bf}IV@8>8$YSF30x0OCGO4e(40{@GWn4+y*RyLDVMj(lF_X>?RFfcqHeRi z`EBoBzBQ_#HdYx32bSsw&ha>X >k5&h%d{2Dl8oxH+op+(9GtR)tPCMo}66l zIqZkUVMzM0;j%!}$Bxa&%eSl}ZbIYEHM%VE7DE7*>1pQ9Y23kQEp 9soiqbkbo1DsjQZ$FgG =n5s3e_ox4J8mlyunVrj8HT+fZIx?A9Dd-l#jHNP0d@v-1Kfff9_t*?_&{ z4>vp4tI*Pgi7H?xi}a>#%pb{>B-^+tTa(o{x-63p)g0rMq6?D)P8XESMs;1-f*8{z zGZZ6o14$WdH+6jrH|JlKBGJ+)B{QY!=}B3tgX*n|A!kvZvigxn%%XsE4#m!!rgTXo z6>uIMTRtID;hQK~t%S)9IR1QP^+#0=E$G3zT{h7+VB~C-4l^tD#(A+Vsn^Lv$y~Dp zMhBdaP%=3_w`6s|xrJj_rUP|0;Os+ wfHPqw2bD(gW# zHB}`$BS}hUy;*({C6%y;`UjkUp}Ykp?e8|p8!)9)XR4$~)L-zlU0HftjPjOtrODpX zi ?NrC+^Lh3ofD)IvHNstHWN^Lin0QFs-jKzk?c#3KeX~*Ms-D1 zaZ}m)S9Mt)Bej^H3~^!iEDAVhQGHO16#J~pRAqG%6$ VSZA4J9WJqd6>K_bi~>?zO?m%GJf=SO*7n8RRtK z6qlV|MVBaMegsmQ7vXYJs1J1UczlZZg^(Rdx3WSFnLzneJxS;-T`W{vmqE@zeyYTi z;w+VesQXctR^bd(v!|5REi{7pq+||QE;RdHl((ftT|wPT9s`scP Xj^SX9!A$LxpzUyC^x@SaMWv@jEER7<-mnrcrjNORu9^kjFy8vlJ!c z;6=G>uD2ZNAT{Kpq?!B_FlTE~()kEi{Ty(9M#%#7P75cM-!B;_pIdl{9-;nd+MWEU zN)=w-W>mM3k_}jG{=fUTG~o0^B}-6Q7S3Fg=lv3Wj`B`x$@>>dmLnZxslN7%m&cr? zC;6UH?ymz W!J6L_a6UuH zQEBOt{;WU$qH wL$salBEGPM^Ac+ z74suTnKIj3BgwAU`Or+*<58{MYuWrjN(wihF6_b)fs%2jSNw#<7L|8g7E&LS)XDGi z^rT2cFGQ8lem{+p!;JMPTdC2rW@ou2Wl50;ndZ>RpkCIKX0fVI>SD+l%ngM%lj_-k zy&lzFZUMLfyXw-4JMjUObe#Rg(tH{vhYP=ZoRsgO0{JsLe zWmzk^CHKLv8(sy6qu+)j;0?z9F09bSuw262fm!dH{10GmFs;wvNO%t{arVJ-Rb;7e zza!P^lmjX%TH=0 C35&fiECW8s*o7rry3rL`;te%+Vexy+Xkp18 zAp v7}o1T5=$1}y7-p3#e8@poYvNDa&N->~>E!(Te`N+tR)4fs0- z;gzrie$50FmI7}YU6G|nZ)2BoYhWq2*7$EQ_IHhbAC{{ki~ptqld;J-mcY`o&x~DI z^d6)C8y5esjekX!3J)5)u;_wAB%}w2O@^>+juXcIEi8_wj6MU)^=B;m?2_@nZ2T&+ z#Qn*{`PpOr;Ww%_H%jbEQ}AELA#^Zd7nZsA!{QfVbQM^ppgJs5RLkVoHukzkM;opO zOGj@q`SoGB;D(_<4UM59OMzRlD?RnF*(^ ffxwOB`iAKXki{^Sh+?E zOT}Xh=fUDX-sD$g{zkW+tjuPS2F$=gS~LrmDPIVS-8BV;C2$eULn`ZSV;2_tYQt*` zuQmC9#^S$@e2KrIz&LKGz|xR+(c)MPOAj`gd|}D|(CCUR{vTl%E;0GS;{Q)$|HRmZ zC2ql|#vm*$+Gez{1ln$NMHc%GW3R|E$NR9$)E$JS;%{K_KWz92%=0GeS1-Sgb&Z5v z!nNQUOiXosp|UR!`lW1vl!hi64#>Q52}|50qlINDbT(R8+Hs%ZUdApg_P$0}Wa)o@ z?9%Q5H?TIvXE^^zMI&G-m<@|#E-VephvgEMO+6Xr$(7~8; F5@GQ# zNFpHx+8MqRmX_TGOAkB165t+K+SU`6^QkW^e*Iv%{*0yk0OL2%_z6pWgFN fNFuIo3basw-SqT-FIjErbGPOjgeUcWH#ygDP_N&h zn!Bj$H>lTdQ2*@4RDL l8&RSa47hGC3?9JgFhhCk&FQ#y}-TtE^k32bO?z5|k ziZ0%kHlf+<_Ni?zE!)!fjWhc7Yk?8VQjRUz{L=@opZT==$G`S@X!^B}dbQdbS9tQ3 z;EeHM^LAD#|1P5&FF>mX7j+G967J^q3wO5CAeQd5^SW2p@I)tt_evaUo@}9aCxjpS zkN>QeAhTBY3=gjEY3JXR@|8IecW?tQKawIR8QV@{lbtfz*mhx)A(314$94KB`^J >z7(`!cAO={2PCt9w9CQJT&iPING**$BAT7*1p zvgB_%pYD}S#owD!=g5*a$rFL{2Z5!=ov%l%F2?VIvB}@PJ@g7f)Q&Y-7fn`uvToO( zW!n?fDxEsoo>yD`-jpkxKZRs~;=o9Kd^GiUlR@C}lO=!W@RG zusrJzJqduU+9pIh(g}J`j@_i`!=@v3O%^YvtS?N6Xk+7Lh_zS8<}zsVbVjZi6TJiJ z>A|kK_C}vtukEq+JatVk8cW-36L^RTl7;6HGoV9_Z4|ceu*v8RGq!BfZ|dU`Vg^}l zk&l_I9MTI+h~dVTi*2E?jWD(`*beK2eA+8Vyj&wq)>zWrb^m<3iF!yE;*qk<^eD%8 zOu%EgvE>@uL~MUGwlT&w3ERth4 @ky4Q5ONx?{xSs)vX2036L7z73b zc?y^YdH|Woj&LfF$BwOmJVKudW&zpA^4PK&hy(ISvk{Ox&zr$5Ko+Ge!g_!uq%Tgl zqYLEO>R}AB-4*bGFc1#px$On= 8;~ DU=?4m^y0nRw?(r;wJv z{@a2CkO=si!_wiFUN_rbRAmkGvKFiZ>vgX=_SS-y%*9o@R0dxI;f#zNQWvm&5Av`* zN{p{zIjBy8b6_7>2i^snzz4tq)j)N?V@fL>WPq7qHkbqEgJ*!8Se#JJtb0lPMnwau zWG$VLXJ~CeTMz(pR&@d0b;(@2$!+oo?OBF(3DDp -qLj6}yRnl~_$?9^$C zY&SvPc9(#U!9T$#U<=p^B5?a1md`%_2mS%Pt7|N_J2;zY!v|oE?vJ!j q>=4!Q$g9gg8 z>>q*L2)xIt+X>49_0`}_Fb@1qkSXv~Aa@1rz}?_5_O9>(>Xb*x4}lZJD8l{*n4#A{ zYoAve^ok{RqpsD+l_%!27^Vx9`kTS?a1p4?F!qJzg+&^;m#7j=Uc_t#AA^s;`?`v@ zcd5_yVQp_zFY2Yw**~hCdj3+oz>%*E4uNo8`+2)V^kI^VnIRVxfrZZ#ldD!R`+0k1 zW4&;zT{n1ZiG8+er7pX@tcG_4>+H6l`bFoh^Vj2pRQ=5rf3wK;DJ|mzE#njQ?oa%+ z_1mBOZGEJ~UxzPIJ6!cgg|&)rr+@$4pQZNctZn{fG3B3^XXdqC88iR$44)d*GCrYg zd;<5@vD^L8DoH1A_b*dT^_ac>XnkqBzn+TK* XIG!ZPbULnDS4? z4=hQI`Dx<3Zp2H7Z%sJMix5-(jd`~ft?I *6F*bez~5qi&BI1+q?Y3W6D2(k7*e8Qm? -=7v!{w4hUYBPS?(d&Nl2PMY0l>W`uHy;QMV&DLcdq-y-;Jc-Z z`u79=IjU68`P#o;Jr(S5&_9FkoOJVxxOUP<4?(?k*&*u7&;!0lO$nxd mc1LMV`A6!NhV`u3==^IB`&26$BY()G>J>+c zHb`$gN|eWg7mrGmCi?f2{$=`^<8*Vj-gKJP__3t5K75>Ya7hn7K}&wqZwW2ezn)-5 z%fG09V*IMau4!d|r^n2v^mx5)agsW==&mQ}TqyQ>U*t@^;aghRTc7)u7PjX*L3a1F zv(Fdx&luROYp8T+J#^E(PWhXwNA%QF{xrKgp9x0k!c+d6b?GU8O}^;<{ggjeb=0w^ z{fRN EKwcMmrwhLt5&-I8EC35IfLIE zedrA1u~b((OV`T3x^KO^^BcD$_6o@GvBK%v7X9`)2IrBp{vK+sUWIed@=x*4xBuv+ zCQlTX(uS7tZN<6#WBp%hmd4cFP_v^?CB(N1^|AbO{ M25ny61T)R5Vd7(I?L_H02-q_kZpD*1xRS zKEV`bXxOIT(brKrL+BU1^gGU~|GzF1Jya@MKY5;>@7H_Ivk*?|`lTFSM}iwmWo0(g zHDvXgMI6wnvTV)j?V=}L^e5_;BmDLB$KMm8qH~%GWv4M)Tk-N{C|cLL = ({ ...props }) => { const width = Dimensions.get("screen").width; + if (settings?.usePopularPlugin === false) return null; if (l1 || l2) return null; if (!popularItems) return null; return ( - + } + renderItem={({ item, index }) => } /> > = ({ const childrenArray = Children.toArray(children); return ( - + {title} {Children.map(childrenArray, (child, index) => { if (isValidElement<{ style?: ViewStyle }>(child)) { From d4c722aeac61fb79762584375b0623fc0ba6c972 Mon Sep 17 00:00:00 2001 From: herrrta <73949927+herrrta@users.noreply.github.com> Date: Thu, 2 Jan 2025 14:08:15 -0500 Subject: [PATCH 16/26] Refresh jellyseerr page when media is requested - refetch details when media request is successful - fix key error on tags --- .../jellyseerr/page.tsx | 22 +++++++---- components/GenreTags.tsx | 2 +- components/series/JellyseerrSeasons.tsx | 38 ++++++++++--------- hooks/useJellyseerr.ts | 3 +- 4 files changed, 37 insertions(+), 28 deletions(-) diff --git a/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/page.tsx b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/page.tsx index 0be85e92..42edcb59 100644 --- a/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/page.tsx +++ b/app/(auth)/(tabs)/(home,libraries,search,favorites)/jellyseerr/page.tsx @@ -55,6 +55,7 @@ const Page: React.FC = () => { data: details, isFetching, isLoading, + refetch } = useQuery({ enabled: !!jellyseerrApi && !!result && !!result.id, queryKey: ["jellyseerr", "detail", result.mediaType, result.id], @@ -63,6 +64,7 @@ const Page: React.FC = () => { refetchOnReconnect: true, refetchOnWindowFocus: true, retryOnMount: true, + refetchInterval: 0, queryFn: async () => { return result.mediaType === MediaType.MOVIE ? jellyseerrApi?.movieDetails(result.id!!) @@ -94,15 +96,18 @@ const Page: React.FC = () => { }, [jellyseerrApi, details, result, issueType, issueMessage]); const request = useCallback( - () => + async () => { requestMedia(mediaTitle, { - mediaId: Number(result.id!!), - mediaType: result.mediaType!!, - tvdbId: details?.externalIds?.tvdbId, - seasons: (details as TvDetails)?.seasons - ?.filter?.((s) => s.seasonNumber !== 0) - ?.map?.((s) => s.seasonNumber), - }), + mediaId: Number(result.id!!), + mediaType: result.mediaType!!, + tvdbId: details?.externalIds?.tvdbId, + seasons: (details as TvDetails)?.seasons + ?.filter?.((s) => s.seasonNumber !== 0) + ?.map?.((s) => s.seasonNumber), + }, + refetch + ) + }, [details, result, requestMedia] ); @@ -205,6 +210,7 @@ const Page: React.FC = () => { isLoading={isLoading || isFetching} result={result as TvResult} details={details as TvDetails} + refetch={refetch} /> )} diff --git a/components/GenreTags.tsx b/components/GenreTags.tsx index c90ede32..cc5db670 100644 --- a/components/GenreTags.tsx +++ b/components/GenreTags.tsx @@ -26,7 +26,7 @@ export const Tags: React.FC= ({ tags, textClass = "text-x return ( {tags.map((tag, idx) => ( - + ))} diff --git a/components/series/JellyseerrSeasons.tsx b/components/series/JellyseerrSeasons.tsx index f0efa418..bcd9b336 100644 --- a/components/series/JellyseerrSeasons.tsx +++ b/components/series/JellyseerrSeasons.tsx @@ -15,11 +15,12 @@ import { Ionicons } from "@expo/vector-icons"; import { RoundButton } from "@/components/RoundButton"; import { useJellyseerr } from "@/hooks/useJellyseerr"; import { TvResult } from "@/utils/jellyseerr/server/models/Search"; -import { useQuery } from "@tanstack/react-query"; +import {QueryObserverResult, RefetchOptions, useQuery} from "@tanstack/react-query"; import { HorizontalScroll } from "@/components/common/HorrizontalScroll"; import { Image } from "expo-image"; import MediaRequest from "@/utils/jellyseerr/server/entity/MediaRequest"; import { Loader } from "../Loader"; +import {MovieDetails} from "@/utils/jellyseerr/server/models/Movie"; const JellyseerrSeasonEpisodes: React.FC<{ details: TvDetails; @@ -100,7 +101,8 @@ const JellyseerrSeasons: React.FC<{ isLoading: boolean; result?: TvResult; details?: TvDetails; -}> = ({ isLoading, result, details }) => { + refetch: (options?: (RefetchOptions | undefined)) => Promise >; +}> = ({ isLoading, result, details, refetch }) => { if (!details) return null; const { jellyseerrApi, requestMedia } = useJellyseerr(); @@ -168,6 +170,21 @@ const JellyseerrSeasons: React.FC<{ [requestAll] ); + const requestSeason = useCallback(async (canRequest: Boolean, seasonNumber: number) => { + if (canRequest) { + requestMedia( + `${result?.name!!}, Season ${seasonNumber}`, + { + mediaId: details.id, + mediaType: MediaType.TV, + tvdbId: details.externalIds?.tvdbId, + seasons: [seasonNumber], + }, + refetch + ) + } + }, [requestMedia]); + if (isLoading) return ( @@ -231,22 +248,7 @@ const JellyseerrSeasons: React.FC<{ return ( - requestMedia( - `${result?.name!!}, Season ${ - season.seasonNumber - }`, - { - mediaId: details.id, - mediaType: MediaType.TV, - tvdbId: details.externalIds?.tvdbId, - seasons: [season.seasonNumber], - } - ) - : undefined - } + onPress={() => requestSeason(canRequest, season.seasonNumber)} className={canRequest ? "bg-gray-700/40" : undefined} mediaStatus={ seasons?.find( diff --git a/hooks/useJellyseerr.ts b/hooks/useJellyseerr.ts index c0a8af22..8393798d 100644 --- a/hooks/useJellyseerr.ts +++ b/hooks/useJellyseerr.ts @@ -337,12 +337,13 @@ export const useJellyseerr = () => { }, []); const requestMedia = useCallback( - (title: string, request: MediaRequestBody) => { + (title: string, request: MediaRequestBody, onSuccess?: () => void) => { jellyseerrApi?.request?.(request)?.then((mediaRequest) => { switch (mediaRequest.status) { case MediaRequestStatus.PENDING: case MediaRequestStatus.APPROVED: toast.success(`Requested ${title}!`); + onSuccess?.() break; case MediaRequestStatus.DECLINED: toast.error(`You don't have permission to request!`); From 49ae9c6f576a74d17ee5fcf4256540758f18ac9f Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Thu, 2 Jan 2025 20:48:44 +0100 Subject: [PATCH 17/26] chore --- bun.lockb | Bin 589992 -> 590015 bytes package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/bun.lockb b/bun.lockb index bf2b7971ad8a3175345379c0bf51bd2b160f9c4c..c656b351ea11b88ed6a59c302c3ca445c9e5615c 100755 GIT binary patch delta 16179 zcmaKT30PHC_x|3(y_cgR&Wbk&M8ydZQLl&wn6o+Mr)iET2q-854rB;8k@Ik@?UagI zmS(1fH&RNhoX51(%*?MyoHG5i98&-9I(yypd!Fz2KaYpC-gmD(t-ba-`yl82+y-Cf zHdqo8u-@;xrwtFUx!bbNvXWOnSkbB5>L#J?#&4|Jv~~W{&WU1p=#D LRu-@IBcN-DESK#(jp`vueuYY;C*6_ofwmWLcVMvAhK`ytCgPEAY` zbj?kW!WVeDnIBL?_Am Sm8ilA KN;jaiWUJojEd}i>d*!1|+#H8^w zSbt20Dpa4KCo?G{X$ Q6dI`%t>nBSQfEp9J3Go8tT;Ljz8Ia`o_^BE3 tXGLq-m~%q~6vq(9>AVat0*D>tskw zHyh)gFfJ)xh}oz>9i^nDB&7h)Sfo2hfuxlivRIc704D#HU!n&(2$Jd{mXc}2zcJqt zb~Le2mXpvvZH6RB^7EweaY>_-nhDVr%S1Cdu}m9$1xW^@V&f7hY-7{YRPGQ+d3EmA!&K4n{yjQ$s6XOMnRRLSLrT;F$`+qtSN(P_ Q4e-; zkkoz^ND8%;A6TK6opTEcP3#pEkjvr`m?UF>X#io6 !wt0}`{xy4aJ4TWA>TF=jWo}?9PY0&<6ClZ(M;BAR$rd?xFavU5@Rz(yQ&Zzd z!xy3Gh$_^9q~+?lSI5CQp0VJ8Bp2%~=IL-SFhy=k?6`PxT{mE=-xiXVyVF;C08N1_ zWP`X5SJHY{|602^erl4n6gR-rNaItIGBV=RGLNET!YSYAhK8}cx=jaiUtnq{d%w2Z z%l3`~dH`KfPM$3QPfJ_V6rvZ+uoMO)FF;ZQXAf$RY+=LnLpnw}x7IUD1f~Wi9@a~d z2uTf(FjqFKJNViWonmLatEb~Ws#}jdrWd3kB<(LhmhYjQ{F8TFms2DLk4{bsIiY*` z$314H<~95mpj8^ %YP718jv^b%;&B?>eMh9WE@5@4cKPNp)UD? ziWn}VjD$G!2(pYRUvnA9fTDrC%;H-v=~55KWK6si!5}g1KU{_h)D{TSi*v~%s&Isi zvem=krM)T|AtP;LptjZODX1@+MN1=XeG{YzF|*<#jklq7)crke>jOXzm8Oh!8PyZD zv%P63a-b@VMdyn^##r{bQ(eXhAnIJ0a+J$(BuUW%$jgjLa@kx!t<0<;k#d@PFbY+_ z27!|bjr5kw2*CMFFQpvoG6n#VFVOQ)m$4bBw}oOxx{P~3v_R4%6f;h{M5ve#WLs4j zhw1JG*Up-w@epcz%Q!dAWpql`2vdl4$sAP}k8xZEIUFWl)-0n^^qjrT+$5K=5U2yn z5MWr&!$56->=yDJuU+L$fn@XnV!s3B0nyYEHj`a8H;^8WtsYKw+Wp2LsM?0+_$E*o zYQP(%E?eO ;b^#h zI1nv3;%L0f_z;K|sEk?svCAksSuY7tsmmw^8jCW_^K+N2*%aEJ9hOJhW<#^~r_F1s z6#Z3JjEpn}LZ!*-m7WJgonSK!b{W@zbX3v!+hlrHlh$TDP$yX0tccsmNC)|!K(r;1 zo<2vt*Rj$-4inqKHUsEoN*Bg)XyM??sF)NifSe|UOJzxnsV!8UFldi00_qMsUrIOf zvU-pPPfdSAn_wR;bs1-X2EYWK!j5Z|B}HdKR>MXnU{|X!ccDw}RS_AeUlnI_CXpb9 z0ENIrhwWUTo zxfG(S;2fH3yWmZBxfu;md- zVvg=iS{uRW4M>gZ-i&2{l<$zPk%LYG>C}q{h!LNs ov? zYKKT`?`;C2G>4$W0B!(LJ$N5MH(;(tHfvIE0fnLrp#;lwK;#MCO5=GtATdP* K1wfQBg(@D5Fue1RDSTpU zxm1dm=y`9O^pEx#v~KFL7j~UkrrXtfI2x!mTC$tPD_wGu%AAG3xdf8d&89;o$kZON zJZBpP)XIFEf(IsPFhe>*B%TH$=OZleO!HmtnLWi*3=nzEZat}dfUKj9_0;(mh@LZu zOWIO?Z}ASZ9)Ep-XtlAIVqJ2P%FIJ}pHPJmM$flB3o74o+46yUs-ip@DQ~FEH&Gs{ zIHq)#9u7#O#p+ AgH! z6@s)K2H8~=Ex^iETBG9&PnH=jV+;^2lHN`yfM_EiK9Gs3sRs+uVA?zS3|3CbDF`T_ z5imhO9>#fKt$u`~Gi>o?Ksu~xDZd4p21~u+ZN1h>5uu6#F@!l#b*D6hAA$7JNra*F zR}o7v;=J`zj5Lel+xz58F^rlqi;uXBQ9xsWu*KnrgDPSvY-?}8vrlzcil%d+QeMLu zFw12t0_tNH;gDH=qh4kmWut&PdRnoa25M>LNZTe)EYd?X0*GQ!ABWR{_(X-2@eL3i z4-o%Yt4Ba|h|}xX6=!nV>*3@S+eM(ER_hV(=}d})E}oF%faoz)+ss9KM}erXs%Fe5 zZGATDIP#`tFh&AV$l;NQK`jTO2O$j6@yhq5NCd*B`mU|d2YQ57`?mf-U95gLLL;AG zRfl7&K%9GU#Ejgcvoao77*if2bOm%8i1L{(tG$)CGnLsU19h-k{{$MvjGom4Ao46y zDTdeiL*28F8FRvA zE<_sDKJv6jqa6T5n;hf#9H)373aWC}OilvPp-hiaY}aMjOWR#WA`p3AN5+RhI)3Q9 zTFPbmyi@;U&v}z} N=G;0{j(dU6c`(iJ4u zcp(s_a6Cw`#`SmV#H>T(Qy_AiK4v`y;%Q>i9X|1#QmM^!AQvpHdbZa-m12l`yjHgN zfkt_$wvq}v7zn?j <1jFLkz>^(ZVk;JiI+>ERp=i^_bW79f>PZ(qvu^{L%ZL|D& z6o|I2mp*#b`9eDsYlQ>Ta7KEO)&l96r_*F9kRCAY(Wo!^$*km59Ia*n;*|m8gz{|4 z_Px*784g5eWTZ>9_aP8PrFO?vAj%pV%_{c192Cd4^#P#q<3$N?%`Nw#5%ckoNFxUt z1)biKp8?UvKoY`v=Wig&s(A2s#PIrlg;|=9M@AY;ppltjMd}$K+FRBuoKf#<9q)R4 zLxE_YSWk7^0-zZ6csT+HT7<>p4cTV@h8E~?aeE&q)FT!F55sSObX+0L*nIY5TUqCa zj?g-&4xgeKXwRZyKhQtZx79pA2UR){jDkiRQqOS>P!y2mB>7NfeuRzH_2Ba!Uk>z7 zK-)@yI$6J{XmaSeszx3V9n`hAzXj6oE)-4m4nJ?114J23XN3Jg`YAvUHF4zmDMSKM zYKHf){bm3)2g1PNj*ozJCZVk5I7*x6@z_Ws3EDp~AP=d`otV%o$MiGSp=3|#lKJWZ zvA4idU^%QeSEK!L&kQJ!uLXJ)g?cmH1ELkuv+H@{`T5KPq7}D(FJe0i)ZU5 BDn7AWAdX2l!>f>p&eXtMkw(dXNK0xoovhQSGA7BaOk(X!|1n9dH@zfhb@rTdymB z<`wRe?!sMV%6}fc==-d8VzT&Y>#X*{8#ng~O~2Xhe0H}*)m#^^#=Uf*#qLv!@-OXg z*lb?Ecb9)LqOt8-$qR*5*Q|Rbw2jw{`gi6IzTvh_^eT78*Yn> 6^Rl>+ zGOg (RnVaf}&A2{J`}Cb8woNLleMtfjRsZS~TOjKQdPxTotZ+ z5u5`UzqJ;%nfsOPYJ#h)x#6M&BsmEGV G#gDnA8te3^@GaS{GoMbu^P59aEDYsB1b<^sUw;-;bA0Y_cc$NeU5y6&-E zAoO__BgCJ~H2_|uxoq(lNc^M!BM{3qDIT$5Bj67xVsQP *2W7OsGwkjPGDH3tnxd^Z3 zq8mjbE(bX33r`zyh1bVmJG_&MQWZ7 *6^eLU{%?n8O22 5G%xU@hiwk`t%E(YA9kho_yG&2}$ kF>6<|>FbAZexX8w32}a0kZJp)K3DV|%=vi+0RKGWRcV??b1nJtR#P zFKzhcuS~ hpKz3%1 z9t%5|>jI9t$B9_%qNTzA7K&~l@sD1RMWH4|FA&r*JwJ9c*B2Zu`v}~PNx{_*92Jkm z9RjW) AAs3WHkrWO6zD6_30 2VbWDc_w&3!CN zybg}0lY={0bHl|OY?uqO2gsKovzVI!J&Y?)=gKp|RRY%;GKcMEL9fhqxy;Q5S6vlP z!W?UI(M&GNLs2c}W-<3BI45(nnVSo4JR+$J 9L zh`T54&iNo|;tO$KVFxW_Lwd4*0q$kUMQpbi`lsM}K`vptCD1o>-KESe1ve8MWw>R` zErULbITM^0`WGh1{#^NOHe3!a8flKwonr1S=v_GVtpG=Zej9fW=2lq^!XDf)=ybiq zbyq;2&7N7y+)8lkvYA}Rs?414CS3nOoS5b zX0}@k{p+&$fs1l9b+-=pYqU1FvOi#QJ-|>Vw=kCvE}prq%xwTy4y{lo{*bwi(8-pv z?ly2Vm`%8eCvH32y$hYr#&mtGxoq(sz&?<}Aa{VI{x;*LQ$BH@a^?4-(}|w00_Hw| z-kPR_YZo}`cnj{f;3%_`C#k)yxT~V>2*}-BmjbY al?*B4y0 z9YtTEv5}BpGWRj`dgv<_axXaQe+TaSxar!*b~~Xz#61f4SKz4WPjDZ@YQ;ewV7pJD zAJ?InEe>*n1t3poQXFQ(UEn73t~vsaCh5lgI&;U_?lW+2Fn5BvLU7ZWI|+^k{W H40zFQBg~Z&Bhbb6)~d=uo;p$J}1% zJz+ f-?J5KJxyGW%CHJO~g0lCBcw4nc1RZU*FU%pHbK>p2th3Uf!G2f%I) zWGQn;p}zp`O~|Xv9fO_*&rkxrrnzi!oD9(5LdfeNDQHgMrcNj^-r~w9p>F|4N$?Nm zPC=gwjuPH&=DvmgGB~>E_>2C;Y1~mzD7XCw9L2&J+!wsC{&d}A!|$LUhmR=X{mI<- z&`&e>7jtL9QG~C8ybnnYp2Ph$a}U|>Jh*|->3YO=v~0;VOI(j>{i*T=-0z{2b&yZF z@{iExfXj!Zb2r&t#Qi2Xy2>#36Leq9ZUdw@IGXV#+_Wro*_itoI(d5|ZaTA*-GIyZ z;mxCQF!^tAWcVI#I>?jZFSrw-P%bi<`xQDJT`3opWv&GJR27qj)Y1vfegs&ai>^SY zW+|QcGFJ+{2DOi?0yvuERopefQHrU^cGsZ)jhj+TCFZU}f6QEE=57F&L0#Bo3wqO_ zwr}G8#=s9;Rhj!8`dJPWdi%gXaSJy&l6J6@?f!sHyLm6<3(VbyPMfqCvNm&fpwlKL zj^11(J#+s<2B^FbvMw9mg}wqEe*;;MxqHy5!Tpc{%>4 M5B`*eo zqjjSse4Du-wtE1sS2jr64D^0Pl^^2n1cf$36XqU4{|@0qo1rOl 5nfIWJ&x zKdp5*bKbz0c{y7#X9IVHIeO6p%ocY1w0>0v(S{8j;LgJ{wEiyUe8By{9K8urH3L5` zFc-mGS#TGbqqjq{qrv^eTqHP5UX%ytD^>3tTlH*;l_<8Y0G>Qc%N@;}AMl^3PfHua z964bL8X|9YWUdmpitNOfn5ztq+9PLnVy+5wieYkGXFJZGkfJJnoQHSFOLVp)t{Q$U zMJLo*S8%j^)uAr~M`hjFt}mUYaZO#N#;>x~cSq;i8ds4s-0{n8Pi@BgbR5LhK&7m* z1=8f*i&xofjqG#LM8h)fReNn|e#Rhr0ONY%u6EKk&F~2e4{00H2DU5C+xFd583*jO z)V^2jm1Rq{qr~p7)*rB^;y-jN9kdrX^GE2vm0Wy#Sj~&QpH?U%hlhoPg@og{qb?t` z`%9r79kgGSN`?Jpuj+nq$UafZVm0oFeYMl`%|lXJo6XLJhvQMVMMzkikTBt|0*<0? z0~LAHz8e3#J@GWU{o|;;mh@FA-`d0FP!)B|o-5a?;$yJetS&$}J>M~$dppMY=hXQ< ztg*C0b3(V^^nCcxBfn+!fSu79y2FsLmSVqp={TD8Q&UJd)z;%^&-4An;?%sOs|QpW zWVP2Kq&31rT{@2Lr>oc#=zgx6b^^6}sO=~02~N*f8P57%>-w#4Rbtf&YYm5%S79gZ zC**D=PodU+ ylEn?cW&NT=fVgPR~aj( h5d%S5!&5`l$H(Opfz zggo=w@SA6j;qq&B`!{=ntfK~Bfk;xtS70|uUATh5%~pP;nAytt`mgC*o$R`$PIx~T zc@ja6W! X)l L2!#a-1sp1Jn)We;Y9wtybSg@SI(x|2Dm7!QC!ZZ)NT; zBb!<|9`DP_>kfivuL`|`C>f~w-N67qQa3?5i||)Pco60I;!%e8p`6BBHs8Cqb4PMT zWUKK1*w4y(s@z?BGb4B{LJs9~RMcHW$Z@s#E=CaTzHpba!4>y|dv+IRg#x)rUHJ>{ z^L)+n_QT;7u66pM7QBsx4rz&(Z1+3&?S&G{^6Eo0vp~&%Xz$h9^L@vbg%ftKy0O%x z2t$lv7M|~1nqIEcwRVelHdAOsSY= )Sqwz@v4o<2sG=T-O<1jH|}D~D+%|252(l$+^o*|ntn@Vm-=f~9(>Rzo;F-?^L( z&AE}+zvNfgxpYpeqE3*3=YyCV8#lFhr`O*bxkChenDTmx4r7#y#4B$FIQ*TS?{MaH z**h&SJUR85b*5TJX1Z1UG3m{xXx#I4&I8~21=XV0|4~L>`apkIVKpb?-->i3$jG-g z;%BicCmrFkvx<@qO38zzW3}9%?ny_ktgoh&0lKJe*&Wqvl$CC%x=>X|FGn4DU&VSk zIwPxY_HqQE<{>Y%GYo%H=T-=y=hPSY}UUQ!()g5tbzC+L&IR57_9Dz+f!dS9KB_f^7V0? z@buJ8{pI86C0|w7E2G~eHNpUzrlJ~SeESVYE$O8$8z`xx9+7xSRV(WVcX~b#`n~U~ zi%Kgc_qSppj2 pV~ah#SOcwa59hG4cn4uZQY+*!9^NN_?PMiPOMVBhkBwpAC&&hv56-=oCCj!$bW zhaGk#9UOV7dnz>VF9)j;)gjy}v<7N gu&gT+Mto&t$a?0aD}tSbw$SZF@CU zzJ{Z|ZV9thS!fUlbN5#t*TDMfKGd%@9KD^MZ=I&j&nT*L jO!2ccK!&H ljIk@^Ym0z`TFn+$8JV_j453$ zu8;cMlQl7aH9QbA8lf%+A|?}6wFYpNo}VX6SThXAU$&PtfC;<9+LQjOov)*o%4vv5 zoS?2Ygtx9KS0f}e?NF!Zv#k2-?mSFu_u?Ks#5M>mx4PK~lb)v>LFmv=O$fq_JYRKn z*zeQ0zt4e!XHUvVwK2$%>-2oy)h{R{uwc~?|7Y!4$sqx8V>R1Q6*tBxbgFcE{-mT% zO0~t0Iu5Jx%u$>ibuLw3H-V3|SN>;SE!Whs(UVWBt3yp4y_|dScRqgDVuy@j+pmqd zF^!r=Y~sD-hze`wC@{J;$15wYgYH|+924c>NgMP@a#q{cN9EKCPdaSZFKwB}w*Nh2 z>Xp`Afh(cGX(``#`Z=LxInM`|pZ(tOpn2OTX%NaQqTFvpzZ#8Kbousvux>vnuQ1r* cE)4crI~?C5?fAwKpia*A@pb1d@CnHHe}li2 T&&q9ve4|*Q{>shyVs;&B`d(WYxrsj4Vw`oQ|; l zuAk6Kfr|b@D+jvLD6G;{EHr8d))ae<&Vd2-tH%qiELuu}mH_QDP-w+K4}um49i5n_ z(KRzcXr7QWjqE@l(ay*X49FauBs4Ez(P$$&I%RN! e$uVgOG#PChd?LNG zMqst3neCiHs|-oFX<7x)$rF{eLQr4GmqBUlEt5DUK&kfvP_jM~loDVB^k~#_pnjks zuv-Z $_x@^us_ zrke@BQwJr*YuZ$Fpn+1-Qj$_2Pnx3!7y?Qw*L$vN?*^IT=Q&R~+7p!eA(sY|$2S;% z7kV_YdQ3;cK5d3%P>S=2A#q8uNp&>sJuDN= 7FIEovV&Tc5?n~4- z8;trj1N6XUDjw5}o;3q}Pb^o9W)+%N3%X}uDFF1QF~4TV%%iK+cGw0=AxR#dIwWae zhV~_7@}X}j$IQl&<0V$9${z`lh{iJSM8nwfpI@^ffR+VJ>rO-mjgmzn~-F>8cY z1$yzIWWO9JrP`ve&D6`xx(|jX)&&g|vUnsW(dLlJfd-%y Do;*7h$%P5Xtewv1*#uce5Jo2`FXm&_M~oaY<=fSIA_g`FAQ)f7zsFdwq*?V%%00 zjf>laRt =d(o(`GpCxTKmkIkielc{Ar!VD;UA$xe4 zMh}gTMJ(!JAnFhRO3T&$2bBlsdB%brNy$@N%r)RgkSTLhVg|)i=-NQ0{*6Itxm)g2 z4%C5MG7~@%LP_iGvtNZcesq$#6nBA>r|~IC>FM!l8TlBP