31 lines
898 B
TypeScript
31 lines
898 B
TypeScript
|
|
import { isSavedVaultHost } from "../../domain/ephemeralHosts";
|
||
|
|
import type { Host, TerminalSession } from "../../types";
|
||
|
|
|
||
|
|
export type TerminalFontSizeUpdateTarget =
|
||
|
|
| { kind: "none" }
|
||
|
|
| { kind: "global" }
|
||
|
|
| { kind: "session" }
|
||
|
|
| { kind: "host"; host: Host };
|
||
|
|
|
||
|
|
export function resolveTerminalFontSizeUpdateTarget({
|
||
|
|
session,
|
||
|
|
sessionHost,
|
||
|
|
rawHost,
|
||
|
|
}: {
|
||
|
|
session?: TerminalSession;
|
||
|
|
sessionHost?: Host | null;
|
||
|
|
rawHost?: Host | null;
|
||
|
|
}): TerminalFontSizeUpdateTarget {
|
||
|
|
if (session?.workspaceId || session?.ephemeralHost) return { kind: "session" };
|
||
|
|
if (!sessionHost) return { kind: "none" };
|
||
|
|
|
||
|
|
const usesGlobalFontSize =
|
||
|
|
sessionHost.protocol === "local"
|
||
|
|
|| sessionHost.id?.startsWith("local-")
|
||
|
|
|| !rawHost;
|
||
|
|
if (usesGlobalFontSize) return { kind: "global" };
|
||
|
|
|
||
|
|
if (!isSavedVaultHost(rawHost)) return { kind: "session" };
|
||
|
|
return { kind: "host", host: rawHost };
|
||
|
|
}
|