From d9037e72f09f4531aa16397909e4340985e7ad26 Mon Sep 17 00:00:00 2001 From: Fredrik Burmester Date: Fri, 4 Oct 2024 13:29:16 +0200 Subject: [PATCH] chore --- app/(auth)/(tabs)/(home)/_layout.tsx | 2 ++ app/(auth)/(tabs)/(home)/index.tsx | 31 +++++++++++++++++-- bun.lockb | Bin 619713 -> 619713 bytes components/FullScreenVideoPlayer.tsx | 43 ++++++++++++++------------- constants/Colors.ts | 1 + package.json | 2 +- 6 files changed, 55 insertions(+), 24 deletions(-) diff --git a/app/(auth)/(tabs)/(home)/_layout.tsx b/app/(auth)/(tabs)/(home)/_layout.tsx index 763b89c9..f51ecbf5 100644 --- a/app/(auth)/(tabs)/(home)/_layout.tsx +++ b/app/(auth)/(tabs)/(home)/_layout.tsx @@ -1,12 +1,14 @@ import { Chromecast } from "@/components/Chromecast"; import { HeaderBackButton } from "@/components/common/HeaderBackButton"; import { nestedTabPageScreenOptions } from "@/components/stacks/NestedTabPageStack"; +import { useDownload } from "@/providers/DownloadProvider"; import { Feather } from "@expo/vector-icons"; import { Stack, useRouter } from "expo-router"; import { Platform, TouchableOpacity, View } from "react-native"; export default function IndexLayout() { const router = useRouter(); + return ( (null); const [loadingRetry, setLoadingRetry] = useState(false); + const { downloadedFiles } = useDownload(); + const navigation = useNavigation(); + + useEffect(() => { + const hasDownloads = downloadedFiles && downloadedFiles.length > 0; + navigation.setOptions({ + headerLeft: () => ( + { + router.push("/(auth)/downloads"); + }} + className="p-2" + > + + + ), + }); + }, [downloadedFiles, navigation, router]); + const checkConnection = useCallback(async () => { setLoadingRetry(true); const state = await NetInfo.fetch(); diff --git a/bun.lockb b/bun.lockb index c717c66730329b3973fd72263b9fded64be266e1..de0709bd1ed79c38d58a696c5fcae36e37360a36 100755 GIT binary patch delta 3079 zcmeH}{Zmv`7{~9~-2;1BmKO;Slw8DB5I4n4(pAToF;h{qazu$(ArwrUY+|xfd4E+) zyvd`OW7<^qqD4j*=uIrmNeNT&B`bl(3LP~pEPMYx?3HS!ANm8@;WN+ke9pP&o_o(d z_tMnqZ0dAwxW#evuX)>NUJ6O+PM+TX`fu&`J<+r~WNi75NgtT@9B#gNHNAFrr9=D4 zk!AWWLrafdKE5$aC{c=%-}$bh_#>9>^Tx-rgYIezb&zW>0Dwluj?Fi3z49-Y8#A?>+W9QsaQ+453W*9=i?cJw2)F z^MFw9#hewbHYHImMCF}}x)I+oaz11B{gfgwST90a8Z`JXSDiL>g0@_q90TWq+Y8)!rGv8CF(zV?=ZgmXS zWFov->&i@2OO49XbId_hlhG!$+WQlwb*WIsYB?UaI+-(glUAFWsIEfw*9Euyy^;eT z6v_M-$?cM$M7Oeafhx@{8wgUcn6;(7*#c zZFJzs15~ruogL!E`2X)1?#F+;V`bd|CcQhrd~|t|Cv0P#CwhTq&JKQi%GtUrkL5f_T&~De=)|XoLl+o&w8!um*wfx-e4ebv#T&vFrd&F5Y(mizAv7@7$8}$gRj!=FN z{2kFoEAq_qDQk_{POW+7nZi!d`4D~cAWHHf0_js0hgjTJ01-?D1rRIqAgGSQ` zcs@-EHybX&aQDI8cy)|496kifd74xuL*l+RW;)tv!dF4*G+ZJa{uB?mps%iyF%~h7 zc5K3#C*UkRxqRa=LSA5;xxjFn;rM056E1|~i{1iqsS87dPB*%j8r`>|DTyMgrCZFU zc^q6+RgI3r(UE6dZFGDN`4zpPTBevoi;Y1(HriUyR-(t%$Xl&>yf8Yb2MwSR@WQ+U z-UaW2Ca@oT01kkI;3IGdd<+hQBcK_40$RXPa10y=CqOGW4bFhiz*(@_rqJ1)G9jP_ z6Wj{;B}smIf}uOSSUA`jE6aj4%ErRV!dAVmYil1Hab%; z6YUAuJR`txaEl(*Aon_5Hst=;EzyV$a5IPkVIT+uf&gF#{^UF-*9P+;{XirL2f@^I zPR7`8LfQvx!TCd|>zsTgA{6B|l+OYluo+jOA@4(VZE}Db0ksEZU;3g=<~e!1{-6lG z1|Z&sI1Ka$Nni$uq=I%CE+T15yBreXLN7jQ7>EG_0ne;IooScD7jP46z9t@!uP+?e z%7ca>@}Ps@xL-UN0ur#%oQQwmcM$FTSs0AE5dGs2W5G~b)FDGmkrq1kr5udAo7*Ah zsC--aUkaPv+#$D{g-y@-T22cTL#eJ?9v4o%;+h<+ic$LOf5@MI(D!uvjPS?*+IpMt zZM2$lv*;N=-#1N-S#-C}cckgDY$~<+enO+td?V?@AABy*pd&t!Y#~M)nC8qSL-kv{bEx4ac$R6{cH^r`b1x~Am>jt?~OtL delta 3080 zcmeH}`&(628proK=Pb_Iz~K^uh+asBw}fX|UA#zML)fLqGHfbRIvx@B3M6 z@4fa~d+kk2S9D8P^rK0x!Hq*Jmo>lnVshSNN$vmLANEAq+<9O6HFf5#u5NBS5jwmf zv)W}`jC2{NT?Lk;d}C_lnn}HdLK~uKC0(y;nm=Myvp1?$LUW>C(V}TOVk7!-TyR*^ zA`x%q*ytR-JHcqqbT#hH7%0lyGF4lqIPElgb4Kf@mI>`PbhJ=IvKZ&c5!zy|jFcR= zejln^Q3VA>Q;U zq|3bNRiycSsbzT{?OQ6+EYEtQ?9A&w*8Ru+18R{@_a1u|>Ab#FpO!DQ`52wnH@Z4h z-m&Q2Navv;z*vi$n6^S_clB5GsFr!FRpV?cg_h+#Sr*dV{$8)5%I~it3WQeJUu{B_ z&J{Jx#Dt;B>Th#l_J6L5QKg|x@0-j+s3xM4eZvjKx-B>M7p3a!kWGfS8r}JB{jgct z`i`;PEwrg<6Gp>Qx151$f>D%{s+VvEZ!sF~a_a|C{d~X9)xW6J-W6j0LmmykCOj4v zM1^QW{JR<7M2tt>i6{{-AoB0mq91%O+WGh^hywAd*`H$~>XE))pMc0sH~DHFeq^=D z5I%@A5c$WE(>eH$J1#=x6E0?HMy|6_^KrRmT!|QjdYu`oOur40Z{RUR9$+mZ|7v{` zymww_3XXi@oo4;ZC{%QZcs}9x8S8sie$$Lq^#oW{Pk{CPHMfUEyq@vgo>s^1U`un< z+gI)$R-Lh9;+(%sc;LO_y+>9?Y%EIO{zJv2_>uD5L)$Ohk#jID=IF(=6B$pOOdosx z+f#-=Rz+yn0ms4J-<_K!k3FNTl4&5Cf|rj<86k;4KhGSrl)9NTC)8 z_25?PjuUh-&Nj!$S!`253vCW7XViR?EvRaJwoR?imT@VQn$3-T2AhXp6j9)a>CVFO zmKg!g!r2ke!C4Wb!Kc*zu#B}RUHNX4Z&>43V`~kEkHLoIb1ejG&FvNk$NO{CI*nUh>+vrgOvLpOynI zsSPzU$|hz|{o}auOk9NrS7IJU$hVqTE;U^p9KURMz-4fJ(>sBOx^arod1m)Yv-@r| z-AUoKGF4<#76&)g)S}~fbmS4&njQBbzpP%XmD$$N?dD0|Guuv~?GY8fOOA1Pcwt(= zTi|VQ81TZp1KtJ4z;SQ_oCK%9```ocA@~@yf=|Fd!D(;?{0p1|pMuZ8dC&nq2mc0N zfI2^o&ORek0{C-r2=M3QfUXAZkrS*L1sL@ja1Y?+y%*dE?gzZ44**`re86j$2$I1V zzzfC;bP4o;|Ev1vWQ0u2KpVf2c@@@!Qg8?0X`TJ50Wax9a9K@xMJ5RG2o*KSSk_ya#RM~4ABH}2J1j0~X z9}Ev3|e**Z@L|H%-jPIkzrts+nr{YRz;iX>|4kspb8wdFe*ql+=>r61+@m#A#I zeGskkvwx-bUGf?2kH5K_&e;z-ERBU!r`un#^cGU4ul+`gT192P_J7bb$9)EoYb6dk yD12_H+U0LoyZjwN|D%q5b{9={=uS1#M;{<)+)_P)Yk&30_l{A1YO-A~E&2&n>y&{2 diff --git a/components/FullScreenVideoPlayer.tsx b/components/FullScreenVideoPlayer.tsx index d19a65eb..9453c2b3 100644 --- a/components/FullScreenVideoPlayer.tsx +++ b/components/FullScreenVideoPlayer.tsx @@ -32,7 +32,7 @@ import { useSharedValue, } from "react-native-reanimated"; import { useSafeAreaInsets } from "react-native-safe-area-context"; -import Video, { OnProgressData } from "react-native-video"; +import Video, { OnProgressData, ReactVideoProps } from "react-native-video"; import { Text } from "./common/Text"; import { itemRouter } from "./common/TouchableItemRouter"; import { Loader } from "./Loader"; @@ -199,8 +199,8 @@ export const FullScreenVideoPlayer: React.FC = () => { }); }, [currentlyPlaying?.item, api]); - const videoSource = useMemo(() => { - if (!api || !currentlyPlaying || !poster) return null; + const videoSource: ReactVideoProps["source"] = useMemo(() => { + if (!api || !currentlyPlaying || !poster) return undefined; const startPosition = currentlyPlaying.item?.UserData?.PlaybackPositionTicks ? Math.round(currentlyPlaying.item.UserData.PlaybackPositionTicks / 10000) : 0; @@ -342,24 +342,25 @@ export const FullScreenVideoPlayer: React.FC = () => { }, ]} > - {videoSource && ( -