fix: state update race conditons (#3812)

This commit is contained in:
IMB11
2025-06-19 16:18:00 +01:00
committed by GitHub
parent a8f17f40f5
commit 125207880d

View File

@@ -16,7 +16,7 @@ import {
} from "@modrinth/assets"; } from "@modrinth/assets";
import { ButtonStyled, commonMessages, OverflowMenu, ProgressBar } from "@modrinth/ui"; import { ButtonStyled, commonMessages, OverflowMenu, ProgressBar } from "@modrinth/ui";
import { defineMessages, useVIntl } from "@vintl/vintl"; import { defineMessages, useVIntl } from "@vintl/vintl";
import { ref } from "vue"; import { ref, computed } from "vue";
import type { Backup } from "@modrinth/utils"; import type { Backup } from "@modrinth/utils";
const flags = useFeatureFlags(); const flags = useFeatureFlags();
@@ -52,9 +52,10 @@ const failedToCreate = computed(() => props.backup.interrupted);
const preparedDownloadStates = ["ready", "done"]; const preparedDownloadStates = ["ready", "done"];
const inactiveStates = ["failed", "cancelled"]; const inactiveStates = ["failed", "cancelled"];
const hasPreparedDownload = computed(() => const hasPreparedDownload = computed(() => {
preparedDownloadStates.includes(props.backup.task?.file?.state ?? ""), const fileState = props.backup.task?.file?.state ?? "";
); return preparedDownloadStates.includes(fileState);
});
const creating = computed(() => { const creating = computed(() => {
const task = props.backup.task?.create; const task = props.backup.task?.create;
@@ -81,6 +82,10 @@ const restoring = computed(() => {
const initiatedPrepare = ref(false); const initiatedPrepare = ref(false);
const preparingFile = computed(() => { const preparingFile = computed(() => {
if (hasPreparedDownload.value) {
return false;
}
const task = props.backup.task?.file; const task = props.backup.task?.file;
return ( return (
(!task && initiatedPrepare.value) || (!task && initiatedPrepare.value) ||