Warn on enabling Danger Zone extensions
@@ -1,5 +1,5 @@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";@@ -12,7 +12,7 @@ import IntegrationCard from "@moonlight-mod/wp/discord/modules/guild_settings/IntegrationCard.css";import ExtensionInfo from "./info";import Settings from "./settings";-import { doBuiltinExtensionPopup, doMissingExtensionPopup } from "./popup";+import { doGenericExtensionPopup, doMissingExtensionPopup } from "./popup";export enum ExtensionPage {Info,@@ -132,7 +132,12 @@ const deps = await MoonbaseSettingsStore.getDependencies(uniqueId);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);}}>@@ -185,7 +190,19 @@ 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();}
@@ -155,11 +155,15 @@ };});}-function BuiltinExtensionPopup({+function GenericExtensionPopup({+ title,+ content,transitionState,uniqueId,cb}: {+ title: string;+ content: string;transitionState: number | null;uniqueId: number;cb: () => void;@@ -168,31 +172,36 @@ const { Text } = Components;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}+ />+ );};});}