From e5d0c690b74695786d0b787359894c652090e29b Mon Sep 17 00:00:00 2001 From: Matthieu Date: Mon, 11 May 2026 14:40:21 +0200 Subject: [PATCH] feat(custom-fields) : ajoute composable useCustomFieldNameSuggestions Cache module-level partage entre toutes les instances. Lazy load au premier appel a load(). invalidate() permet de forcer un refresh apres creation/modification d'un champ perso. Co-Authored-By: Claude Opus 4.7 (1M context) --- .../useCustomFieldNameSuggestions.ts | 41 +++++++++++++++++++ 1 file changed, 41 insertions(+) create mode 100644 frontend/app/composables/useCustomFieldNameSuggestions.ts diff --git a/frontend/app/composables/useCustomFieldNameSuggestions.ts b/frontend/app/composables/useCustomFieldNameSuggestions.ts new file mode 100644 index 0000000..6112776 --- /dev/null +++ b/frontend/app/composables/useCustomFieldNameSuggestions.ts @@ -0,0 +1,41 @@ +import { ref } from 'vue' + +const cache = ref(null) +const loading = ref(false) + +export function useCustomFieldNameSuggestions() { + const api = useApi() + + async function load(force = false): Promise { + if (cache.value && !force) return cache.value + if (loading.value) return cache.value ?? [] + loading.value = true + try { + const response = await api.get('/api/custom-fields/names') + if (response.success && Array.isArray(response.data)) { + cache.value = response.data + } + else { + cache.value = cache.value ?? [] + if (response.error) { + console.error('[useCustomFieldNameSuggestions] load failed:', response.error) + } + } + return cache.value + } + finally { + loading.value = false + } + } + + function invalidate(): void { + cache.value = null + } + + return { + suggestions: cache, + loading, + load, + invalidate, + } +}