mirror of
https://github.com/streamyfin/streamyfin.git
synced 2025-08-20 18:37:18 +02:00
# Add download size to offline media downloads
- Added getDownloadSize helper function to display media size in MB or GB when appropriate
This commit is contained in:
@@ -4,6 +4,9 @@ import useImageStorage from "@/hooks/useImageStorage";
|
||||
import {apiAtom} from "@/providers/JellyfinProvider";
|
||||
import {useAtom} from "jotai";
|
||||
import {storage} from "@/utils/mmkv";
|
||||
import {getDownloadedFileUrl} from "@/hooks/useDownloadedFileOpener";
|
||||
import * as FileSystem from 'expo-file-system'
|
||||
import {FileInfo} from "expo-file-system";
|
||||
|
||||
const useDownloadHelper = () => {
|
||||
const [api] = useAtom(apiAtom);
|
||||
@@ -15,7 +18,29 @@ const useDownloadHelper = () => {
|
||||
}
|
||||
}
|
||||
|
||||
return { saveSeriesPrimaryImage }
|
||||
const getDownloadSize = async (...items: BaseItemDto[]) => {
|
||||
const sizes: number[] = [];
|
||||
|
||||
await Promise.all(items.map(item => {
|
||||
return new Promise(async (resolve, reject) => {
|
||||
const url = await getDownloadedFileUrl(item.Id!);
|
||||
if (url) {
|
||||
const fileInfo: FileInfo = await FileSystem.getInfoAsync(url);
|
||||
sizes.push(fileInfo.size);
|
||||
resolve(sizes);
|
||||
} else reject();
|
||||
})
|
||||
}));
|
||||
|
||||
const size = sizes.reduce((sum, size) => sum + size, 0);
|
||||
const gb = size / 1e+9;
|
||||
|
||||
if (gb >= 1)
|
||||
return `${gb.toFixed(2)} GB`;
|
||||
return `${(size / 1024 / 1024).toFixed(2)} MB`;
|
||||
}
|
||||
|
||||
return { saveSeriesPrimaryImage, getDownloadSize }
|
||||
}
|
||||
|
||||
export default useDownloadHelper;
|
||||
Reference in New Issue
Block a user