62 lines
1.6 KiB
TypeScript
62 lines
1.6 KiB
TypeScript
import {
|
|
onSettingsModulesLoaded,
|
|
refreshSettingsOverviewScreen,
|
|
} 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,
|
|
},
|
|
}
|
|
|
|
// TODO(PalmDevs): only register in development builds once updates can be made automatic
|
|
registerPlugin<{ storage: Storage }>(
|
|
{
|
|
id: 'revenge.developer-kit',
|
|
name: 'Developer Kit',
|
|
description: 'Tools assisting Revenge developers.',
|
|
author: 'Revenge',
|
|
icon: 'WrenchIcon',
|
|
},
|
|
{
|
|
storage: {
|
|
load: true,
|
|
default: defaultStorage,
|
|
},
|
|
start(api_) {
|
|
api = api_
|
|
|
|
onSettingsModulesLoaded(() => {
|
|
require('./utils').register()
|
|
})
|
|
|
|
if (api_.plugin.flags & PluginFlags.EnabledLate)
|
|
refreshSettingsOverviewScreen()
|
|
|
|
Promise.all([import('./react-devtools'), api.storage.get()]).then(
|
|
([rdt, settings]) => {
|
|
if (settings.devtools.autoConnect) rdt.connect()
|
|
},
|
|
)
|
|
},
|
|
stop() {
|
|
refreshSettingsOverviewScreen()
|
|
},
|
|
},
|
|
PluginFlags.Enabled,
|
|
InternalPluginFlags.Internal,
|
|
)
|
|
|
|
// Expose to EvalJSSetting
|
|
export let api: PluginApi<{ storage: Storage }>
|