mirror of
https://github.com/lucasrcsantana/story-generator.git
synced 2025-12-17 22:07:52 +00:00
Some checks failed
Docker Build and Push / build (push) Has been cancelled
- Integra completamente com a tabela languages - Adiciona suporte para ícones de bandeira e instruções - Remove LANGUAGE_OPTIONS hard coded - Usa DEFAULT_LANGUAGE do type - Melhora validações e UX do seletor de idiomas - Atualiza CHANGELOG.md para versão 1.4.0
44 lines
1.2 KiB
TypeScript
44 lines
1.2 KiB
TypeScript
import { useQuery } from '@tanstack/react-query';
|
|
import { supabase } from '../lib/supabase';
|
|
import type { Language, SupportedLanguageCode, LanguageOption } from '../types/language';
|
|
|
|
interface UseLanguagesReturn {
|
|
languages: Language[];
|
|
isLoading: boolean;
|
|
error: Error | null;
|
|
getLanguageLabel: (code: SupportedLanguageCode) => string;
|
|
supportedLanguages: LanguageOption[];
|
|
}
|
|
|
|
export function useLanguages(): UseLanguagesReturn {
|
|
const { data: languages = [], isLoading, error } = useQuery<Language[]>({
|
|
queryKey: ['languages'],
|
|
queryFn: async () => {
|
|
const { data, error } = await supabase
|
|
.from('languages')
|
|
.select('*')
|
|
.order('name');
|
|
|
|
if (error) throw error;
|
|
return data;
|
|
}
|
|
});
|
|
|
|
const supportedLanguages: LanguageOption[] = languages.map(lang => ({
|
|
value: lang.code as SupportedLanguageCode,
|
|
label: lang.name
|
|
}));
|
|
|
|
const getLanguageLabel = (code: SupportedLanguageCode): string => {
|
|
const language = languages.find(lang => lang.code === code);
|
|
return language?.name || code;
|
|
};
|
|
|
|
return {
|
|
languages,
|
|
isLoading,
|
|
error: error as Error | null,
|
|
getLanguageLabel,
|
|
supportedLanguages
|
|
};
|
|
}
|