import { useEffect, useState, useCallback } from 'preact/hooks'; import { LoadingSpinner } from "./elements/LoadingSpinner"; import { BridgeRoomState } from "../../src/Widgets/BridgeWidgetInterface"; import GeneralConfig from './configs/GeneralConfig'; import style from "./AdminSettings.module.scss"; import { BridgeAPI } from "../BridgeAPI"; import GitHubState from "../components/GitHubState"; interface IProps { roomState: BridgeRoomState; bridgeApi: BridgeAPI; } enum AdminSettingsTab { General = 0, GitHub = 1, GitLab = 2, Jira = 3, Figma = 4, } export default function AdminSettings(props: IProps) { const [currentTab, setCurrentTab] = useState(AdminSettingsTab.General); const [busy, setBusy] = useState(true); const [activeSections, setActiveSections] = useState<{[sectionName: string]: boolean}>({}); useEffect(() => { props.bridgeApi.getEnabledConfigSections().then(sections => { setActiveSections(sections); }) setBusy(false); }, [setBusy, setActiveSections, props.bridgeApi]); const onSectionClick = useCallback( (event: MouseEvent) => { const key = parseInt((event.target as HTMLElement).parentElement.getAttribute('sectionkey'), 10); setCurrentTab(key as AdminSettingsTab); }, [setCurrentTab] ); if (busy) { return
; } return

Hookshot Bridge settings

{currentTab === AdminSettingsTab.General && } {currentTab === AdminSettingsTab.GitHub && }
; }