electron/home-window.d.mts
Rama main · réplica de lectura del repositorio original.
/** What this computer's screen says while the window can't show the place. `reason`: the Admin's words on why My Cloud
* doesn't answer, in English; `cause`: the same as a code the page says in its own language; `machine`: a plan
* problem's state; `other`: another MausBot Cloud account is signed in; `name`: the team whose Cloud is being opened
* (absent for My Cloud). */
export type HomeView = { name?: string } & (
| { screen: "opening" | "waking" | "moving" }
/** The Admin is setting it up (or a brand-new one's name isn't found yet, at `checking`): the step it reports. */
| { screen: "setup"; step?: import("./cloud-home.mjs").CloudSetupStep; slow?: true }
| { screen: "offline"; reason?: string; cause?: "host" | "no_answer" }
| { screen: "signin"; other?: true }
/** `member`: a team's User, who can't subscribe or pay for it and is sent to its owner. */
| { screen: "plan"; machine: "stopped" | "payment-problem" | "failed"; member?: true }
/** A Cloud the session's list says isn't running, so nothing looks up its address: it has ended (`deleteAt`: when its kept
* files are deleted), its checkout wasn't finished, or its payment has a problem; `removable` while its owner may take it
* off their list. */
| { screen: "ended" | "checkout" | "payment"; deleteAt?: number; removable?: true });
/** The window onto My Cloud once it is the person's home (preload `home`). */
export interface HomeBridge {
/** This computer's screen only. */
state(): Promise<HomeView>;
onState(callback: (view: HomeView) => void): () => void;
/** This computer's screen only: look again now. */
retry(): Promise<HomeView>;
/** This computer's screen only, once the person said yes there: the Cloud it shows leaves their list (absent: an older app). */
remove?(): Promise<import("./cloud-account.mjs").CloudRemoveOutcome>;
/** This device's MausBot Cloud sign-in, again; on My Cloud's page only from the person's click. */
signIn(): Promise<void>;
/** My Cloud's own page only: its session ended, so the app signs it in again by itself. */
repair(): Promise<void>;
/** My Cloud's own page only: the window reloaded it just now for its newer version. */
updating?: boolean;
}
export type Home = ({ kind: "computer" } | { kind: "cloud"; origin: string } | { kind: "signin"; other?: true })
/** This computer's copy is frozen by a move to a server of the person's own, whose marker names it: that server, and
* its name. The copy's own page has nothing to show, so the window goes back to it (`reopen`). */
& { frozenPlace?: { origin: string | null; place: string } };
/** A place the window shows: My Cloud, or a team's Cloud or another Cloud of the person's own (`own`), from the verified session. */
export type HomePlace = { kind: "cloud"; origin: string } | { kind: "team" | "own"; id: string; name: string; role: string | null; origin: string };
/** What to open: My Cloud, a team's Cloud, another Cloud of the person's own, or (null) the place remembered from last time. */
export type HomeAsk = "cloud" | { team: string; name?: string } | { cloud: string; name?: string } | null;
/** The place the window showed last, as home-places.mjs keeps it: a team's Cloud or another of the person's own (with its
* name and address as saved), a workspace of this computer's own, or a server saved by hand. */
export type RememberedPlace = (({ team: string } | { cloud: string }) & { name?: string; origin?: string }) | { profile: string } | { server: string } | null;
export declare function otherPlace(place: unknown): boolean;
/** This computer's screen for a listed Cloud that isn't running (or its setup's step); null for one that opens. */
export declare function cloudScreen(cloud: import("./cloud-list.mjs").CloudListEntry | null | undefined): HomeView | null;
export declare const HOME_SCREEN_PATH: string;
export declare const LOOK_MS: number;
export declare const OPEN_MS: number;
export declare const RETRY_MS: readonly number[];
export declare const QUIET_MS: number;
export declare const VERSION_EVERY_MS: number;
export declare const SPLASH_HANDOFF_MS: number;
export declare const UPDATING_MS: number;
export declare const SPLASH_TEXT: Readonly<{ opening: string; waking: string }>;
export declare const TEAM_RENEW_MS: number;
export declare const TEAM_RENEW_EARLY_MS: number;
export declare const TEAM_RENEW_RETRY_MS: number;
export declare const FRESH_MS: number;
export declare const NAME_WAIT_MS: number;
export declare const NAME_RETRY_MS: readonly number[];
export function nameNotFound(code: number): boolean;
export function createReadyClock(input?: { store?: { read(): unknown; write(value: unknown): void } | null; now?(): number }): { seen(state: unknown): void; fresh(origin: string | null): boolean };
export function splashText(status: "opening" | "waking", name?: string | null, t?: (key: string, params?: Record<string, string | number>) => string): string;
export function placeOf(input: { ask?: HomeAsk; remembered?: RememberedPlace; state?: any }): { kind: "cloud"; left?: string | null } | { kind: "team" | "own"; id: string; name: string; role: string | null; origin: string | null; machine: any };
export function homeOf(input: { journal?: any; frozenCloud?: string | true | null; state?: any }): Home;
export function noWayHome(worked: Home, state?: any): boolean;
export function routeOf(url: string, origin: string): string | null;
interface WindowLike { isDestroyed(): boolean; webContents: { id: number; getURL(): string; reload(): void; mainFrame?: unknown } }
type Timers = { set(work: () => void, ms: number): unknown; clear(timer: unknown): void; every(work: () => void, ms: number): unknown };
export interface HomeWindow {
show(options?: { open?: "phone" | null; place?: HomeAsk }): Promise<unknown>;
openProfile(id: string): Promise<boolean>;
profile(): string | null;
opensNow(ask: "cloud" | { team: string } | { cloud: string }): boolean | null;
cancel(): void;
stopOpening(): void;
stay(): void;
openCloud(open?: "phone" | null): Promise<unknown>;
/** Remove from list from this computer's screen: the Cloud it shows leaves the person's list. */
remove(): Promise<import("./cloud-account.mjs").CloudRemoveOutcome>;
asking(): boolean;
refresh(): Promise<Home>;
view(): HomeView;
cloudOrigin(): string | null;
/** The origin of the place the window shows (a team's Cloud, or My Cloud), else null. */
placeOrigin(): string | null;
current(): Home;
shown(): HomePlace | null;
retry(): Promise<unknown>;
signIn(): Promise<void>;
repair(): Promise<void>;
changed(): Promise<void>;
responded(details: { url: string; statusCode: number; webContentsId?: number }): void;
navigated(url: string): void;
failed(url: string, code?: number): boolean;
homePage(event: unknown): boolean;
/** Asked once by the home page as it loads: the window reloaded it just now for its newer version. */
updating(event: unknown): boolean;
screenPage(event: unknown): boolean;
/** Signs the team on screen in again now, without moving the page. */
renew(): Promise<void>;
close(): void;
}
export function createHomeWindow(deps: {
journal(): unknown;
frozen(): Promise<{ frozen: boolean; cloud?: string; place?: string } | null>;
account(): { state(): any; power(): any; wakeHome(): Promise<unknown>; setWaking(on: boolean): void; pairHome(cloudId?: string | null): Promise<{ origin: string; code: string; expiresAt: number }>;
pairTeam?(teamId: string): Promise<{ origin: string; code: string; expiresAt: number }>; signInAgain(): Promise<unknown>; begin(): Promise<unknown>; signOut?(): Promise<unknown>; reopen?(): Promise<unknown>;
hideCloud?(cloudId: string): Promise<{ outcome: import("./cloud-account.mjs").CloudRemoveOutcome }> } | null;
restored?(): Promise<unknown>;
window(): WindowLike | null;
ensureWindow(): void;
localOrigin(): string;
cookieFetch: (url: string, init?: RequestInit) => Promise<Response>;
power: { asleep(): boolean; hold(): void; woke(): void };
go(url: string, origin: string | null, place: HomePlace | null): unknown;
reopen?(place: { origin: string | null; place: string }, still?: () => boolean): Promise<boolean>;
showLocal(leaving: boolean): unknown;
clean?: import("./clean-workspace.mjs").CleanWorkspace | null;
remembered?(): RememberedPlace;
remember?(place: { team: string } | { cloud: string } | { profile: string } | { server: string } | null): void;
left?(name: string): void;
drop?(place: { kind: "team" | "own"; id: string; name: string }): void;
splash?(): { status(text: string): void } | null;
lastInput?(): number;
publish?(view: HomeView): void;
/** Home as worked out changed: this computer, My Cloud (`origin`), or the sign-in screen. */
rehomed?(home: Home): void;
versionEveryMs?: number;
quietMs?: number;
now?(): number;
timers?: Timers;
hosts?(): { clearHostResolverCache(): Promise<void>; resolveHost(host: string, options?: { cacheUsage?: "allowed" | "staleAllowed" | "disallowed" }): Promise<{ endpoints: unknown[] }> } | null;
readyStore?: { read(): unknown; write(value: unknown): void } | null;
log?(line: string): void;
t?(key: string, params?: Record<string, string | number>): string;
}): HomeWindow;
export function installHomeWindowIpc(deps: {
ipcMain: { handle(channel: string, handler: (event: any, ...args: any[]) => unknown): void; on(channel: string, listener: (event: any) => void): void };
homeWindow: HomeWindow;
cloudPage(event: unknown): "local" | "cloud" | null;
}): void;