diff --git a/src/platform/settings/settingStore.ts b/src/platform/settings/settingStore.ts index ed46c8b00..253510729 100644 --- a/src/platform/settings/settingStore.ts +++ b/src/platform/settings/settingStore.ts @@ -1,6 +1,6 @@ import { retry } from 'es-toolkit' import _ from 'es-toolkit/compat' -import { useAsyncState } from '@vueuse/core' +import { until, useAsyncState } from '@vueuse/core' import { defineStore } from 'pinia' import { compare, valid } from 'semver' import { ref } from 'vue' @@ -71,10 +71,15 @@ export const useSettingStore = defineStore('setting', () => { { immediate: false } ) - async function load() { - if (!isReady.value && !isLoading.value) { - return loadSettingValues() + async function load(): Promise { + if (isReady.value) return + + if (isLoading.value) { + await until(isLoading).toBe(false) + return } + + await loadSettingValues() } /** diff --git a/src/platform/workflow/management/stores/workflowStore.ts b/src/platform/workflow/management/stores/workflowStore.ts index ceaaedcaa..27a804d2e 100644 --- a/src/platform/workflow/management/stores/workflowStore.ts +++ b/src/platform/workflow/management/stores/workflowStore.ts @@ -1,5 +1,5 @@ import _ from 'es-toolkit/compat' -import { useAsyncState } from '@vueuse/core' +import { until, useAsyncState } from '@vueuse/core' import { defineStore } from 'pinia' import { computed, markRaw, ref, shallowRef, watch } from 'vue' import type { Raw } from 'vue' @@ -558,10 +558,15 @@ export const useWorkflowStore = defineStore('workflow', () => { return executeSyncWorkflows(0, dir) } - async function loadWorkflows() { - if (!isSyncReady.value && !isSyncLoading.value) { - return syncWorkflows() + async function loadWorkflows(): Promise { + if (isSyncReady.value) return + + if (isSyncLoading.value) { + await until(isSyncLoading).toBe(false) + return } + + await syncWorkflows() } const bookmarkStore = useWorkflowBookmarkStore()