FeDirect/static/crossroad.mts

52 lines
1.8 KiB
TypeScript
Raw Normal View History

import { initializeAddInstanceDialog } from "./add_an_instance.mjs";
2025-01-14 10:49:44 +01:00
import { initializeInstanceDetailsDialog } from "./confirm_instance_details.mjs";
2025-01-12 04:47:05 +01:00
import knownSoftware from "./known_software.mjs";
2025-01-12 07:34:39 +01:00
import storageManager from "./storage_manager.mjs";
2025-01-12 04:47:05 +01:00
console.log(knownSoftware);
2025-01-12 07:34:39 +01:00
console.log(storageManager.storage.instances);
export function getMainDialog(): HTMLDialogElement {
return document.getElementById('mainDialog') as HTMLDialogElement;
}
2025-01-14 10:49:44 +01:00
const detailsDialog = document.querySelector("#instanceDetails");
if (!(detailsDialog instanceof HTMLDialogElement))
throw new Error("Couldn't find instanceDetails dialog");
export const {
showInstanceDetailsDialog,
hideInstanceDetailsDialog,
populateInstanceDetailsDialog
} = initializeInstanceDetailsDialog(detailsDialog);
const addInstanceDialogCallback = async (
host: string,
secure: boolean,
autoQueryMetadata: boolean,
) => {
2025-01-14 13:10:29 +01:00
try {
if (!autoQueryMetadata) throw new Error("Don't");
const { name, software, iconURL } =
await fetch(`/api/instance_info/${secure}/${encodeURI(host)}`)
.then(r => r.json());
if (
typeof name !== "string"
|| typeof software !== "string"
|| !(typeof iconURL === "string" || iconURL === null)
)
throw new Error("Invalid API response");
populateInstanceDetailsDialog(name, host, secure, software, iconURL as string | null);
} finally {
populateInstanceDetailsDialog("", host, secure, "", null);
2025-01-14 10:49:44 +01:00
showInstanceDetailsDialog();
}
}
const addDialog = document.querySelector("#addInstance");
if (!(addDialog instanceof HTMLDialogElement))
throw new Error("Couldn't find addInstance dialog");
2025-01-14 10:49:44 +01:00
export const {
showAddInstanceDialog,
hideAddInstanceDialog
} = initializeAddInstanceDialog(addDialog, addInstanceDialogCallback);