revenge-bundle-next/src/plugins/init/developer-settings/index.ts

55 lines
1.4 KiB
TypeScript
Raw Normal View History

2025-06-03 16:24:58 +07:00
import {
isSettingsModulesLoaded,
onSettingsModulesLoaded,
} from '@revenge-mod/discord/modules/settings'
import { InternalPluginFlags, registerPlugin } from '@revenge-mod/plugins/_'
2025-05-19 01:43:41 +07:00
import { PluginFlags } from '@revenge-mod/plugins/constants'
import type { PluginApi } from '@revenge-mod/plugins/types'
interface Storage {
devtools: {
address: string
autoConnect: boolean
}
}
const defaultStorage: Storage = {
devtools: {
address: 'localhost:8097',
autoConnect: false,
},
}
registerPlugin<Storage>(
{
id: 'revenge.settings.developer',
name: 'Developer Settings',
description: 'Developer settings menus for Revenge',
author: 'Revenge',
icon: 'WrenchIcon',
},
{
storage: {
load: true,
default: defaultStorage,
},
start(api_) {
api = api_
if (isSettingsModulesLoaded()) require('./register')
else onSettingsModulesLoaded(() => require('./register'))
Promise.all([import('./react-devtools'), api.storage.get()]).then(
([rdt, settings]) => {
if (settings.devtools.autoConnect) rdt.connectToDevTools()
},
)
},
},
PluginFlags.Enabled,
InternalPluginFlags.Internal,
)
// Expose to EvaluateJavaScriptSetting
export let api: PluginApi<Storage>