this repo has no description

Warn on enabling Danger Zone extensions

Changed files
+39 -13
packages
core-extensions
src
moonbase
webpackModules
ui
extensions
+21 -4
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/card.tsx
···
import { ExtensionState } from "../../../types";
-
import { constants, ExtensionLoadSource } from "@moonlight-mod/types";
+
import { constants, ExtensionLoadSource, ExtensionTag } from "@moonlight-mod/types";
import { ExtensionCompat } from "@moonlight-mod/core/extension/loader";
import spacepack from "@moonlight-mod/wp/spacepack_spacepack";
···
import ExtensionInfo from "./info";
import Settings from "./settings";
-
import { doBuiltinExtensionPopup, doMissingExtensionPopup } from "./popup";
+
import { doGenericExtensionPopup, doMissingExtensionPopup } from "./popup";
export enum ExtensionPage {
Info,
···
if (deps != null) {
await doMissingExtensionPopup(deps);
}
-
MoonbaseSettingsStore.setExtensionEnabled(uniqueId, true);
+
+
// Don't auto enable dangerous extensions
+
if (!ext.manifest?.meta?.tags?.includes(ExtensionTag.DangerZone)) {
+
MoonbaseSettingsStore.setExtensionEnabled(uniqueId, true);
+
}
+
setRestartNeeded(true);
}}
>
···
};
if (enabled && constants.builtinExtensions.includes(ext.id)) {
-
doBuiltinExtensionPopup(uniqueId, toggle);
+
doGenericExtensionPopup(
+
"Built in extension",
+
"This extension is enabled by default. Disabling it might have consequences. Are you sure you want to disable it?",
+
uniqueId,
+
toggle
+
);
+
} else if (!enabled && ext.manifest?.meta?.tags?.includes(ExtensionTag.DangerZone)) {
+
doGenericExtensionPopup(
+
"Dangerous extension",
+
"This extension is marked as dangerous. Enabling it might have consequences. Are you sure you want to enable it?",
+
uniqueId,
+
toggle
+
);
} else {
toggle();
}
+18 -9
packages/core-extensions/src/moonbase/webpackModules/ui/extensions/popup.tsx
···
});
}
-
function BuiltinExtensionPopup({
+
function GenericExtensionPopup({
+
title,
+
content,
transitionState,
uniqueId,
cb
}: {
+
title: string;
+
content: string;
transitionState: number | null;
uniqueId: number;
cb: () => void;
···
return (
<Popup
+
title={title}
body={
<Flex>
-
<Text variant="text-md/normal">
-
This extension is enabled by default. Disabling it might have consequences. Are you sure you want to disable
-
it?
-
</Text>
+
<Text variant="text-md/normal">{content}</Text>
</Flex>
}
+
confirmText="Yes"
cancelText="No"
-
confirmText="Yes"
onCancel={close}
onConfirm={() => {
close();
cb();
}}
-
title="Built in extension"
transitionState={transitionState}
/>
);
}
-
export async function doBuiltinExtensionPopup(uniqueId: number, cb: () => void) {
+
export async function doGenericExtensionPopup(title: string, content: string, uniqueId: number, cb: () => void) {
await openModalLazy(async () => {
return ({ transitionState }: { transitionState: number | null }) => {
-
return <BuiltinExtensionPopup transitionState={transitionState} uniqueId={uniqueId} cb={cb} />;
+
return (
+
<GenericExtensionPopup
+
title={title}
+
content={content}
+
transitionState={transitionState}
+
uniqueId={uniqueId}
+
cb={cb}
+
/>
+
);
};
});
}