revenge-bundle-next/src/plugins/init/staff-settings/index.tsx

64 lines
2.1 KiB
TypeScript

import { getStore, Stores } from '@revenge-mod/discord/common/flux'
import { refreshSettingsOverviewScreen } from '@revenge-mod/discord/modules/settings'
import { byProps } from '@revenge-mod/modules/finders/filters'
import { getModule } from '@revenge-mod/modules/finders/get'
import { instead } from '@revenge-mod/patcher'
import { InternalPluginFlags, registerPlugin } from '@revenge-mod/plugins/_'
import { PluginFlags } from '@revenge-mod/plugins/constants'
registerPlugin(
{
id: 'revenge.staff-settings',
name: 'Staff Settings',
description: "Allows accessing Discord's Staff Settings.",
author: 'Revenge',
icon: 'StaffBadgeIcon',
},
{
start({ cleanup, logger }) {
function reset() {
getStore<{ initialize(): void }>(
'DeveloperExperimentStore',
store => {
logger.log(
'Reinitializing DeveloperExperimentStore to apply changes...',
)
const unpatch = instead(
Object,
'defineProperties',
args => args[0],
)
store.initialize()
unpatch()
setTimeout(() => {
refreshSettingsOverviewScreen(true)
})
},
)
}
cleanup(
getModule(byProps('isStaffEnv'), UserStoreUtils => {
logger.log('Patching UserStoreUtils...')
cleanup(
instead(
UserStoreUtils,
'isStaffEnv',
([user]) =>
user === Stores.UserStore.getCurrentUser(),
),
reset,
)
reset()
}),
)
},
},
PluginFlags.Enabled,
InternalPluginFlags.Internal,
)