feat: create new series command
This commit is contained in:
parent
c29743bd52
commit
9058e192ba
10
fresh.gen.ts
10
fresh.gen.ts
@ -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 $$5 from "./islands/KMenu/commands/add_series_infos.ts";
|
||||||
import * as $$6 from "./islands/KMenu/commands/create_article.ts";
|
import * as $$6 from "./islands/KMenu/commands/create_article.ts";
|
||||||
import * as $$7 from "./islands/KMenu/commands/create_movie.ts";
|
import * as $$7 from "./islands/KMenu/commands/create_movie.ts";
|
||||||
import * as $$8 from "./islands/KMenu/types.ts";
|
import * as $$8 from "./islands/KMenu/commands/create_series.ts";
|
||||||
import * as $$9 from "./islands/Search.tsx";
|
import * as $$9 from "./islands/KMenu/types.ts";
|
||||||
|
import * as $$10 from "./islands/Search.tsx";
|
||||||
|
|
||||||
const manifest = {
|
const manifest = {
|
||||||
routes: {
|
routes: {
|
||||||
@ -93,8 +94,9 @@ const manifest = {
|
|||||||
"./islands/KMenu/commands/add_series_infos.ts": $$5,
|
"./islands/KMenu/commands/add_series_infos.ts": $$5,
|
||||||
"./islands/KMenu/commands/create_article.ts": $$6,
|
"./islands/KMenu/commands/create_article.ts": $$6,
|
||||||
"./islands/KMenu/commands/create_movie.ts": $$7,
|
"./islands/KMenu/commands/create_movie.ts": $$7,
|
||||||
"./islands/KMenu/types.ts": $$8,
|
"./islands/KMenu/commands/create_series.ts": $$8,
|
||||||
"./islands/Search.tsx": $$9,
|
"./islands/KMenu/types.ts": $$9,
|
||||||
|
"./islands/Search.tsx": $$10,
|
||||||
},
|
},
|
||||||
baseUrl: import.meta.url,
|
baseUrl: import.meta.url,
|
||||||
};
|
};
|
||||||
|
@ -4,6 +4,7 @@ import { createNewMovie } from "@islands/KMenu/commands/create_movie.ts";
|
|||||||
import { createNewArticle } from "@islands/KMenu/commands/create_article.ts";
|
import { createNewArticle } from "@islands/KMenu/commands/create_article.ts";
|
||||||
import { getCookie } from "@lib/string.ts";
|
import { getCookie } from "@lib/string.ts";
|
||||||
import { addSeriesInfo } from "@islands/KMenu/commands/add_series_infos.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> = {
|
export const menus: Record<string, Menu> = {
|
||||||
main: {
|
main: {
|
||||||
@ -70,6 +71,7 @@ export const menus: Record<string, Menu> = {
|
|||||||
addSeriesInfo,
|
addSeriesInfo,
|
||||||
createNewArticle,
|
createNewArticle,
|
||||||
createNewMovie,
|
createNewMovie,
|
||||||
|
createNewSeries,
|
||||||
addMovieInfos,
|
addMovieInfos,
|
||||||
],
|
],
|
||||||
},
|
},
|
||||||
|
81
islands/KMenu/commands/create_series.ts
Normal file
81
islands/KMenu/commands/create_series.ts
Normal 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;
|
||||||
|
},
|
||||||
|
};
|
Loading…
x
Reference in New Issue
Block a user