import { MenuEntry } from "@islands/KMenu/types.ts";
import { fetchStream, isValidUrl } from "@lib/helpers.ts";
import { getCookie } from "@lib/string.ts";

export const createNewArticle: MenuEntry = {
  title: "Create new article",
  meta: "",
  icon: "IconSquareRoundedPlus",
  cb: (state) => {
    state.menus["input_link"] = {
      title: "Link:",
      entries: [],
    };

    state.activeMenu.value = "input_link";
    state.activeState.value = "input";

    const unsub = state.commandInput.subscribe((value) => {
      if (isValidUrl(value)) {
        unsub();

        state.activeState.value = "loading";

        fetchStream("/api/articles/create?url=" + value, (chunk) => {
          if (chunk.startsWith("id:")) {
            state.loadingText.value = "Finished";
            setTimeout(() => {
              window.location.href = "/articles/" +
                chunk.replace("id:", "").trim();
            }, 500);
          } else {
            state.loadingText.value = chunk;
          }
        });
      }
    });
  },
  visible: () => {
    if (!getCookie("session_cookie")) return false;
    if (
      !globalThis?.location?.pathname?.includes("article") &&
      globalThis?.location?.pathname !== "/"
    ) return false;
    return true;
  },
};
