Defined request interface & updated expected request status response

This commit is contained in:
2022-11-03 21:56:46 +01:00
parent dec15194e4
commit 4a128044bf
3 changed files with 42 additions and 13 deletions

View File

@@ -1,4 +1,8 @@
import { IList, IMediaCredits, IPersonCredits } from "./interfaces/IList";
import type {
IRequestStatusResponse,
IRequestSubmitResponse
} from "./interfaces/IRequestResponse";
const { ELASTIC, ELASTIC_INDEX } = process.env;
const API_HOSTNAME = window.location.origin;
@@ -259,7 +263,7 @@ const addMagnet = (magnet: string, name: string, tmdbId: number | null) => {
* @param {string} type Movie or show type
* @returns {object} Success/Failure response
*/
const request = (id, type) => {
const request = (id, type): Promise<IRequestSubmitResponse> => {
const url = new URL("/api/v2/request", API_HOSTNAME);
const options = {
@@ -282,18 +286,13 @@ const request = (id, type) => {
* @param {string} type
* @returns {object} Success/Failure response
*/
const getRequestStatus = (id, type = undefined) => {
const getRequestStatus = (id, type = null): Promise<IRequestStatusResponse> => {
const url = new URL("/api/v2/request", API_HOSTNAME);
url.pathname = `${url.pathname}/${id.toString()}`;
url.searchParams.append("type", type);
return fetch(url.href)
.then(resp => {
const { status } = resp;
if (status === 200) return true;
return false;
})
.then(resp => resp.json())
.catch(err => Promise.reject(err));
};

View File

@@ -190,6 +190,10 @@
IMediaCredits,
ICast
} from "../../interfaces/IList";
import type {
IRequestStatusResponse,
IRequestSubmitResponse
} from "../../interfaces/IRequestResponse";
import { MediaTypes } from "../../interfaces/IList";
import { humanMinutes } from "../../utils";
@@ -241,8 +245,15 @@
function setCast(_cast: ICast[]) {
cast.value = _cast;
}
function setRequested(status: boolean) {
requested.value = status;
function setRequested(
requestResponse: IRequestStatusResponse | IRequestSubmitResponse
) {
if (requestResponse?.success) {
requested.value = requestResponse?.success;
return;
}
requested.value = false;
}
function setBackdrop(): void {
@@ -301,13 +312,13 @@
.then(() => getCredits(props.type))
.then(credits => setCast(credits?.cast || []))
.then(() => getRequestStatus(props.id, props.type))
.then(requestStatus => setRequested(requestStatus || false))
.then(requestResponse => setRequested(requestResponse))
.then(setBackdrop);
}
function sendRequest() {
request(props.id, props.type).then(resp =>
setRequested(resp?.success || false)
request(props.id, props.type).then(requestResponse =>
setRequested(requestResponse)
);
}

View File

@@ -0,0 +1,19 @@
export interface Result {
id: number;
title: string;
year: number;
type: string;
status: string;
requested_date: Date;
}
export interface IRequestStatusResponse {
success: boolean;
message?: string;
result?: Result;
}
export interface IRequestSubmitResponse {
success: boolean;
message: string;
}