import { state } from "../store.js";
import { t } from "../i18n.js";
import { iconMarkup } from "../icons.js";
import { renderHistoryRows } from "./historyList.js";
import { openNew } from "./connectDialog.js";
import { openSettings } from "./settingsDialog.js";
import { openSiteManagerNew } from "./siteManager.js";
import { connectFromSite, PROTOCOL_LABELS } from "../connectActions.js";
import { escapeHtml } from "../dom.js";
import { shortcutLabel } from "../platform.js";
export function renderWelcome(container) {
container.innerHTML = `
${iconMarkup("folder", 34)}
Wherry
${t("welcome.subtitle")}
${iconMarkup("star", 12)}${t("welcome.savedSites")}
${iconMarkup("history", 12)}${t("welcome.recentConnections")}
`;
container.querySelector('[data-action="new-connection"]').addEventListener("click", openNew);
container.querySelector('[data-action="open-settings"]').addEventListener("click", openSettings);
container.querySelector('[data-action="manage-sites"]')?.addEventListener("click", openSiteManagerNew);
updateWelcome(container);
}
function renderSiteRows(container, sites) {
container.innerHTML = "";
for (const site of sites) {
const row = document.createElement("div");
row.className = "recent-row";
row.innerHTML = `
${iconMarkup("serverSquare", 13)}
${escapeHtml(site.name)}
${PROTOCOL_LABELS[site.protocol] ?? site.protocol}
`;
row.addEventListener("click", () => connectFromSite(site));
container.appendChild(row);
}
}
export function updateWelcome(container) {
const statusRole = container.querySelector('[data-role="status"]');
if (!statusRole) return;
if (state.connectLoading) {
statusRole.innerHTML = '';
} else if (state.connectError) {
statusRole.innerHTML = `${escapeHtml(state.connectError)}`;
} else {
statusRole.innerHTML = "";
}
const sitesWrap = container.querySelector('[data-role="sites"]');
const sitesList = container.querySelector('[data-role="sites-list"]');
const sites = state.sites.slice(0, 6);
sitesWrap.style.display = sites.length ? "" : "none";
if (sites.length) renderSiteRows(sitesList, sites);
const recentWrap = container.querySelector('[data-role="recent"]');
const recentList = container.querySelector('[data-role="recent-list"]');
const rows = state.history.slice(0, 6);
recentWrap.style.display = rows.length ? "" : "none";
if (rows.length) renderHistoryRows(recentList, rows);
}