42 lines
1.3 KiB
TypeScript
42 lines
1.3 KiB
TypeScript
import { getCookie } from "@lib/string.ts";
|
|
import { MenuEntry } from "../types.ts";
|
|
import { ArticleResource } from "@lib/marka/schema.ts";
|
|
import { fetchStream } from "@lib/helpers.ts";
|
|
|
|
export const enhanceArticleInfo: MenuEntry = {
|
|
title: "Enhance Article Info",
|
|
meta: "Update metadata and content from source url",
|
|
icon: "IconReportSearch",
|
|
cb: (state, context) => {
|
|
state.activeState.value = "loading";
|
|
const article = context as ArticleResource;
|
|
|
|
fetchStream(
|
|
`/api/articles/enhance/${article.name}/`,
|
|
(chunk) => {
|
|
if (chunk.type === "error") {
|
|
state.activeState.value = "error";
|
|
state.loadingText.value = chunk.message;
|
|
} else if (chunk.type == "finished") {
|
|
state.loadingText.value = "Finished";
|
|
setTimeout(() => {
|
|
state.visible.value = false;
|
|
state.activeState.value = "normal";
|
|
globalThis.location.reload();
|
|
}, 500);
|
|
} else {
|
|
state.loadingText.value = chunk.message;
|
|
}
|
|
},
|
|
{ method: "POST" },
|
|
);
|
|
},
|
|
visible: () => {
|
|
const loc = globalThis["location"];
|
|
if (!getCookie("session_cookie")) return false;
|
|
|
|
return (loc?.pathname?.includes("article") &&
|
|
!loc.pathname.endsWith("articles"));
|
|
},
|
|
};
|