import { Component, JSX, render } from "preact"; import { Page } from "../../../types/Page"; import { SecretTitleElement } from "../SecretTitleElement"; import { getCapabilitiesPath, getCapsPath } from "../../../api/sys/getCapabilities"; import { getTransitKeys } from "../../../api/transit/getTransitKeys"; import i18next from "i18next"; type TransitViewListState = { contentLoaded: boolean; transitKeysList: string[]; }; export class TransitViewListItem extends Component<{ page: Page }, TransitViewListState> { constructor() { super(); this.state = { contentLoaded: false, transitKeysList: [], }; } timer: unknown; getTransitKeys(): void { void getTransitKeys(this.props.page.state.baseMount) .then((keys) => { this.setState({ contentLoaded: true, transitKeysList: keys, }); }) .catch((_) => { this.setState({ contentLoaded: true, transitKeysList: [], }); }); } componentDidMount(): void { this.getTransitKeys(); } render(): JSX.Element { if (!this.state.contentLoaded) { return

{i18next.t("content_loading")}

; } if (this.state.transitKeysList.length == 0) { return

{i18next.t("transit_view_none_here_text")}

; } return ( ); } } export class TransitViewPage extends Page { constructor() { super(); } async goBack(): Promise { await this.router.changePage("SECRETS_HOME"); } async render(): Promise { this.state.secretItem = ""; const mountsPath = "/sys/mounts/" + this.state.baseMount; const caps = await getCapabilitiesPath([ mountsPath, this.state.baseMount, ]); const mountCaps = caps[mountsPath]; const transitCaps = caps[this.state.baseMount]; render( <>

{transitCaps.includes("create") && ( )} {mountCaps.includes("delete") && ( )}

, this.router.pageContentElement, ); } async renderPageTitle(): Promise { render(, this.router.pageTitleElement); } get name(): string { return i18next.t("transit_view_title"); } }