import type { AuthStateValue } from "../shared/auth-messages"; import type { UpdateManifest } from "../shared/update-check"; export function renderLoggedOut(root: HTMLElement, error?: string | null): void { root.innerHTML = `

Star Chart Search Enhancer

登录后才能使用星图增强功能

${error ? `

${error}

` : ""}
`; } export function renderLoggedIn( root: HTMLElement, authState: AuthStateValue ): void { const userInfo = authState.userInfo; root.innerHTML = `

Star Chart Search Enhancer

已登录

${userInfo?.name ?? userInfo?.username ?? "未知用户"}

${userInfo?.email ?? ""}

版本更新

正在检查更新...

`; } export function renderUpdateStatus( root: HTMLElement, options: { currentVersion: string; manifest?: UpdateManifest; status: "checking" | "error" | "latest" | "available"; } ): void { const container = root.querySelector('[data-popup-update="root"]'); if (!container) { return; } if (options.status === "checking") { container.innerHTML = `

版本更新

当前版本:${options.currentVersion}

正在检查更新...

`; return; } if (options.status === "error") { container.innerHTML = `

版本更新

当前版本:${options.currentVersion}

暂时无法检查更新

如果需要新版,请联系维护同事获取更新包。

`; return; } if (options.status === "latest" || !options.manifest) { container.innerHTML = `

版本更新

当前版本:${options.currentVersion}

当前已是最新版本

`; return; } container.innerHTML = `

版本更新

当前版本:${options.currentVersion}

发现新版本:${options.manifest.latestVersion}

${renderReleaseNotes(options.manifest.releaseNotes)}

下载后请解压新版 zip,并在 chrome://extensions 里重新加载插件。

`; } export function setUpdateDownloadStatus( root: HTMLElement, value: string ): void { const output = root.querySelector('[data-popup-update-download-status="text"]'); if (!output) { return; } output.textContent = value; } function renderReleaseNotes(releaseNotes: string[]): string { if (releaseNotes.length === 0) { return ""; } return ` `; } function escapeHtml(value: string): string { return value .replace(/&/g, "&") .replace(//g, ">") .replace(/"/g, """); } export function renderDevPanel( root: HTMLElement, authState: AuthStateValue ): void { const panel = root.ownerDocument.createElement("section"); panel.dataset.popupDevPanel = "root"; panel.innerHTML = `

dev auth panel

resource: ${authState.resource ?? ""}

scopes: ${(authState.scopes ?? []).join(", ")}

token: ${authState.tokenAvailable ? "available" : "missing"}

expires: ${authState.accessTokenExpiresAt ?? "unknown"}

error: ${authState.lastError ?? ""}


  `;
  root.appendChild(panel);
}

export function setProtectedApiResult(root: HTMLElement, value: string): void {
  const output = root.querySelector(
    '[data-popup-protected-api-result="output"]'
  );

  if (!output) {
    return;
  }

  output.textContent = value;
}