This commit is contained in:
Fredrik Burmester
2024-09-28 16:13:01 +02:00
parent 41a23d3437
commit 73c43d31ee
3 changed files with 12 additions and 9 deletions

View File

@@ -18,10 +18,10 @@ export const ActiveDownload: React.FC<Props> = ({ ...props }) => {
const [settings] = useSettings();
const cancelJobMutation = useMutation({
mutationFn: async (id: string) => {
if (!process) return;
mutationFn: async () => {
if (!process) throw new Error("No active download");
await axios.delete(settings?.optimizedVersionsServerUrl + id);
await axios.delete(settings?.optimizedVersionsServerUrl + process.id);
const tasks = await checkForExistingDownloads();
for (const task of tasks) task.stop();
clearProcess();
@@ -29,7 +29,8 @@ export const ActiveDownload: React.FC<Props> = ({ ...props }) => {
onSuccess: () => {
toast.success("Download cancelled");
},
onError: () => {
onError: (e) => {
console.log(e);
toast.error("Failed to cancel download");
},
});
@@ -71,9 +72,7 @@ export const ActiveDownload: React.FC<Props> = ({ ...props }) => {
<Text className="text-xs capitalize">{process.state}</Text>
</View>
</View>
<TouchableOpacity
onPress={() => cancelJobMutation.mutate(process.id)}
>
<TouchableOpacity onPress={() => cancelJobMutation.mutate()}>
<Ionicons name="close" size={24} color="red" />
</TouchableOpacity>
</View>

View File

@@ -30,6 +30,8 @@ export const useRemuxHlsToMp4 = (item: BaseItemDto) => {
const startRemuxing = useCallback(
async (url: string) => {
if (!item.Id) throw new Error("Item must have an Id");
toast.success("Download started");
const command = `-y -loglevel quiet -thread_queue_size 512 -protocol_whitelist file,http,https,tcp,tls,crypto -multiple_requests 1 -tcp_nodelay 1 -fflags +genpts -i ${url} -c copy -bufsize 50M -max_muxing_queue_size 4096 ${output}`;
@@ -41,7 +43,7 @@ export const useRemuxHlsToMp4 = (item: BaseItemDto) => {
try {
updateProcess({
id: item.Id!,
id: item.Id,
item,
progress: 0,
state: "downloading",
@@ -53,7 +55,6 @@ export const useRemuxHlsToMp4 = (item: BaseItemDto) => {
const fps = item.MediaStreams?.[0]?.RealFrameRate || 25;
const totalFrames = videoLength * fps;
const processedFrames = statistics.getVideoFrameNumber();
const speed = statistics.getSpeed();
const percentage =
totalFrames > 0
@@ -76,6 +77,7 @@ export const useRemuxHlsToMp4 = (item: BaseItemDto) => {
const returnCode = await session.getReturnCode();
if (returnCode.isValueSuccess()) {
if (!item) throw new Error("Item is undefined");
await saveDownloadedItemInfo(item);
toast.success("Download completed");
writeToLog(

View File

@@ -385,6 +385,8 @@ function useDownloadProvider() {
}
await AsyncStorage.setItem("downloadedItems", JSON.stringify(items));
await queryClient.invalidateQueries({ queryKey: ["downloadedItems"] });
refetch();
} catch (error) {
console.error("Failed to save downloaded item information:", error);
}