Force update the screen when adding default repo
This commit is contained in:
parent
9959ff7513
commit
f4a8c8d30f
1 changed files with 14 additions and 7 deletions
|
|
@ -18,12 +18,12 @@ import {
|
||||||
updateAllPlugins,
|
updateAllPlugins,
|
||||||
} from '@revenge-mod/plugins/_/repositories'
|
} from '@revenge-mod/plugins/_/repositories'
|
||||||
import { lookupGeneratedIconComponent } from '@revenge-mod/utils/discord'
|
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 { ScrollView, View } from 'react-native'
|
||||||
import { api } from '..'
|
import { api } from '..'
|
||||||
import { addDefaultRepoIfNeeded, toConfig } from '../repos'
|
import { addDefaultRepoIfNeeded, toConfig } from '../repos'
|
||||||
import { formatBytes, messageOf, showErrorToast } from '../utils/repos'
|
|
||||||
import { showRemoveRepoConfirmation } from '../utils/alerts'
|
import { showRemoveRepoConfirmation } from '../utils/alerts'
|
||||||
|
import { formatBytes, messageOf, showErrorToast } from '../utils/repos'
|
||||||
import type {
|
import type {
|
||||||
DownloadProgressEvent,
|
DownloadProgressEvent,
|
||||||
Repo,
|
Repo,
|
||||||
|
|
@ -103,7 +103,8 @@ function UserRepoRow({
|
||||||
label: 'Delete',
|
label: 'Delete',
|
||||||
IconComponent: TrashIconComponent,
|
IconComponent: TrashIconComponent,
|
||||||
variant: 'destructive' as const,
|
variant: 'destructive' as const,
|
||||||
action: () => showRemoveRepoConfirmation(repo, () => onRemove(repo)),
|
action: () =>
|
||||||
|
showRemoveRepoConfirmation(repo, () => onRemove(repo)),
|
||||||
},
|
},
|
||||||
],
|
],
|
||||||
]
|
]
|
||||||
|
|
@ -147,6 +148,7 @@ export default function RevengePluginsAdvancedSettingScreen() {
|
||||||
Record<string, RepoStateEvent['state']>
|
Record<string, RepoStateEvent['state']>
|
||||||
>({})
|
>({})
|
||||||
const [progress, setProgress] = useState<DownloadProgressEvent | null>(null)
|
const [progress, setProgress] = useState<DownloadProgressEvent | null>(null)
|
||||||
|
const [n, forceUpdate] = useReducer(x => ~x, 0)
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
const onRepoState = (event: RepoStateEvent) => {
|
const onRepoState = (event: RepoStateEvent) => {
|
||||||
|
|
@ -170,7 +172,8 @@ export default function RevengePluginsAdvancedSettingScreen() {
|
||||||
listRepos().then(setReposState, e => showErrorToast(messageOf(e)))
|
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(
|
const commit = useCallback(
|
||||||
async (config: RepoConfigEntry[]) => {
|
async (config: RepoConfigEntry[]) => {
|
||||||
|
|
@ -214,7 +217,6 @@ export default function RevengePluginsAdvancedSettingScreen() {
|
||||||
|
|
||||||
const removeRepo = useCallback(
|
const removeRepo = useCallback(
|
||||||
async (repo: Repo) => {
|
async (repo: Repo) => {
|
||||||
|
|
||||||
await commit(toConfig(userRepos.filter(r => r.url !== repo.url)))
|
await commit(toConfig(userRepos.filter(r => r.url !== repo.url)))
|
||||||
|
|
||||||
// Plugins installed from the removed repository turn Sideloaded
|
// Plugins installed from the removed repository turn Sideloaded
|
||||||
|
|
@ -378,11 +380,16 @@ export default function RevengePluginsAdvancedSettingScreen() {
|
||||||
try {
|
try {
|
||||||
const restored =
|
const restored =
|
||||||
await addDefaultRepoIfNeeded(true)
|
await addDefaultRepoIfNeeded(true)
|
||||||
if (!restored)
|
if (!restored) {
|
||||||
ToastActionCreators.open({
|
ToastActionCreators.open({
|
||||||
key: 'revenge-default-repo-nothing',
|
key: 'revenge-default-repo-nothing',
|
||||||
content: 'No default repository to restore',
|
content: 'Nothing to restore',
|
||||||
})
|
})
|
||||||
|
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
forceUpdate()
|
||||||
} catch (e) {
|
} catch (e) {
|
||||||
showErrorToast(messageOf(e))
|
showErrorToast(messageOf(e))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Reference in a new issue