From f4a8c8d30f4d89e80ba417a4a7b2930aad826c97 Mon Sep 17 00:00:00 2001 From: PalmDevs Date: Thu, 13 Aug 2026 01:55:57 +0700 Subject: [PATCH] Force update the screen when adding default repo --- .../RevengePluginsAdvancedSettingScreen.tsx | 21 ++++++++++++------- 1 file changed, 14 insertions(+), 7 deletions(-) diff --git a/src/plugins/start/settings.plugins/screens/RevengePluginsAdvancedSettingScreen.tsx b/src/plugins/start/settings.plugins/screens/RevengePluginsAdvancedSettingScreen.tsx index 7e1415d..14bf81a 100644 --- a/src/plugins/start/settings.plugins/screens/RevengePluginsAdvancedSettingScreen.tsx +++ b/src/plugins/start/settings.plugins/screens/RevengePluginsAdvancedSettingScreen.tsx @@ -18,12 +18,12 @@ import { updateAllPlugins, } from '@revenge-mod/plugins/_/repositories' import { lookupGeneratedIconComponent } from '@revenge-mod/utils/discord' -import { useCallback, useEffect, useState } from 'react' +import { useCallback, useEffect, useReducer, useState } from 'react' import { ScrollView, View } from 'react-native' import { api } from '..' import { addDefaultRepoIfNeeded, toConfig } from '../repos' -import { formatBytes, messageOf, showErrorToast } from '../utils/repos' import { showRemoveRepoConfirmation } from '../utils/alerts' +import { formatBytes, messageOf, showErrorToast } from '../utils/repos' import type { DownloadProgressEvent, Repo, @@ -103,7 +103,8 @@ function UserRepoRow({ label: 'Delete', IconComponent: TrashIconComponent, variant: 'destructive' as const, - action: () => showRemoveRepoConfirmation(repo, () => onRemove(repo)), + action: () => + showRemoveRepoConfirmation(repo, () => onRemove(repo)), }, ], ] @@ -147,6 +148,7 @@ export default function RevengePluginsAdvancedSettingScreen() { Record >({}) const [progress, setProgress] = useState(null) + const [n, forceUpdate] = useReducer(x => ~x, 0) useEffect(() => { const onRepoState = (event: RepoStateEvent) => { @@ -170,7 +172,8 @@ export default function RevengePluginsAdvancedSettingScreen() { listRepos().then(setReposState, e => showErrorToast(messageOf(e))) }, []) - useEffect(refresh, [refresh]) + // biome-ignore lint/correctness/useExhaustiveDependencies: forceUpdate so we can refresh the screen + useEffect(refresh, [refresh, n]) const commit = useCallback( async (config: RepoConfigEntry[]) => { @@ -214,7 +217,6 @@ export default function RevengePluginsAdvancedSettingScreen() { const removeRepo = useCallback( async (repo: Repo) => { - await commit(toConfig(userRepos.filter(r => r.url !== repo.url))) // Plugins installed from the removed repository turn Sideloaded @@ -378,11 +380,16 @@ export default function RevengePluginsAdvancedSettingScreen() { try { const restored = await addDefaultRepoIfNeeded(true) - if (!restored) + if (!restored) { ToastActionCreators.open({ key: 'revenge-default-repo-nothing', - content: 'No default repository to restore', + content: 'Nothing to restore', }) + + return + } + + forceUpdate() } catch (e) { showErrorToast(messageOf(e)) }