this repo has no description
1import settings from "@moonlight-mod/wp/settings_settings"; 2import React from "@moonlight-mod/wp/react"; 3import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; 4import { Moonbase, pages, RestartAdviceMessage, Update } from "@moonlight-mod/wp/moonbase_ui"; 5import UserSettingsModalActionCreators from "@moonlight-mod/wp/discord/actions/UserSettingsModalActionCreators"; 6import Margins from "@moonlight-mod/wp/discord/styles/shared/Margins.css"; 7import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; 8import { Text, Breadcrumbs } from "@moonlight-mod/wp/discord/components/common/index"; 9import { MenuItem } from "@moonlight-mod/wp/contextMenu_contextMenu"; 10 11const notice = { 12 stores: [MoonbaseSettingsStore], 13 element: () => { 14 // Require it here because lazy loading SUX 15 const SettingsNotice = spacepack.require("discord/components/common/SettingsNotice").default; 16 return ( 17 <SettingsNotice 18 submitting={MoonbaseSettingsStore.submitting} 19 onReset={() => { 20 MoonbaseSettingsStore.reset(); 21 }} 22 onSave={() => { 23 MoonbaseSettingsStore.writeConfig(); 24 }} 25 /> 26 ); 27 } 28}; 29 30const oldLocation = MoonbaseSettingsStore.getExtensionConfigRaw<boolean>("moonbase", "oldLocation", false); 31const position = oldLocation ? -2 : -9999; 32 33function addSection(id: string, name: string, element: React.FunctionComponent) { 34 settings.addSection(`moonbase-${id}`, name, element, null, position, notice); 35} 36 37// FIXME: move to component types 38type Breadcrumb = { 39 id: string; 40 label: string; 41}; 42 43function renderBreadcrumb(crumb: Breadcrumb, last: boolean) { 44 return ( 45 <Text variant="heading-lg/semibold" tag="h2" color={last ? "header-primary" : "header-secondary"}> 46 {crumb.label} 47 </Text> 48 ); 49} 50 51if (!oldLocation) { 52 settings.addDivider(position); 53} 54 55if (MoonbaseSettingsStore.getExtensionConfigRaw<boolean>("moonbase", "sections", false)) { 56 if (oldLocation) settings.addHeader("Moonbase", position); 57 58 const _pages = oldLocation ? pages : pages.reverse(); 59 for (const page of _pages) { 60 addSection(page.id, page.name, () => { 61 const breadcrumbs = [ 62 { id: "moonbase", label: "Moonbase" }, 63 { id: page.id, label: page.name } 64 ]; 65 return ( 66 <> 67 <Breadcrumbs 68 className={Margins.marginBottom20} 69 renderCustomBreadcrumb={renderBreadcrumb} 70 breadcrumbs={breadcrumbs} 71 activeId={page.id} 72 > 73 {page.name} 74 </Breadcrumbs> 75 76 <RestartAdviceMessage /> 77 <Update /> 78 79 <page.element /> 80 </> 81 ); 82 }); 83 } 84 85 if (!oldLocation) settings.addHeader("Moonbase", position); 86} else { 87 settings.addSection("moonbase", "Moonbase", Moonbase, null, position, notice); 88 89 settings.addSectionMenuItems( 90 "moonbase", 91 ...pages.map((page, i) => ( 92 <MenuItem 93 key={page.id} 94 id={`moonbase-${page.id}`} 95 label={page.name} 96 action={() => UserSettingsModalActionCreators.open("moonbase", i.toString())} 97 /> 98 )) 99 ); 100}