feat: create new series command

This commit is contained in:
max_richter 2023-08-10 18:59:23 +02:00
parent c29743bd52
commit 9058e192ba
3 changed files with 89 additions and 4 deletions

View File

@ -44,8 +44,9 @@ import * as $$4 from "./islands/KMenu/commands/add_movie_infos.ts";
import * as $$5 from "./islands/KMenu/commands/add_series_infos.ts";
import * as $$6 from "./islands/KMenu/commands/create_article.ts";
import * as $$7 from "./islands/KMenu/commands/create_movie.ts";
import * as $$8 from "./islands/KMenu/types.ts";
import * as $$9 from "./islands/Search.tsx";
import * as $$8 from "./islands/KMenu/commands/create_series.ts";
import * as $$9 from "./islands/KMenu/types.ts";
import * as $$10 from "./islands/Search.tsx";
const manifest = {
routes: {
@ -93,8 +94,9 @@ const manifest = {
"./islands/KMenu/commands/add_series_infos.ts": $$5,
"./islands/KMenu/commands/create_article.ts": $$6,
"./islands/KMenu/commands/create_movie.ts": $$7,
"./islands/KMenu/types.ts": $$8,
"./islands/Search.tsx": $$9,
"./islands/KMenu/commands/create_series.ts": $$8,
"./islands/KMenu/types.ts": $$9,
"./islands/Search.tsx": $$10,
},
baseUrl: import.meta.url,
};

View File

@ -4,6 +4,7 @@ import { createNewMovie } from "@islands/KMenu/commands/create_movie.ts";
import { createNewArticle } from "@islands/KMenu/commands/create_article.ts";
import { getCookie } from "@lib/string.ts";
import { addSeriesInfo } from "@islands/KMenu/commands/add_series_infos.ts";
import { createNewSeries } from "@islands/KMenu/commands/create_series.ts";
export const menus: Record<string, Menu> = {
main: {
@ -70,6 +71,7 @@ export const menus: Record<string, Menu> = {
addSeriesInfo,
createNewArticle,
createNewMovie,
createNewSeries,
addMovieInfos,
],
},

View File

@ -0,0 +1,81 @@
import { MenuEntry } from "@islands/KMenu/types.ts";
import { TMDBSeries } from "@lib/types.ts";
import { debounce } from "@lib/helpers.ts";
import { Series } from "@lib/resource/series.ts";
import { getCookie } from "@lib/string.ts";
export const createNewSeries: MenuEntry = {
title: "Create new series",
meta: "",
icon: "IconSquareRoundedPlus",
cb: (state) => {
state.menus["input_link"] = {
title: "Search",
entries: [],
};
state.menus["loading"] = {
title: "Search",
entries: [
{
title: "Loading",
icon: "IconLoader2",
cb() {
},
},
],
};
state.activeMenu.value = "input_link";
state.activeState.value = "normal";
let currentQuery: string;
const search = debounce(async function search(query: string) {
currentQuery = query;
if (query.length < 2) {
return;
}
const response = await fetch(
"/api/tmdb/query?q=" + query + "&type=series",
);
const series = await response.json() as TMDBSeries[];
if (query !== currentQuery) return;
state.menus["input_link"] = {
title: "Search",
entries: series.map((r) => {
return {
title: `${r.name} - ${r.first_air_date}`,
cb: async () => {
state.activeState.value = "loading";
const response = await fetch("/api/series/" + r.id, {
method: "POST",
});
const series = await response.json() as Series;
unsub();
window.location.href = "/series/" + series.name;
},
};
}),
};
state.commandInput.value = "";
state.activeMenu.value = "input_link";
}, 500);
const unsub = state.commandInput.subscribe((value) => {
state.activeMenu.value = "loading";
search(value);
});
},
visible: () => {
if (!getCookie("session_cookie")) return false;
if (
!globalThis?.location?.pathname?.includes("series") &&
globalThis?.location?.pathname !== "/"
) return false;
return true;
},
};