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

55 lines
1.5 KiB
TypeScript

import {
isSettingsModulesLoaded,
onSettingsModulesLoaded,
} from '@revenge-mod/discord/modules/settings'
import { InternalPluginFlags, registerPlugin } from '@revenge-mod/plugins/_'
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').register()
else onSettingsModulesLoaded(() => require('./register').register())
api.storage.get().then(settings => {
if (settings.devtools.autoConnect)
(
require('./react-devtools') as typeof import('./react-devtools')
).connectToDevTools()
})
},
},
PluginFlags.Enabled,
InternalPluginFlags.Internal,
)
// Expose to EvaluateJavaScriptSetting
export let api: PluginApi<Storage>