import settings from "@moonlight-mod/wp/settings_settings"; import React from "@moonlight-mod/wp/react"; import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; import { Moonbase, pages, RestartAdviceMessage, Update } from "@moonlight-mod/wp/moonbase_ui"; import UserSettingsModalActionCreators from "@moonlight-mod/wp/discord/actions/UserSettingsModalActionCreators"; import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css"; import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; import { MenuItem, Text, Breadcrumbs } from "@moonlight-mod/wp/discord/components/common/index"; const notice = { stores: [MoonbaseSettingsStore], element: () => { // Require it here because lazy loading SUX const SettingsNotice = spacepack.require("discord/components/common/SettingsNotice").default; return ( { MoonbaseSettingsStore.reset(); }} onSave={() => { MoonbaseSettingsStore.writeConfig(); }} /> ); } }; const oldLocation = MoonbaseSettingsStore.getExtensionConfigRaw("moonbase", "oldLocation", false); const position = oldLocation ? -2 : -9999; function addSection(id: string, name: string, element: React.FunctionComponent) { settings.addSection(`moonbase-${id}`, name, element, null, position, notice); } // FIXME: move to component types type Breadcrumb = { id: string; label: string; }; function renderBreadcrumb(crumb: Breadcrumb, last: boolean) { return ( {crumb.label} ); } if (!oldLocation) { settings.addDivider(position); } if (MoonbaseSettingsStore.getExtensionConfigRaw("moonbase", "sections", false)) { if (oldLocation) settings.addHeader("Moonbase", position); const _pages = oldLocation ? pages : pages.reverse(); for (const page of _pages) { addSection(page.id, page.name, () => { const breadcrumbs = [ { id: "moonbase", label: "Moonbase" }, { id: page.id, label: page.name } ]; return ( <> {page.name} ); }); } if (!oldLocation) settings.addHeader("Moonbase", position); } else { settings.addSection("moonbase", "Moonbase", Moonbase, null, position, notice); settings.addSectionMenuItems( "moonbase", ...pages.map((page, i) => ( UserSettingsModalActionCreators.open("moonbase", i.toString())} /> )) ); }