From c03b87723e68d1a03d4bd24b10c1092406386973 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Wed, 10 Sep 2025 00:52:13 +0700 Subject: [PATCH] fix(plugins/settings): debounce showing "Reload required" dialog --- .../definitions/RevengePluginsSetting.tsx | 28 ++++++++++--------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/src/plugins/start/settings/definitions/RevengePluginsSetting.tsx b/src/plugins/start/settings/definitions/RevengePluginsSetting.tsx index bb31754..0cc9c73 100644 --- a/src/plugins/start/settings/definitions/RevengePluginsSetting.tsx +++ b/src/plugins/start/settings/definitions/RevengePluginsSetting.tsx @@ -4,6 +4,7 @@ import { Design } from '@revenge-mod/discord/design' import { BundleUpdaterManager } from '@revenge-mod/discord/native' import { isPluginEnabled, pEmitter, pList } from '@revenge-mod/plugins/_' import { PluginFlags } from '@revenge-mod/plugins/constants' +import { debounce } from '@revenge-mod/utils/callback' import { useReRender } from '@revenge-mod/utils/react' import { useEffect } from 'react' import { RouteNames, Setting } from '../constants' @@ -53,20 +54,21 @@ function useEnabledPluginCount() { const { AlertActionButton, AlertModal, Text } = Design -pEmitter.on('flagUpdate', showReloadRequiredAlertIfNeeded) +pEmitter.on( + 'flagUpdate', + debounce(function showReloadRequiredAlertIfNeeded(plugin: AnyPlugin) { + if (plugin.flags & PluginFlags.ReloadRequired) { + const plugins = [...pList.values()].filter( + plugin => plugin.flags & PluginFlags.ReloadRequired, + ) -function showReloadRequiredAlertIfNeeded(plugin: AnyPlugin) { - if (plugin.flags & PluginFlags.ReloadRequired) { - const plugins = [...pList.values()].filter( - plugin => plugin.flags & PluginFlags.ReloadRequired, - ) - - AlertActionCreators.openAlert( - 'plugin-reload-required', - , - ) - } -} + AlertActionCreators.openAlert( + 'plugin-reload-required', + , + ) + } + }, 500), +) function PluginReloadRequiredAlert({ plugins }: { plugins: AnyPlugin[] }) { return (