Added rescan subs and start download functionality

This commit is contained in:
n8detar 2022-04-23 09:40:51 -07:00
parent 2a69e0e319
commit 883f5dc801
3 changed files with 41 additions and 5 deletions

View File

@ -1,4 +1,4 @@
import { Download } from "../types/download"; import { Download, Task } from "../types/download";
import { getTAUrl } from "./constants"; import { getTAUrl } from "./constants";
const TA_BASE_URL = getTAUrl(); const TA_BASE_URL = getTAUrl();
@ -106,4 +106,24 @@ export const sendMoveVideoQueuedIgnored = async (token: string, videoId: string,
throw new Error("Error moving video to" + status + "."); throw new Error("Error moving video to" + status + ".");
} }
return response.json(); return response.json();
};
export const sendTasks = async (token: string, task: string): Promise<Task> => {
var data = {
"run": task
};
const response = await fetch(`${TA_BASE_URL.server}/api/task/`, {
body: JSON.stringify(data),
headers: {
Accept: "application/json",
"Content-Type": "application/json",
Authorization: `Token ${token}`,
mode: "no-cors",
},
method: "POST"
});
if (!response.ok) {
throw new Error("Error running task: " + task + ".");
}
return response.json();
}; };

View File

@ -5,8 +5,7 @@ import { dehydrate, QueryClient, useQuery } from "react-query";
import { CustomHead } from "../components/CustomHead"; import { CustomHead } from "../components/CustomHead";
import { Layout } from "../components/Layout"; import { Layout } from "../components/Layout";
import NextImage from "next/image"; import NextImage from "next/image";
import { getDownloads, sendDeleteAllQueuedIgnored, sendDeleteVideoQueuedIgnored, sendMoveVideoQueuedIgnored } from "../lib/getDownloads"; import { getDownloads, sendDownloads, sendDeleteAllQueuedIgnored, sendDeleteVideoQueuedIgnored, sendMoveVideoQueuedIgnored, sendTasks } from "../lib/getDownloads";
import { sendDownloads } from "../lib/getDownloads";
import RescanIcon from "../images/icon-rescan.svg"; import RescanIcon from "../images/icon-rescan.svg";
import DownloadIcon from "../images/icon-download.svg"; import DownloadIcon from "../images/icon-download.svg";
import AddIcon from "../images/icon-add.svg"; import AddIcon from "../images/icon-add.svg";
@ -124,6 +123,18 @@ const Download: NextPage = () => {
.catch(error => handleSetErrorMessage(error.message)); .catch(error => handleSetErrorMessage(error.message));
} }
const handleSendTask = (session: string, task: string) => {
sendTasks(session, task).then((response) => {
if (response.success) {
handleSetErrorMessage(null);
} else {
handleSetErrorMessage("Error running task: " + response.task + ".");
}
})
.catch(error => handleSetErrorMessage(error.message));
}
return ( return (
<> <>
<CustomHead title="Downloads" /> <CustomHead title="Downloads" />
@ -202,7 +213,7 @@ const Download: NextPage = () => {
alt="rescan-icon" alt="rescan-icon"
title="Rescan subscriptions" title="Rescan subscriptions"
// className="rotate-img" // Set when rescanning // className="rotate-img" // Set when rescanning
onClick={() => console.log("rescanPending()")} onClick={() => handleSendTask(session.ta_token.token, "rescan_pending")}
/> />
{/* <img id="rescan-icon" onclick="rescanPending()" src="{% static 'img/icon-rescan.svg' %}" alt="rescan-icon"></img> */} {/* <img id="rescan-icon" onclick="rescanPending()" src="{% static 'img/icon-rescan.svg' %}" alt="rescan-icon"></img> */}
<p>Rescan subscriptions</p> <p>Rescan subscriptions</p>
@ -215,7 +226,7 @@ const Download: NextPage = () => {
alt="download-icon" alt="download-icon"
title="Start download" title="Start download"
// className="bounce-img" // Set when video is downloading // className="bounce-img" // Set when video is downloading
onClick={() => console.log("dlPending()")} onClick={() => handleSendTask(session.ta_token.token, "download_pending")}
/> />
{/* <img id="download-icon" onclick="dlPending()" src="{% static 'img/icon-download.svg' %}" alt="download-icon"></img> */} {/* <img id="download-icon" onclick="dlPending()" src="{% static 'img/icon-download.svg' %}" alt="download-icon"></img> */}
<p>Start download</p> <p>Start download</p>

View File

@ -5,6 +5,11 @@ export interface Download {
message: string; message: string;
} }
export interface Task {
success: boolean;
task: string;
}
export interface Paginate { export interface Paginate {
page_size: number; page_size: number;
page_from: number; page_from: number;