feat(plugins/developer-settings): add "Test ErrorBoundary" option

This commit is contained in:
PalmDevs 2025-07-18 01:17:12 +07:00
parent 0bacc8a2f1
commit 2da5549cad
No known key found for this signature in database
GPG key ID: 6FAE8F8677ACA8BA
5 changed files with 41 additions and 1 deletions

View file

@ -11,9 +11,11 @@ export const Setting = {
RDTDisconnect: 'RDTDisconnect',
EvalJS: 'EvalJS',
AssetBrowser: 'AssetBrowser',
TestErrorBoundary: 'TestErrorBoundary',
} as const
export const RouteNames = {
[Setting.RevengeDeveloper]: 'Revenge Developer',
[Setting.AssetBrowser]: 'Asset Browser',
[Setting.TestErrorBoundary]: 'Test ErrorBoundary',
} as const

View file

@ -0,0 +1,20 @@
import TableRowAssetIcon from '@revenge-mod/components/TableRowAssetIcon'
import { RouteNames, Setting } from '../constants'
import type { SettingsItem } from '@revenge-mod/discord/modules/settings'
const TestErrorBoundarySetting: SettingsItem = {
parent: Setting.RevengeDeveloper,
type: 'route',
variant: 'danger',
IconComponent: () => (
<TableRowAssetIcon name="CircleXIcon" variant="danger" />
),
title: () => 'Test ErrorBoundary',
screen: {
route: RouteNames[Setting.TestErrorBoundary],
getComponent: () =>
require('../screens/TestErrorBoundarySettingScreen').default,
},
}
export default TestErrorBoundarySetting

View file

@ -34,7 +34,11 @@ export default function RevengeDeveloperSettingScreen() {
},
{
label: 'Tools',
settings: [Setting.EvalJS, Setting.AssetBrowser],
settings: [
Setting.EvalJS,
Setting.AssetBrowser,
Setting.TestErrorBoundary,
],
},
]}
/>

View file

@ -0,0 +1,12 @@
import { useEffect } from 'react'
export default function TestErrorBoundarySettingScreen() {
let x = 0
useEffect(() => {
x++
})
// @ts-expect-error: Intentional
return x < 2 ? <undefined /> : null
}

View file

@ -11,6 +11,7 @@ import RDTConnectSetting from './definitions/RDTConnectSetting'
import RDTDisconnectSetting from './definitions/RDTDisconnectSetting'
import RDTVersionSetting from './definitions/RDTVersionSetting'
import RevengeDeveloperSetting from './definitions/RevengeDeveloperSetting'
import TestErrorBoundarySetting from './definitions/TestErrorBoundarySetting'
export function register() {
api.cleanup(
@ -22,6 +23,7 @@ export function register() {
[Setting.RDTDisconnect]: RDTDisconnectSetting,
[Setting.EvalJS]: EvalJSSetting,
[Setting.AssetBrowser]: AssetBrowserSetting,
[Setting.TestErrorBoundary]: TestErrorBoundarySetting,
}),
addSettingsItemToSection('REVENGE', Setting.RevengeDeveloper),
)