import { initializeAddInstanceDialog } from "./add_an_instance.mjs"; import { initializeInstanceDetailsDialog } from "./confirm_instance_details.mjs"; import knownSoftware from "./known_software.mjs"; import storageManager from "./storage_manager.mjs"; console.log(knownSoftware); console.log(storageManager.storage.instances); export function getMainDialog(): HTMLDialogElement { return document.getElementById('mainDialog') as HTMLDialogElement; } const instanceDetailsDialogCallback = ( name: string, host: string, hostSecure: boolean, software: string, icon: string | null ) => { storageManager.storage.instances.push({ name, origin: `http${hostSecure ? "s" : ""}://${host}`, software, iconURL: icon ?? undefined }); }; const detailsDialog = document.querySelector("#instanceDetails"); if (!(detailsDialog instanceof HTMLDialogElement)) throw new Error("Couldn't find instanceDetails dialog"); export const { showInstanceDetailsDialog, hideInstanceDetailsDialog, populateInstanceDetailsDialog } = initializeInstanceDetailsDialog(detailsDialog, instanceDetailsDialogCallback); const addInstanceDialogCallback = async ( host: string, secure: boolean, autoQueryMetadata: boolean, ) => { 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); } catch { populateInstanceDetailsDialog("", host, secure, "", null); } finally { showInstanceDetailsDialog(); } } const addDialog = document.querySelector("#addInstance"); if (!(addDialog instanceof HTMLDialogElement)) throw new Error("Couldn't find addInstance dialog"); export const { showAddInstanceDialog, hideAddInstanceDialog } = initializeAddInstanceDialog(addDialog, addInstanceDialogCallback);