From 2ae7f5c0c29f6b7b3d18d364b4e997a3c0977d85 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Mon, 17 Jun 2024 23:15:52 +0200 Subject: [PATCH 1/8] everything: latest swc fixes --- packages/core-extensions/src/common/index.ts | 5 +--- .../src/common/webpackModules/components.ts | 6 ++-- .../src/common/webpackModules/flux.ts | 30 ++++++++++++++++--- .../common/webpackModules/fluxDispatcher.ts | 2 +- .../src/disableSentry/index.ts | 14 ++++----- .../core-extensions/src/moonbase/index.tsx | 2 +- .../src/moonbase/webpackModules/moonbase.tsx | 3 +- .../webpackModules/ui/config/index.tsx | 2 +- .../webpackModules/ui/extensions/card.tsx | 17 ++++++----- .../ui/extensions/filterBar.tsx | 11 ++++--- .../webpackModules/ui/extensions/index.tsx | 5 ++-- .../src/moonbase/webpackModules/ui/index.tsx | 3 +- packages/core-extensions/src/noTrack/index.ts | 2 +- .../core-extensions/src/quietLoggers/index.ts | 12 ++++---- .../core-extensions/src/settings/index.ts | 8 ++--- 15 files changed, 72 insertions(+), 50 deletions(-) diff --git a/packages/core-extensions/src/common/index.ts b/packages/core-extensions/src/common/index.ts index 95209d6..a8fada3 100644 --- a/packages/core-extensions/src/common/index.ts +++ b/packages/core-extensions/src/common/index.ts @@ -10,10 +10,7 @@ export const webpackModules: ExtensionWebExports["webpackModules"] = { }, flux: { - dependencies: [ - { ext: "spacepack", id: "spacepack" }, - "useStateFromStores:function" - ] + dependencies: [{ ext: "spacepack", id: "spacepack" }, "connectStores:"] }, fluxDispatcher: { diff --git a/packages/core-extensions/src/common/webpackModules/components.ts b/packages/core-extensions/src/common/webpackModules/components.ts index 33479f8..3fcb0c3 100644 --- a/packages/core-extensions/src/common/webpackModules/components.ts +++ b/packages/core-extensions/src/common/webpackModules/components.ts @@ -3,10 +3,12 @@ import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; const Components = spacepack.findByCode("MasonryList:function")[0].exports; const MarkdownParser = spacepack.findByCode( "parseAutoModerationSystemMessage:" -)[0].exports.default; +)[0].exports.Z; const LegacyText = spacepack.findByCode(".selectable", ".colorStandard")[0] .exports.default; -const Flex = spacepack.findByCode(".flex" + "GutterSmall,")[0].exports.Flex; +const Flex = Object.values( + spacepack.findByCode(".flex" + "GutterSmall,")[0].exports +)[0]; const CardClasses = spacepack.findByCode("card", "cardHeader", "inModal")[0] .exports; const ControlClasses = spacepack.findByCode( diff --git a/packages/core-extensions/src/common/webpackModules/flux.ts b/packages/core-extensions/src/common/webpackModules/flux.ts index a3b702b..b8f3ff1 100644 --- a/packages/core-extensions/src/common/webpackModules/flux.ts +++ b/packages/core-extensions/src/common/webpackModules/flux.ts @@ -1,6 +1,28 @@ import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; -module.exports = spacepack.findByCode( - ["useStateFromStores", ":function"].join(""), - "Store:" -)[0].exports; +const mod = spacepack.findByCode("connectStores:")[0].exports; + +const useStateFromStores = spacepack.findFunctionByStrings( + mod, + '"useStateFromStores"' +)!; + +module.exports = { + BatchedStoreListener: spacepack.findFunctionByStrings( + mod, + " tried to load a non-existent store." + ), + Dispatcher: spacepack.findFunctionByStrings(mod, "_dispatchWithDevtools("), + Store: spacepack.findFunctionByStrings(mod, "registerActionHandlers("), + default: mod.ZP, + statesWillNeverBeEqual: spacepack.findFunctionByStrings(mod, "return!1"), + useStateFromStores, + useStateFromStoresArray: spacepack.findFunctionByStrings( + mod, + new RegExp(`return ${useStateFromStores.name}\\(.+?\\.[^Z]\\)`) + ), + useStateFromStoresObject: spacepack.findFunctionByStrings( + mod, + new RegExp(`return ${useStateFromStores.name}\\(.+?\\.Z\\)`) + ) +}; diff --git a/packages/core-extensions/src/common/webpackModules/fluxDispatcher.ts b/packages/core-extensions/src/common/webpackModules/fluxDispatcher.ts index 964f7eb..0038e3b 100644 --- a/packages/core-extensions/src/common/webpackModules/fluxDispatcher.ts +++ b/packages/core-extensions/src/common/webpackModules/fluxDispatcher.ts @@ -3,4 +3,4 @@ import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; module.exports = spacepack.findByExports( "isDispatching", "dispatch" -)[0].exports.default; +)[0].exports.Z; diff --git a/packages/core-extensions/src/disableSentry/index.ts b/packages/core-extensions/src/disableSentry/index.ts index c67b31e..8cfe478 100644 --- a/packages/core-extensions/src/disableSentry/index.ts +++ b/packages/core-extensions/src/disableSentry/index.ts @@ -3,10 +3,10 @@ import { Patch, PatchReplaceType } from "@moonlight-mod/types"; export const patches: Patch[] = [ { - find: "DSN:function", + find: "profiledRootComponent:", replace: { type: PatchReplaceType.Normal, - match: /(?<=\.default=){.+?}}/, + match: /(?<=\.Z=){.+?}}/, replacement: 'require("disableSentry_stub").proxy()' } }, @@ -14,24 +14,24 @@ export const patches: Patch[] = [ find: "window.DiscordSentry.addBreadcrumb", replace: { type: PatchReplaceType.Normal, - match: /default:function\(\){return .}/, + match: /Z:function\(\){return .}/, replacement: 'default:function(){return (...args)=>{moonlight.getLogger("disableSentry").debug("Sentry calling addBreadcrumb passthrough:", ...args);}}' } }, { - find: "initSentry:function", + find: "/error-reporting-proxy/web", replace: { type: PatchReplaceType.Normal, - match: /initSentry:function\(\){return .}/, - replacement: "default:function(){return ()=>{}}" + match: /(?<=function .\(\){var _;)/, + replacement: "return;" } }, { find: "window.DiscordErrors=", replace: { type: PatchReplaceType.Normal, - match: /\(0,.\.usesClientMods\)\(\)/, + match: /(?<=uses_client_mods:)./, replacement: "false" } } diff --git a/packages/core-extensions/src/moonbase/index.tsx b/packages/core-extensions/src/moonbase/index.tsx index ab8eb16..2d22c25 100644 --- a/packages/core-extensions/src/moonbase/index.tsx +++ b/packages/core-extensions/src/moonbase/index.tsx @@ -22,7 +22,7 @@ export const webpackModules: ExtensionWebExports["webpackModules"] = { "Masks.PANEL_BUTTON", "removeButtonContainer:", '"Missing channel in Channel.openChannelContextMenu"', - ".default.HEADER_BAR" + ".forumOrHome]:" ] }, diff --git a/packages/core-extensions/src/moonbase/webpackModules/moonbase.tsx b/packages/core-extensions/src/moonbase/webpackModules/moonbase.tsx index b7b166c..d8112f7 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/moonbase.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/moonbase.tsx @@ -12,7 +12,7 @@ function addSection(name: string, element: React.FunctionComponent) { element: () => { // Require it here because lazy loading SUX const SettingsNotice = - spacepack.findByCode("onSaveButtonColor")[0].exports.default; + spacepack.findByCode("onSaveButtonColor")[0].exports.Z; return ( { MoonbaseSettingsStore.writeConfig(); }} + disabled={false} /> ); } diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx index 0f4fa92..651b256 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx @@ -27,7 +27,7 @@ const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; const RemoveButtonClasses = spacepack.findByCode("removeButtonContainer")[0] .exports; -const CircleXIcon = spacepack.findByCode(CircleXIconSVG)[0].exports.default; +const CircleXIcon = spacepack.findByCode(CircleXIconSVG)[0].exports.Z; function RemoveEntryButton({ onClick }: { onClick: () => void }) { return (
diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx index 5f8661a..e6f237a 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx @@ -27,14 +27,15 @@ const UserProfileClasses = spacepack.findByCode( "topSection" )[0].exports; -const DownloadIcon = - spacepack.findByCode(DownloadIconSVG)[0].exports.DownloadIcon; -const TrashIcon = spacepack.findByCode(TrashIconSVG)[0].exports.default; -const DangerIcon = - spacepack.findByCode(DangerIconSVG)[0].exports.CircleExclamationPointIcon; - -const PanelButton = - spacepack.findByCode("Masks.PANEL_BUTTON")[0].exports.default; +const DownloadIcon = Object.values( + spacepack.findByCode(DownloadIconSVG)[0].exports +)[0]; +const TrashIcon = spacepack.findByCode(TrashIconSVG)[0].exports.Z; +const DangerIcon: any = Object.values( + spacepack.findByCode(DangerIconSVG)[0].exports +)[0]; + +const PanelButton = spacepack.findByCode("Masks.PANEL_BUTTON")[0].exports.Z; export default function ExtensionCard({ uniqueId }: { uniqueId: number }) { const [tab, setTab] = React.useState(ExtensionPage.Info); diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx index e399ea7..cd068a2 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx @@ -35,7 +35,7 @@ export const defaultFilter = ~(~0 << 7); const modPromise = spacepack.lazyLoad( '"Missing channel in Channel.openChannelContextMenu"', /e\("(\d+)"\)/g, - /webpackId:"(.+?)"/ + /webpackId:(\d+?),/ ); const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; @@ -49,12 +49,12 @@ const FilterBarClasses = spacepack.findByCode("tagsButtonWithCount:")[0] .exports; const TagItem = spacepack.findByCode(".FORUM_TAG_A11Y_FILTER_BY_TAG")[0].exports - .default; + .Z; const ChevronSmallDownIcon = spacepack.findByCode(ChevronSmallDownIconSVG)[0] - .exports.default; + .exports.Z; const ChevronSmallUpIcon = spacepack.findByCode(ChevronSmallUpIconSVG)[0] - .exports.default; + .exports.Z; let ArrowsUpDownIcon: React.FunctionComponent; function toggleTag( @@ -362,8 +362,7 @@ function FilterBar({ export default React.lazy(() => modPromise.then(async () => { await modPromise; - ArrowsUpDownIcon ??= - spacepack.findByCode(ArrowsUpDownIconSVG)[0].exports.default; + ArrowsUpDownIcon ??= spacepack.findByCode(ArrowsUpDownIconSVG)[0].exports.Z; return { default: FilterBar }; }) diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx index 94d86d8..2069d5f 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx @@ -10,8 +10,9 @@ import * as Flux from "@moonlight-mod/wp/common_flux"; import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; -const SearchBar = spacepack.findByCode("Messages.SEARCH", "hideSearchIcon")[0] - .exports.SearchBar; +const SearchBar: any = Object.values( + spacepack.findByCode("Messages.SEARCH", "hideSearchIcon")[0].exports +)[0]; export default function ExtensionsPage() { const moonbaseId = MoonbaseSettingsStore.getExtensionUniqueId("moonbase")!; diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/index.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/index.tsx index 42c184c..145ecde 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/index.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/index.tsx @@ -7,8 +7,7 @@ import ConfigPage from "./config"; const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; -const { Divider } = spacepack.findByCode(".default.HEADER_BAR")[0].exports - .default; +const { Divider } = spacepack.findByCode(".forumOrHome]:")[0].exports.Z; const TitleBarClasses = spacepack.findByCode("iconWrapper:", "children:")[0] .exports; const TabBarClasses = spacepack.findByCode("nowPlayingColumn:")[0].exports; diff --git a/packages/core-extensions/src/noTrack/index.ts b/packages/core-extensions/src/noTrack/index.ts index d6b8525..4ccd22e 100644 --- a/packages/core-extensions/src/noTrack/index.ts +++ b/packages/core-extensions/src/noTrack/index.ts @@ -4,7 +4,7 @@ export const patches: Patch[] = [ { find: "analyticsTrackingStoreMaker:function", replace: { - match: /analyticsTrackingStoreMaker:function\(\){return .}/, + match: /analyticsTrackingStoreMaker:function\(\){return .+?}/, replacement: "analyticsTrackingStoreMaker:function(){return ()=>{}}" } }, diff --git a/packages/core-extensions/src/quietLoggers/index.ts b/packages/core-extensions/src/quietLoggers/index.ts index c41eb6d..ff9218a 100644 --- a/packages/core-extensions/src/quietLoggers/index.ts +++ b/packages/core-extensions/src/quietLoggers/index.ts @@ -10,8 +10,8 @@ const loggerFixes: Patch[] = [ { find: '"./ggsans-800-extrabolditalic.woff2":', replace: { - match: /\.then\(function\(\){var.+?"MODULE_NOT_FOUND",.\}\)/, - replacement: ".then(()=>(()=>{}))" + match: /throw .+?,./, + replacement: "return{}" } }, { @@ -36,17 +36,17 @@ const stubPatches = [ ['="RunningGameStore"', /.\.info\("games",{.+?}\),/], [ '"[BUILD INFO] Release Channel: "', - /new .{1,2}\.default\(\)\.log\("\[BUILD INFO\] Release Channel: ".+?"\)\),/ + /new .{1,2}\.Z\(\)\.log\("\[BUILD INFO\] Release Channel: ".+?"\)\),/ ], [ - '.AnalyticEvents.APP_NATIVE_CRASH,"Storage"', + '.APP_NATIVE_CRASH,"Storage"', /console\.log\("AppCrashedFatalReport lastCrash:",.,.\);/ ], [ - '.AnalyticEvents.APP_NATIVE_CRASH,"Storage"', + '.APP_NATIVE_CRASH,"Storage"', 'console.log("AppCrashedFatalReport: getLastCrash not supported.");' ], - ['"[NATIVE INFO] ', /new .{1,2}\.default\(\)\.log\("\[NATIVE INFO] .+?\)\),/], + ['"[NATIVE INFO] ', /new .{1,2}\.Z\(\)\.log\("\[NATIVE INFO] .+?\)\),/], ['"Spellchecker"', /.\.info\("Switching to ".+?"\(unavailable\)"\);?/g], [ 'throw Error("Messages are still loading.");', diff --git a/packages/core-extensions/src/settings/index.ts b/packages/core-extensions/src/settings/index.ts index feebe09..0ba72e8 100644 --- a/packages/core-extensions/src/settings/index.ts +++ b/packages/core-extensions/src/settings/index.ts @@ -3,11 +3,11 @@ import { ExtensionWebExports } from "@moonlight-mod/types"; export const patches: Patch[] = [ { - find: ".useUnseenOutboundPromotions)().length", + find: '"useGenerateUserSettingsSections"', replace: { - match: /(\.push\(.+?\)}\)\)}\),)(.)}/, - replacement: (_, orig, sections) => - `${orig}require("settings_settings").Settings._mutateSections(${sections})}` + match: /(?<=\.push\(.+?\)}\)\)}\),)./, + replacement: (sections: string) => + `require("settings_settings").Settings._mutateSections(${sections})` } }, { From 6f976bc493bd54bfaa54a350c85ab76768efca21 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Mon, 17 Jun 2024 23:49:12 +0200 Subject: [PATCH 2/8] contextMenu: latest swc fixes --- .../core-extensions/src/contextMenu/index.tsx | 5 ++- .../contextMenu/webpackModules/contextMenu.ts | 35 ++++++++++++++++--- .../contextMenu/webpackModules/evilMenu.ts | 6 +++- 3 files changed, 40 insertions(+), 6 deletions(-) diff --git a/packages/core-extensions/src/contextMenu/index.tsx b/packages/core-extensions/src/contextMenu/index.tsx index 5ff44f7..ce6ffe0 100644 --- a/packages/core-extensions/src/contextMenu/index.tsx +++ b/packages/core-extensions/src/contextMenu/index.tsx @@ -26,7 +26,10 @@ export const patches: Patch[] = [ export const webpackModules: Record = { contextMenu: { - dependencies: [{ ext: "spacepack", id: "spacepack" }, "MenuGroup:"] + dependencies: [ + { ext: "spacepack", id: "spacepack" }, + "Menu API only allows Items and groups of Items as children." + ] }, evilMenu: { dependencies: [ diff --git a/packages/core-extensions/src/contextMenu/webpackModules/contextMenu.ts b/packages/core-extensions/src/contextMenu/webpackModules/contextMenu.ts index 8220526..280c35c 100644 --- a/packages/core-extensions/src/contextMenu/webpackModules/contextMenu.ts +++ b/packages/core-extensions/src/contextMenu/webpackModules/contextMenu.ts @@ -55,12 +55,39 @@ function _saveProps(self: any, el: any) { return el; } -const MenuElements = spacepack.findByCode("return null", "MenuGroup:")[0] - .exports; - module.exports = { - ...MenuElements, addItem, _patchMenu, _saveProps }; + +// Unmangle Menu elements +const code = + spacepack.require.m[ + spacepack.findByCode( + "Menu API only allows Items and groups of Items as children." + )[0].id + ].toString(); + +let MangledMenu; + +const typeRegex = /if\(.\.type===(.)\.(.+?)\).+?type:"(.+?)"/g; +const typeMap: Record = { + checkbox: "MenuCheckboxItem", + control: "MenuControlItem", + groupstart: "MenuGroup", + customitem: "MenuItem", + radio: "MenuRadioItem", + separator: "MenuSeparator" +}; + +for (const [, modIdent, mangled, type] of code.matchAll(typeRegex)) { + if (!MangledMenu) { + const modId = code.match(new RegExp(`${modIdent}=.\\((\\d+?)\\)`))![1]; + MangledMenu = spacepack.require(modId); + } + + const prop = typeMap[type]; + if (!prop) continue; + module.exports[prop] = MangledMenu[mangled]; +} diff --git a/packages/core-extensions/src/contextMenu/webpackModules/evilMenu.ts b/packages/core-extensions/src/contextMenu/webpackModules/evilMenu.ts index 31dd04d..4b009f3 100644 --- a/packages/core-extensions/src/contextMenu/webpackModules/evilMenu.ts +++ b/packages/core-extensions/src/contextMenu/webpackModules/evilMenu.ts @@ -16,8 +16,12 @@ const mod = new Function( ); const exp: any = {}; mod({}, exp, require); +const Menu = spacepack.findFunctionByStrings( + exp, + "Menu API only allows Items and groups of Items as children." +)!; module.exports = (el: any) => { - return exp.Menu({ + return Menu({ children: el, __contextMenu_evilMenu: true }); From fe23a3257290cd06eebe1b02c5a672f225472280 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Wed, 19 Jun 2024 20:17:38 +0200 Subject: [PATCH 3/8] moonbase: fix icons --- .../core-extensions/src/moonbase/index.tsx | 5 ---- .../core-extensions/src/moonbase/types.ts | 12 --------- .../webpackModules/ui/config/index.tsx | 4 +-- .../webpackModules/ui/extensions/card.tsx | 13 +++------- .../ui/extensions/filterBar.tsx | 26 +++++++------------ .../webpackModules/ui/extensions/settings.tsx | 8 ++---- .../types/src/coreExtensions/components.ts | 1 + 7 files changed, 17 insertions(+), 52 deletions(-) diff --git a/packages/core-extensions/src/moonbase/index.tsx b/packages/core-extensions/src/moonbase/index.tsx index 2d22c25..5c17eae 100644 --- a/packages/core-extensions/src/moonbase/index.tsx +++ b/packages/core-extensions/src/moonbase/index.tsx @@ -1,7 +1,5 @@ import { ExtensionWebExports } from "@moonlight-mod/types"; -import { CircleXIconSVG, DownloadIconSVG, TrashIconSVG } from "./types"; - export const webpackModules: ExtensionWebExports["webpackModules"] = { stores: { dependencies: [ @@ -16,9 +14,6 @@ export const webpackModules: ExtensionWebExports["webpackModules"] = { { ext: "common", id: "react" }, { ext: "common", id: "components" }, { ext: "moonbase", id: "stores" }, - DownloadIconSVG, - TrashIconSVG, - CircleXIconSVG, "Masks.PANEL_BUTTON", "removeButtonContainer:", '"Missing channel in Channel.openChannelContextMenu"', diff --git a/packages/core-extensions/src/moonbase/types.ts b/packages/core-extensions/src/moonbase/types.ts index 8708fb7..a30ff4e 100644 --- a/packages/core-extensions/src/moonbase/types.ts +++ b/packages/core-extensions/src/moonbase/types.ts @@ -1,19 +1,7 @@ import { DetectedExtension, ExtensionManifest } from "types/src"; -export const DownloadIconSVG = - "M12 2a1 1 0 0 1 1 1v10.59l3.3-3.3a1 1 0 1 1 1.4 1.42l-5 5a1 1 0 0 1-1.4 0l-5-5a1 1 0 1 1 1.4-1.42l3.3 3.3V3a1 1 0 0 1 1-1ZM3 20a1 1 0 1 0 0 2h18a1 1 0 1 0 0-2H3Z"; -export const TrashIconSVG = - "M5 6.99902V18.999C5 20.101 5.897 20.999 7 20.999H17C18.103 20.999 19 20.101 19 18.999V6.99902H5ZM11 17H9V11H11V17ZM15 17H13V11H15V17Z"; -export const CircleXIconSVG = - "M7.02799 0.333252C3.346 0.333252 0.361328 3.31792 0.361328 6.99992C0.361328 10.6819 3.346 13.6666 7.02799 13.6666C10.71 13.6666 13.6947 10.6819 13.6947 6.99992C13.6947 3.31792 10.7093 0.333252 7.02799 0.333252ZM10.166 9.19525L9.22333 10.1379L7.02799 7.94325L4.83266 10.1379L3.89 9.19525L6.08466 6.99992L3.88933 4.80459L4.832 3.86259L7.02733 6.05792L9.22266 3.86259L10.1653 4.80459L7.97066 6.99992L10.166 9.19525Z"; export const DangerIconSVG = "M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm1.44-15.94L13.06 14a1.06 1.06 0 0 1-2.12 0l-.38-6.94a1 1 0 0 1 1-1.06h.88a1 1 0 0 1 1 1.06Zm-.19 10.69a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Z"; -export const ChevronSmallDownIconSVG = - "M16.59 8.59003L12 13.17L7.41 8.59003L6 10L12 16L18 10L16.59 8.59003Z"; -export const ChevronSmallUpIconSVG = - "M7.41 16.0001L12 11.4201L16.59 16.0001L18 14.5901L12 8.59006L6 14.5901L7.41 16.0001Z"; -export const ArrowsUpDownIconSVG = - "M3.81962 11.3333L3.81962 1.33325L5.52983 1.33325L5.52985 11.3333L7.46703 9.36658L8.66663 10.5916L4.67068 14.6666L0.666626 10.5916L1.86622 9.34158L3.81962 11.3333Z"; export type MoonbaseNatives = { fetchRepositories( diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx index 651b256..621a7cf 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx @@ -1,5 +1,4 @@ import { LogLevel } from "@moonlight-mod/types"; -import { CircleXIconSVG } from "../../../types"; const logLevels = Object.values(LogLevel).filter( (v) => typeof v === "string" @@ -19,6 +18,7 @@ import { Tooltip, Clickable } from "@moonlight-mod/wp/common_components"; +import CommonComponents from "@moonlight-mod/wp/common_components"; import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; @@ -27,7 +27,7 @@ const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; const RemoveButtonClasses = spacepack.findByCode("removeButtonContainer")[0] .exports; -const CircleXIcon = spacepack.findByCode(CircleXIconSVG)[0].exports.Z; +const CircleXIcon = CommonComponents.CircleXIcon; function RemoveEntryButton({ onClick }: { onClick: () => void }) { return (
diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx index e6f237a..ae43c6b 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx @@ -1,9 +1,4 @@ -import { - DangerIconSVG, - DownloadIconSVG, - ExtensionState, - TrashIconSVG -} from "../../../types"; +import { DangerIconSVG, ExtensionState } from "../../../types"; import { ExtensionLoadSource } from "@moonlight-mod/types"; import React from "@moonlight-mod/wp/common_react"; @@ -27,10 +22,8 @@ const UserProfileClasses = spacepack.findByCode( "topSection" )[0].exports; -const DownloadIcon = Object.values( - spacepack.findByCode(DownloadIconSVG)[0].exports -)[0]; -const TrashIcon = spacepack.findByCode(TrashIconSVG)[0].exports.Z; +const DownloadIcon = CommonComponents.DownloadIcon; +const TrashIcon = CommonComponents.TrashIcon; const DangerIcon: any = Object.values( spacepack.findByCode(DangerIconSVG)[0].exports )[0]; diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx index cd068a2..50141b9 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx @@ -1,9 +1,4 @@ import { tagNames } from "./info"; -import { - ArrowsUpDownIconSVG, - ChevronSmallDownIconSVG, - ChevronSmallUpIconSVG -} from "../../../types"; import spacepack from "@moonlight-mod/wp/spacepack_spacepack"; import React from "@moonlight-mod/wp/common_react"; @@ -20,6 +15,7 @@ import { MenuCheckboxItem, MenuItem } from "@moonlight-mod/wp/common_components"; +import CommonComponents from "@moonlight-mod/wp/common_components"; export enum Filter { Core = 1 << 0, @@ -51,11 +47,9 @@ const FilterBarClasses = spacepack.findByCode("tagsButtonWithCount:")[0] const TagItem = spacepack.findByCode(".FORUM_TAG_A11Y_FILTER_BY_TAG")[0].exports .Z; -const ChevronSmallDownIcon = spacepack.findByCode(ChevronSmallDownIconSVG)[0] - .exports.Z; -const ChevronSmallUpIcon = spacepack.findByCode(ChevronSmallUpIconSVG)[0] - .exports.Z; -let ArrowsUpDownIcon: React.FunctionComponent; +const ChevronSmallDownIcon = CommonComponents.ChevronSmallDownIcon; +const ChevronSmallUpIcon = CommonComponents.ChevronSmallUpIcon; +const ArrowsUpDownIcon = CommonComponents.ArrowsUpDownIcon; function toggleTag( selectedTags: Set, @@ -274,7 +268,7 @@ function FilterBar({ className={FilterBarClasses.sortDropdown} innerClassName={FilterBarClasses.sortDropdownInner} > - + {isShown ? ( - + ) : ( - + )} )} @@ -347,9 +341,9 @@ function FilterBar({ <>All )} {isShown ? ( - + ) : ( - + )} )} @@ -362,8 +356,6 @@ function FilterBar({ export default React.lazy(() => modPromise.then(async () => { await modPromise; - ArrowsUpDownIcon ??= spacepack.findByCode(ArrowsUpDownIconSVG)[0].exports.Z; - return { default: FilterBar }; }) ); diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/settings.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/settings.tsx index 161fb88..c939c5d 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/settings.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/settings.tsx @@ -7,11 +7,7 @@ import { SelectSettingType } from "@moonlight-mod/types/config"; -import { - CircleXIconSVG, - ExtensionState, - MoonbaseExtension -} from "../../../types"; +import { ExtensionState, MoonbaseExtension } from "../../../types"; import React from "@moonlight-mod/wp/common_react"; import CommonComponents from "@moonlight-mod/wp/common_components"; @@ -223,7 +219,7 @@ function MultiSelect({ ext, name, setting, disabled }: SettingsProps) { const RemoveButtonClasses = spacepack.findByCode("removeButtonContainer")[0] .exports; -const CircleXIcon = spacepack.findByCode(CircleXIconSVG)[0].exports.default; +const CircleXIcon = CommonComponents.CircleXIcon; function RemoveEntryButton({ onClick, disabled diff --git a/packages/types/src/coreExtensions/components.ts b/packages/types/src/coreExtensions/components.ts index 16c0609..61e04af 100644 --- a/packages/types/src/coreExtensions/components.ts +++ b/packages/types/src/coreExtensions/components.ts @@ -267,6 +267,7 @@ interface Flex // TODO: wtaf is up with react types not working in jsx export type CommonComponents = { + [index: string]: any; Clickable: ComponentClass< PropsWithChildren<{ onClick?: () => void; From 20c31f54b216eed62dc195a3747a50b176deec93 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Wed, 19 Jun 2024 20:19:05 +0200 Subject: [PATCH 4/8] moonbase: get rid of FilterBar suspense --- .../webpackModules/ui/extensions/filterBar.tsx | 16 +--------------- .../webpackModules/ui/extensions/index.tsx | 15 ++++++--------- 2 files changed, 7 insertions(+), 24 deletions(-) diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx index 50141b9..88445f0 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx @@ -28,12 +28,6 @@ export enum Filter { } export const defaultFilter = ~(~0 << 7); -const modPromise = spacepack.lazyLoad( - '"Missing channel in Channel.openChannelContextMenu"', - /e\("(\d+)"\)/g, - /webpackId:(\d+?),/ -); - const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; const SortMenuClasses = spacepack.findByCode("container:", "clearText:")[0] .exports; @@ -203,7 +197,7 @@ function TagButtonPopout({ ); } -function FilterBar({ +export default function FilterBar({ filter, setFilter, selectedTags, @@ -351,11 +345,3 @@ function FilterBar({
); } - -// TODO: spacepack lazy loading utils -export default React.lazy(() => - modPromise.then(async () => { - await modPromise; - return { default: FilterBar }; - }) -); diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx index 2069d5f..00f78c0 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/index.tsx @@ -9,7 +9,6 @@ import * as Flux from "@moonlight-mod/wp/common_flux"; import { MoonbaseSettingsStore } from "@moonlight-mod/wp/moonbase_stores"; -const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; const SearchBar: any = Object.values( spacepack.findByCode("Messages.SEARCH", "hideSearchIcon")[0].exports )[0]; @@ -90,14 +89,12 @@ export default function ExtensionsPage() { spellCheck: "false" }} /> -
}> - - + {filtered.map((ext) => ( ))} From a10649d4858b70fe1686da347f72265943bd1f9f Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Wed, 19 Jun 2024 20:32:11 +0200 Subject: [PATCH 5/8] settings: fix context menu actions --- packages/core-extensions/src/settings/index.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/core-extensions/src/settings/index.ts b/packages/core-extensions/src/settings/index.ts index 0ba72e8..a85d71a 100644 --- a/packages/core-extensions/src/settings/index.ts +++ b/packages/core-extensions/src/settings/index.ts @@ -16,7 +16,7 @@ export const patches: Patch[] = [ match: /children:\[(.)\.map\(.+?\),children:.\((.)\)/, replacement: (orig, sections, section) => `${orig.replace( - /Object\.values\(.\.UserSettingsSections\)/, + /Object\.values\(.\..+?\)/, (orig) => `[...require("settings_settings").Settings.sectionNames,...${orig}]` )}??${sections}.find(x=>x.section==${section})?._moonlight_submenu?.()` From 8efbd7f5fd2bc17afb451c63a074eaaeafc84019 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Wed, 19 Jun 2024 21:00:07 +0200 Subject: [PATCH 6/8] moonbase: move to CircleExclamationPointIcon --- .../src/moonbase/webpackModules/ui/extensions/card.tsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx index ae43c6b..f65cd67 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx @@ -1,4 +1,4 @@ -import { DangerIconSVG, ExtensionState } from "../../../types"; +import { ExtensionState } from "../../../types"; import { ExtensionLoadSource } from "@moonlight-mod/types"; import React from "@moonlight-mod/wp/common_react"; @@ -24,9 +24,7 @@ const UserProfileClasses = spacepack.findByCode( const DownloadIcon = CommonComponents.DownloadIcon; const TrashIcon = CommonComponents.TrashIcon; -const DangerIcon: any = Object.values( - spacepack.findByCode(DangerIconSVG)[0].exports -)[0]; +const CircleExclamationPointIcon = CommonComponents.CircleExclamationPointIcon; const PanelButton = spacepack.findByCode("Masks.PANEL_BUTTON")[0].exports.Z; @@ -130,7 +128,7 @@ export default function ExtensionCard({ uniqueId }: { uniqueId: number }) { {restartNeeded && ( ( - )} From 22f5e638b4bc317169b61d8317898652f480e1a1 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Wed, 19 Jun 2024 21:02:44 +0200 Subject: [PATCH 7/8] moonbase: destructure icons from common components --- .../src/moonbase/webpackModules/ui/config/index.tsx | 2 +- .../src/moonbase/webpackModules/ui/extensions/card.tsx | 5 ++--- .../src/moonbase/webpackModules/ui/extensions/filterBar.tsx | 5 ++--- 3 files changed, 5 insertions(+), 7 deletions(-) diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx index 621a7cf..b015603 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/config/index.tsx @@ -27,7 +27,7 @@ const Margins = spacepack.findByCode("marginCenterHorz:")[0].exports; const RemoveButtonClasses = spacepack.findByCode("removeButtonContainer")[0] .exports; -const CircleXIcon = CommonComponents.CircleXIcon; +const { CircleXIcon } = CommonComponents; function RemoveEntryButton({ onClick }: { onClick: () => void }) { return (
diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx index f65cd67..98dca92 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx @@ -22,9 +22,8 @@ const UserProfileClasses = spacepack.findByCode( "topSection" )[0].exports; -const DownloadIcon = CommonComponents.DownloadIcon; -const TrashIcon = CommonComponents.TrashIcon; -const CircleExclamationPointIcon = CommonComponents.CircleExclamationPointIcon; +const { DownloadIcon, TrashIcon, CircleExclamationPointIcon } = + CommonComponents; const PanelButton = spacepack.findByCode("Masks.PANEL_BUTTON")[0].exports.Z; diff --git a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx index 88445f0..c65ae0d 100644 --- a/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx +++ b/packages/core-extensions/src/moonbase/webpackModules/ui/extensions/filterBar.tsx @@ -41,9 +41,8 @@ const FilterBarClasses = spacepack.findByCode("tagsButtonWithCount:")[0] const TagItem = spacepack.findByCode(".FORUM_TAG_A11Y_FILTER_BY_TAG")[0].exports .Z; -const ChevronSmallDownIcon = CommonComponents.ChevronSmallDownIcon; -const ChevronSmallUpIcon = CommonComponents.ChevronSmallUpIcon; -const ArrowsUpDownIcon = CommonComponents.ArrowsUpDownIcon; +const { ChevronSmallDownIcon, ChevronSmallUpIcon, ArrowsUpDownIcon } = + CommonComponents; function toggleTag( selectedTags: Set, From 5871f1f452b284cf013248d9fb89ba5f3eed4eb0 Mon Sep 17 00:00:00 2001 From: redstonekasi Date: Wed, 19 Jun 2024 21:03:37 +0200 Subject: [PATCH 8/8] moonbase: remove danger icon svg --- packages/core-extensions/src/moonbase/types.ts | 3 --- 1 file changed, 3 deletions(-) diff --git a/packages/core-extensions/src/moonbase/types.ts b/packages/core-extensions/src/moonbase/types.ts index a30ff4e..55a0553 100644 --- a/packages/core-extensions/src/moonbase/types.ts +++ b/packages/core-extensions/src/moonbase/types.ts @@ -1,8 +1,5 @@ import { DetectedExtension, ExtensionManifest } from "types/src"; -export const DangerIconSVG = - "M12 23a11 11 0 1 0 0-22 11 11 0 0 0 0 22Zm1.44-15.94L13.06 14a1.06 1.06 0 0 1-2.12 0l-.38-6.94a1 1 0 0 1 1-1.06h.88a1 1 0 0 1 1 1.06Zm-.19 10.69a1.25 1.25 0 1 1-2.5 0 1.25 1.25 0 0 1 2.5 0Z"; - export type MoonbaseNatives = { fetchRepositories( repos: string[]