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, + } +}