revenge-bundle-next/src/plugins/start/developer-kit/index.ts

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 }>