Files
streamyfin/utils/files/useFiles.ts
Fredrik Burmester 57e33428dc fix
2024-08-06 21:16:37 +02:00

64 lines
1.7 KiB
TypeScript

import { BaseItemDto } from "@jellyfin/sdk/lib/generated-client/models";
import AsyncStorage from "@react-native-async-storage/async-storage";
import { useQueryClient } from "@tanstack/react-query";
import * as FileSystem from "expo-file-system";
export const useFiles = () => {
const queryClient = useQueryClient();
const deleteAllFiles = async () => {
const directoryUri = FileSystem.documentDirectory;
try {
const fileNames = await FileSystem.readDirectoryAsync(directoryUri!);
for (let item of fileNames) {
await FileSystem.deleteAsync(`${directoryUri}/${item}`);
}
AsyncStorage.removeItem("downloaded_files");
} catch (error) {
console.error("Failed to delete the directory:", error);
}
};
const deleteFile = async (id: string) => {
try {
const files = await FileSystem.readDirectoryAsync(
`${FileSystem.documentDirectory}`
);
console.log(`Files:`, files);
await FileSystem.deleteAsync(
`${FileSystem.documentDirectory}/${id}.mp4`
).catch((err) => console.error(err));
const currentFiles = JSON.parse(
(await AsyncStorage.getItem("downloaded_files")) ?? "[]"
) as BaseItemDto[];
console.log(
"Current files",
currentFiles.map((i) => i.Name)
);
const updatedFiles = currentFiles.filter((f) => f.Id !== id);
console.log(
"Current files",
currentFiles.map((i) => i.Name)
);
await AsyncStorage.setItem(
"downloaded_files",
JSON.stringify(updatedFiles)
);
queryClient.invalidateQueries({ queryKey: ["downloaded_files"] });
} catch (error) {
console.error(error);
}
};
return { deleteFile, deleteAllFiles };
};