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 = `
Wherry
${t("welcome.subtitle")}
`; 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); }