diff --git a/src/platform/workflow/templates/repositories/workflowTemplatesStore.ts b/src/platform/workflow/templates/repositories/workflowTemplatesStore.ts index e78fd2278a..c3219f8d03 100644 --- a/src/platform/workflow/templates/repositories/workflowTemplatesStore.ts +++ b/src/platform/workflow/templates/repositories/workflowTemplatesStore.ts @@ -1,5 +1,5 @@ import { defineStore } from 'pinia' -import { computed, ref, shallowRef } from 'vue' +import { computed, ref, shallowRef, watch } from 'vue' import { i18n, st } from '@/i18n' import { isCloud } from '@/platform/distribution/types' @@ -472,31 +472,32 @@ export const useWorkflowTemplatesStore = defineStore( return items }) + async function fetchCoreTemplates() { + const locale = i18n.global.locale.value + const [coreResult, englishResult, logoIndexResult] = await Promise.all([ + api.getCoreWorkflowTemplates(locale), + isCloud && locale !== 'en' + ? api.getCoreWorkflowTemplates('en') + : Promise.resolve([]), + fetchLogoIndex() + ]) + + coreTemplates.value = coreResult + englishTemplates.value = englishResult + logoIndex.value = logoIndexResult + + const coreNames = coreTemplates.value.flatMap((category) => + category.templates.map((template) => template.name) + ) + const customNames = Object.values(customTemplates.value).flat() + knownTemplateNames.value = new Set([...coreNames, ...customNames]) + } + async function loadWorkflowTemplates() { try { if (!isLoaded.value) { customTemplates.value = await api.getWorkflowTemplates() - const locale = i18n.global.locale.value - - const [coreResult, englishResult, logoIndexResult] = - await Promise.all([ - api.getCoreWorkflowTemplates(locale), - isCloud && locale !== 'en' - ? api.getCoreWorkflowTemplates('en') - : Promise.resolve([]), - fetchLogoIndex() - ]) - - coreTemplates.value = coreResult - englishTemplates.value = englishResult - logoIndex.value = logoIndexResult - - const coreNames = coreTemplates.value.flatMap((category) => - category.templates.map((template) => template.name) - ) - const customNames = Object.values(customTemplates.value).flat() - knownTemplateNames.value = new Set([...coreNames, ...customNames]) - + await fetchCoreTemplates() isLoaded.value = true } } catch (error) { @@ -504,6 +505,18 @@ export const useWorkflowTemplatesStore = defineStore( } } + watch( + () => i18n.global.locale.value, + async () => { + if (!isLoaded.value) return + try { + await fetchCoreTemplates() + } catch (error) { + console.error('Error reloading templates for new locale:', error) + } + } + ) + async function fetchLogoIndex(): Promise { try { const response = await fetch(api.fileURL('/templates/index_logo.json'))