From ab8e2a577243f6de3bdb1d91c5780afc5e4fac94 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Mon, 14 Jul 2025 23:46:17 +0700 Subject: [PATCH] fix(lib/discord/modules/settings): fix edge case on renavigation in `refreshSettingsOverviewScreen` If a route was replaced before renavigation, renavigation would fail. This commit fixes that issue. --- lib/discord/src/modules/settings/index.ts | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/lib/discord/src/modules/settings/index.ts b/lib/discord/src/modules/settings/index.ts index 1130962..ee32598 100644 --- a/lib/discord/src/modules/settings/index.ts +++ b/lib/discord/src/modules/settings/index.ts @@ -4,7 +4,7 @@ import { findInTree } from '@revenge-mod/utils/tree' import { Constants } from '../../common' import { RootNavigationRef } from '../main_tabs_v2' import { sData, sSubscriptions } from './_internal' -import type { NavigationState } from '@react-navigation/core' +import type { NavigationState, PartialState } from '@react-navigation/core' import type { DiscordModules } from '../../types' export type SettingsItem = DiscordModules.Modules.Settings.SettingsItem @@ -143,9 +143,12 @@ export async function refreshSettingsOverviewScreen(renavigate?: boolean) { navigation.navigate(mainState.routes[mainState.index].name) - // Dispatch on next paint + // Wait for navigation to complete and reset to the settings state requestAnimationFrame(() => { - navigation.dispatch(CommonActions.reset(settingsState)) + navigation.reset({ + index: settingsState.routes.length - 1, + routes: settingsState.routes, + } as PartialState) }) } else { const {