From b73c29221a833be56c248aa7b0a06c10cb3bcb2d Mon Sep 17 00:00:00 2001 From: herrrta <@> Date: Mon, 2 Dec 2024 21:42:13 -0500 Subject: [PATCH] New delete options & storage visibility - Added react-native-progress dependency - Added bottom sheet to downloads page to handle actions for deleting items by type - Added ability to long press to delete a single series - Added ability to delete by season - Refactored delete helpers in DownloadProvider.tsx - Display storage usage inside downloads & settings page - Fixed Delete all downloaded files from delting user data in mmkv --- .../(tabs)/(home)/downloads/[seriesId].tsx | 24 +- app/(auth)/(tabs)/(home)/downloads/index.tsx | 258 +++++++++++------- app/(auth)/(tabs)/(home)/settings.tsx | 107 +++++--- bun.lockb | Bin 598219 -> 598642 bytes components/downloads/DownloadSize.tsx | 17 +- components/downloads/SeriesCard.tsx | 33 ++- package.json | 1 + providers/DownloadProvider.tsx | 111 ++++++-- 8 files changed, 368 insertions(+), 183 deletions(-) diff --git a/app/(auth)/(tabs)/(home)/downloads/[seriesId].tsx b/app/(auth)/(tabs)/(home)/downloads/[seriesId].tsx index 397df9de..2699354d 100644 --- a/app/(auth)/(tabs)/(home)/downloads/[seriesId].tsx +++ b/app/(auth)/(tabs)/(home)/downloads/[seriesId].tsx @@ -1,12 +1,13 @@ import {Text} from "@/components/common/Text"; import {useDownload} from "@/providers/DownloadProvider"; import {router, useLocalSearchParams, useNavigation} from "expo-router"; -import React, {useEffect, useMemo, useState} from "react"; -import {ScrollView, View} from "react-native"; +import React, {useCallback, useEffect, useMemo, useState} from "react"; +import {ScrollView, TouchableOpacity, View} from "react-native"; import {EpisodeCard} from "@/components/downloads/EpisodeCard"; import {BaseItemDto} from "@jellyfin/sdk/lib/generated-client/models"; import {SeasonDropdown, SeasonIndexState} from "@/components/series/SeasonDropdown"; import {storage} from "@/utils/mmkv"; +import {Ionicons} from "@expo/vector-icons"; export default function page() { const navigation = useNavigation(); @@ -17,7 +18,7 @@ export default function page() { }; const [seasonIndexState, setSeasonIndexState] = useState({}); - const {downloadedFiles} = useDownload(); + const {downloadedFiles, deleteItems} = useDownload(); const series = useMemo(() => { try { @@ -64,6 +65,10 @@ export default function page() { } }, [series]); + const deleteSeries = useCallback( + async () => deleteItems(groupBySeason), + [groupBySeason] + ); return ( <> {series.length > 0 && @@ -78,9 +83,16 @@ export default function page() { [series[0].item.ParentId ?? ""]: season.ParentIndexNumber, })); }}/> - - {groupBySeason.length} - + + + {groupBySeason.length} + + + + + + + } {groupBySeason.map((episode, index) => ( diff --git a/app/(auth)/(tabs)/(home)/downloads/index.tsx b/app/(auth)/(tabs)/(home)/downloads/index.tsx index 7f169b6c..39f46c8c 100644 --- a/app/(auth)/(tabs)/(home)/downloads/index.tsx +++ b/app/(auth)/(tabs)/(home)/downloads/index.tsx @@ -6,17 +6,24 @@ import { DownloadedItem, useDownload } from "@/providers/DownloadProvider"; import { queueAtom } from "@/utils/atoms/queue"; import { useSettings } from "@/utils/atoms/settings"; import { Ionicons } from "@expo/vector-icons"; -import { useRouter } from "expo-router"; +import {useNavigation, useRouter} from "expo-router"; import { useAtom } from "jotai"; -import { useMemo } from "react"; -import { Alert, ScrollView, TouchableOpacity, View } from "react-native"; +import React, {useEffect, useMemo, useRef} from "react"; +import {Alert, ScrollView, TouchableOpacity, View} from "react-native"; +import { Button } from "@/components/Button"; import { useSafeAreaInsets } from "react-native-safe-area-context"; +import {DownloadSize} from "@/components/downloads/DownloadSize"; +import {BottomSheetBackdrop, BottomSheetBackdropProps, BottomSheetModal, BottomSheetView} from "@gorhom/bottom-sheet"; +import {toast} from "sonner-native"; +import {writeToLog} from "@/utils/log"; export default function page() { + const navigation = useNavigation(); const [queue, setQueue] = useAtom(queueAtom); - const { removeProcess, downloadedFiles } = useDownload(); + const { removeProcess, downloadedFiles, deleteFileByType } = useDownload(); const router = useRouter(); const [settings] = useSettings(); + const bottomSheetModalRef = useRef(null); const movies = useMemo(() => { try { @@ -46,107 +53,160 @@ export default function page() { const insets = useSafeAreaInsets(); - return ( - - - - {settings?.downloadMethod === "remux" && ( - - Queue - - Queue and downloads will be lost on app restart - - - {queue.map((q, index) => ( - - router.push(`/(auth)/items/page?id=${q.item.Id}`) - } - className="relative bg-neutral-900 border border-neutral-800 p-4 rounded-2xl overflow-hidden flex flex-row items-center justify-between" - key={index} - > - - {q.item.Name} - {q.item.Type} - - { - removeProcess(q.id); - setQueue((prev) => { - if (!prev) return []; - return [...prev.filter((i) => i.id !== q.id)]; - }); - }} - > - - - - ))} - + useEffect(() => { + navigation.setOptions({ + headerRight: () => ( + + f.item) || []}/> + + ) + }) + }, [downloadedFiles]); - {queue.length === 0 && ( - No items in queue - )} + const deleteMovies = () => deleteFileByType("Movie") + .then(() => toast.success("Deleted all movies successfully!")) + .catch((reason) => { + writeToLog("ERROR", reason); + toast.error("Failed to delete all movies"); + }); + const deleteShows = () => deleteFileByType("Movie") + .then(() => toast.success("Deleted all TV-Series successfully!")) + .catch((reason) => { + writeToLog("ERROR", reason); + toast.error("Failed to delete all TV-Series"); + }); + const deleteAllMedia = async () => await Promise.all([deleteMovies(), deleteShows()]) + + return ( + <> + + + + {settings?.downloadMethod === "remux" && ( + + Queue + + Queue and downloads will be lost on app restart + + + {queue.map((q, index) => ( + + router.push(`/(auth)/items/page?id=${q.item.Id}`) + } + className="relative bg-neutral-900 border border-neutral-800 p-4 rounded-2xl overflow-hidden flex flex-row items-center justify-between" + key={index} + > + + {q.item.Name} + {q.item.Type} + + { + removeProcess(q.id); + setQueue((prev) => { + if (!prev) return []; + return [...prev.filter((i) => i.id !== q.id)]; + }); + }} + > + + + + ))} + + + {queue.length === 0 && ( + No items in queue + )} + + )} + + + + + {movies.length > 0 && ( + + + Movies + + {movies?.length} + + + + + {movies?.map((item) => ( + + + + ))} + + + + )} + {groupedBySeries.length > 0 && ( + + + TV-Series + + {groupedBySeries?.length} + + + + + {groupedBySeries?.map((items) => ( + + i.item)} + key={items[0].item.SeriesId} + /> + + ))} + + + + )} + {downloadedFiles?.length === 0 && ( + + No downloaded items )} - - - - {movies.length > 0 && ( - - - Movies - - {movies?.length} - - - - - {movies?.map((item) => ( - - - - ))} - - - + + ( + )} - {groupedBySeries.length > 0 && ( - - - TV-Series - - {groupedBySeries?.length} - - - - - {groupedBySeries?.map((items) => ( - - i.item)} - key={items[0].item.SeriesId} - /> - - ))} - - + > + + + + + - )} - {downloadedFiles?.length === 0 && ( - - No downloaded items - - )} - - + + + ); } diff --git a/app/(auth)/(tabs)/(home)/settings.tsx b/app/(auth)/(tabs)/(home)/settings.tsx index 6c5cc32a..e1a49d54 100644 --- a/app/(auth)/(tabs)/(home)/settings.tsx +++ b/app/(auth)/(tabs)/(home)/settings.tsx @@ -2,20 +2,22 @@ import { Button } from "@/components/Button"; import { Text } from "@/components/common/Text"; import { ListItem } from "@/components/ListItem"; import { SettingToggles } from "@/components/settings/SettingToggles"; -import { useDownload } from "@/providers/DownloadProvider"; +import {bytesToReadable, useDownload} from "@/providers/DownloadProvider"; import { apiAtom, useJellyfin, userAtom } from "@/providers/JellyfinProvider"; import { clearLogs, readFromLog } from "@/utils/log"; import { getQuickConnectApi } from "@jellyfin/sdk/lib/utils/api"; import { useQuery } from "@tanstack/react-query"; import * as Haptics from "expo-haptics"; import { useAtom } from "jotai"; -import { Alert, ScrollView, View } from "react-native"; +import {Alert, ScrollView, View} from "react-native"; import { useSafeAreaInsets } from "react-native-safe-area-context"; import { toast } from "sonner-native"; +import * as Progress from 'react-native-progress'; +import * as FileSystem from "expo-file-system"; export default function settings() { const { logout } = useJellyfin(); - const { deleteAllFiles } = useDownload(); + const { deleteAllFiles, getAppSizeUsage } = useDownload(); const [api] = useAtom(apiAtom); const [user] = useAtom(userAtom); @@ -28,6 +30,18 @@ export default function settings() { const insets = useSafeAreaInsets(); + const {data: size , isLoading: appSizeLoading } = useQuery({ + queryKey: ["appSize"], + queryFn: async () => { + const app = await getAppSizeUsage() + + const remaining = await FileSystem.getFreeDiskStorageAsync() + const total = await FileSystem.getTotalDiskCapacityAsync() + + return {app, remaining, total, used: (total - remaining) / total} + } + }) + const openQuickConnectAuthCodeInput = () => { Alert.prompt( "Quick connect", @@ -57,6 +71,27 @@ export default function settings() { ); }; + const onDeleteClicked = async () => { + try { + await deleteAllFiles(); + Haptics.notificationAsync( + Haptics.NotificationFeedbackType.Success + ); + } catch (e) { + Haptics.notificationAsync( + Haptics.NotificationFeedbackType.Error + ); + toast.error("Error deleting files"); + } + } + + const onClearLogsClicked = async () => { + clearLogs(); + Haptics.notificationAsync( + Haptics.NotificationFeedbackType.Success + ); + }; + return ( + @@ -92,42 +130,33 @@ export default function settings() { - - Account and storage - - - - - + + Storage + + {size && ( + Available: {bytesToReadable(size.remaining)}, Total: {bytesToReadable(size.total)} + )} + + Logs diff --git a/bun.lockb b/bun.lockb index db7d734e0b9e14e811eb5707eb3d83b818ac2801..3a854c551d35166d8bd7fbae073c42a1362a0a2c 100755 GIT binary patch delta 99186 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 delta 99660 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%0AhV|Cv zd`i9vP$qTPTZy7YNQ|*LDx=>uWPj(R^7g|qX6XVkSOj9#DmwglY_ zmu6H}W~)6|qclcS373h=5}_KFthJJAk`g1uYZjiLqP;B4TC|cs4T(YrDKwccN&(rv zOr`i_9JyQBo2tLr+)sSu!|5n&E#%gFTr+7VCsRbUn(kF*EO|XEs-f5y(R3!%V&V@m zd4lRv2*Q`5g`?@oM?qL#?vMP<5NWym-u6+bA6rUk0B7gbA8E#$t|E&>#vCx)qm1c$ zl|a5dfBfFY755inY}%dD!_eFXAgXa5W|nh1maT77`TI}ltT~t#lCHLbF?OG_>6yN# ze_FWoybTE0UBP2=CF)-|i`{@XEtf!Q`w?~gvJ7$s#&aF%({@PP8z{=fOr!0KwkUN> z$#n8yIa*9%e6jN4>X;d|n8s&IRr1(%mq5RUSs@%O(V<1%yPls0SUszvU_;>n>XV2) zsyd-5aab0`8*PcJRYU=lnI!xfhK1`2*a|+W*a+T9D9!AIwZw??JBf6Qm|O1yZMO7g ze7Z3(5}!r z);4?|N+8#{mY8WkA}O(vSoxM3%t?U?oZu z(5s$%J)3I&DEwKGWt@3L`Jw}Ve0Y7*0+&m*v!@iJah@g!ne*AY{eh?Ufk3MX>*ZCI z>=x;&ak8}3s{(gpE*fL6{_u)3RG~FjcZ(+Q*Jjp#clZ{~*lV9V|RY18^}8`b=5Nra3*w z3@yk7>Yyd0s^ak$ygdNm@WYRPsSIS0jG%pZOf}QDRlDZfmk;o(Wk@?=)TRffMtgz^ zn^xc#Y!D|=41=HC9*B(U$+L38O?{55ceQ}g-ise34)Rg0v&d=>8X+5Y(=9HsTAO;E z_HUjO{VbhWNw~!sM;hJ=2FKAkv4Pbp^J^l`En=2VX39ezFeh=LgU8}phfe42*a z)DQ6unbtVdT&mmAric#q!c)>+_O|D{Qo7W?(yaI^NO1`-=uLsWgvJv0q0YU8$rzfd z6!gs_Q^)3?J%RHC8L`DSRd~~~EZ+h~-BE*4H?gbfSt5q{;PWedeBwhcDZ+%6&Pf4R zia8pXf+6d#q}VXIk^(gd%{`Ata$nmV2(2N%)%bVFZ7#S^x~#KzhZpmD8o#jevKY^MPDkTOeXW} zrkHx+dA@6b|d6i?k&fRNx09^1Gm9_eOfQ;@zvNgH5XBVJLmNg1@<(i Y$kBOja(}TixxZt^i#r=^b{sSQKNvBNPXGV_ diff --git a/components/downloads/DownloadSize.tsx b/components/downloads/DownloadSize.tsx index a69fc4a0..d1b11bf0 100644 --- a/components/downloads/DownloadSize.tsx +++ b/components/downloads/DownloadSize.tsx @@ -2,9 +2,10 @@ import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; import React, {useEffect, useMemo, useState} from "react"; import {Text} from "@/components/common/Text"; import useDownloadHelper from "@/utils/download"; -import {useDownload} from "@/providers/DownloadProvider"; +import {bytesToReadable, useDownload} from "@/providers/DownloadProvider"; +import {TextProps} from "react-native"; -interface DownloadSizeProps { +interface DownloadSizeProps extends TextProps { items: BaseItemDto[]; } @@ -13,7 +14,7 @@ interface DownloadSizes { itemsNeedingSize: BaseItemDto[]; } -export const DownloadSize: React.FC = ({ items }) => { +export const DownloadSize: React.FC = ({ items, ...props }) => { const { downloadedFiles, saveDownloadedItemInfo } = useDownload(); const { getDownloadSize } = useDownloadHelper(); const [size, setSize] = useState(); @@ -53,17 +54,9 @@ export const DownloadSize: React.FC = ({ items }) => { return size }, [size]) - const bytesToReadable = (bytes: number) => { - const gb = bytes / 1e+9; - - if (gb >= 1) - return `${gb.toFixed(2)} GB` - return `${(bytes / 1024 / 1024).toFixed(2)} MB` - } - return ( <> - {sizeText} + {sizeText} ); }; \ No newline at end of file diff --git a/components/downloads/SeriesCard.tsx b/components/downloads/SeriesCard.tsx index 1b665829..4c6efa1f 100644 --- a/components/downloads/SeriesCard.tsx +++ b/components/downloads/SeriesCard.tsx @@ -1,20 +1,49 @@ import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models"; import {TouchableOpacity, View} from "react-native"; import { Text } from "../common/Text"; -import React, {useEffect, useMemo, useState} from "react"; +import React, {useCallback, useMemo} from "react"; import {storage} from "@/utils/mmkv"; import {Image} from "expo-image"; import {Ionicons} from "@expo/vector-icons"; import {router} from "expo-router"; import {DownloadSize} from "@/components/downloads/DownloadSize"; +import {useDownload} from "@/providers/DownloadProvider"; +import {useActionSheet} from "@expo/react-native-action-sheet"; export const SeriesCard: React.FC<{ items: BaseItemDto[] }> = ({items}) => { + const { deleteItems } = useDownload(); + const { showActionSheetWithOptions } = useActionSheet(); + const base64Image = useMemo(() => { return storage.getString(items[0].SeriesId!); }, []); + const deleteSeries = useCallback( + async () => deleteItems(items), + [items] + ); + + const showActionSheet = useCallback(() => { + const options = ["Delete", "Cancel"]; + const destructiveButtonIndex = 0; + + showActionSheetWithOptions({ + options, + destructiveButtonIndex, + }, + (selectedIndex) => { + if (selectedIndex == destructiveButtonIndex) { + deleteSeries(); + } + } + ); + }, [showActionSheetWithOptions, deleteSeries]); + return ( - router.push(`/downloads/${items[0].SeriesId}`)}> + router.push(`/downloads/${items[0].SeriesId}`)} + onLongPress={showActionSheet} + > {base64Image ? ( ; @@ -388,19 +390,20 @@ function useDownloadProvider() { ); const deleteAllFiles = async (): Promise => { - try { - await deleteLocalFiles(); - removeDownloadedItemsFromStorage(); - await cancelAllServerJobs(); - queryClient.invalidateQueries({ queryKey: ["downloadedItems"] }); - toast.success("All files, folders, and jobs deleted successfully"); - } catch (error) { - console.error("Failed to delete all files, folders, and jobs:", error); + Promise.all([ + deleteLocalFiles(), + removeDownloadedItemsFromStorage(), + cancelAllServerJobs(), + queryClient.invalidateQueries({queryKey: ["downloadedItems"]}), + ]).then(() => + toast.success("All files, folders, and jobs deleted successfully") + ).catch((reason) => { + console.error("Failed to delete all files, folders, and jobs:", reason); toast.error("An error occurred while deleting files and jobs"); - } + }); }; - const deleteLocalFiles = async (): Promise => { + const forEveryDirectory = async (callback: (dir: FileInfo) => void) => { const baseDirectory = FileSystem.documentDirectory; if (!baseDirectory) { throw new Error("Base directory not found"); @@ -408,25 +411,36 @@ function useDownloadProvider() { const dirContents = await FileSystem.readDirectoryAsync(baseDirectory); for (const item of dirContents) { - const itemPath = `${baseDirectory}${item}`; - const itemInfo = await FileSystem.getInfoAsync(itemPath); + // Exclude mmkv directory. + // Deleting this deletes all user information as well. Logout should handle this. + if (item == "mmkv") + continue + const itemInfo = await FileSystem.getInfoAsync(`${baseDirectory}${item}`); if (itemInfo.exists) { - if (itemInfo.isDirectory) { - await FileSystem.deleteAsync(itemPath, { idempotent: true }); - } else { - await FileSystem.deleteAsync(itemPath, { idempotent: true }); - } + callback(itemInfo) } } + } + + const deleteLocalFiles = async (): Promise => { + await forEveryDirectory((dir) => { + console.warn("Deleting file", dir.uri) + FileSystem.deleteAsync(dir.uri, {idempotent: true}) + } + ) }; - const removeDownloadedItemsFromStorage = (): void => { - try { - storage.delete("downloadedItems"); - } catch (error) { - console.error("Failed to remove downloadedItems from storage:", error); - throw error; - } + const removeDownloadedItemsFromStorage = async () => { + // delete any saved images first + Promise.all([ + deleteFileByType("Movie"), + deleteFileByType("Episode"), + ]).then(() => + storage.delete("downloadedItems") + ).catch((reason) => { + console.error("Failed to remove downloadedItems from storage:", reason); + throw reason + }) }; const cancelAllServerJobs = async (): Promise => { @@ -434,7 +448,8 @@ function useDownloadProvider() { throw new Error("No auth header available"); } if (!settings?.optimizedVersionsServerUrl) { - throw new Error("No server URL configured"); + console.error("No server URL configured"); + return } const deviceId = await getOrSetDeviceId(); @@ -494,6 +509,41 @@ function useDownloadProvider() { } }; + const deleteItems = async (items: BaseItemDto[]) => { + Promise.all(items.map(i => { + if (i.Id) + return deleteFile(i.Id) + return + })).then(() => + Haptics.notificationAsync(Haptics.NotificationFeedbackType.Success) + ) + } + + const deleteFileByType = async (type: BaseItemDto['Type']) => { + await Promise.all( + downloadedFiles + ?.filter(file => file.item.Type == type) + ?.flatMap(file => { + const promises = []; + if (type == "Episode" && file.item.SeriesId) + promises.push(deleteFile(file.item.SeriesId)) + promises.push(deleteFile(file.item.Id!)) + return promises; + }) + || [] + ); + } + + const getAppSizeUsage = async () => { + const sizes: number[] = []; + await forEveryDirectory(dir => { + if (dir.exists) + sizes.push(dir.size) + }) + + return sizes.reduce((sum, size) => sum + size, 0); + } + function getDownloadedItem(itemId: string): DownloadedItem | null { try { const downloadedItems = storage.getString("downloadedItems"); @@ -566,11 +616,14 @@ function useDownloadProvider() { downloadedFiles, deleteAllFiles, deleteFile, + deleteItems, saveDownloadedItemInfo, removeProcess, setProcesses, startDownload, getDownloadedItem, + deleteFileByType, + getAppSizeUsage }; } @@ -591,3 +644,11 @@ export function useDownload() { } return context; } + +export function bytesToReadable(bytes: number): string { + const gb = bytes / 1e+9; + + if (gb >= 1) + return `${gb.toFixed(2)} GB` + return `${(bytes / 1024 / 1024).toFixed(2)} MB` +} \ No newline at end of file