update
This commit is contained in:
@@ -9,10 +9,12 @@ import { z } from 'zod';
|
||||
import { Ionicons } from '@expo/vector-icons';
|
||||
import { SafeAreaView } from 'react-native-safe-area-context';
|
||||
import { usePresetStore } from '@store/presetStore';
|
||||
import { useAuthStore } from '@store/authStore';
|
||||
import { Input } from '@presentation/components/ui/Input';
|
||||
import { Button } from '@presentation/components/ui/Button';
|
||||
import { colors, typography, spacing, radius } from '@shared/theme';
|
||||
import type { SpoolPreset } from '@domain/SpoolPreset';
|
||||
import type { SpoolPreset, CreateSpoolPresetInput } from '@domain/SpoolPreset';
|
||||
import { createPresetUseCase } from '@infrastructure/container';
|
||||
|
||||
const schema = z.object({
|
||||
name: z.string().min(1, 'Nome obrigatório'),
|
||||
@@ -40,19 +42,22 @@ export default function NewPresetScreen(): React.ReactElement {
|
||||
async function onSubmit(data: FormData): Promise<void> {
|
||||
setIsLoading(true);
|
||||
try {
|
||||
// TODO: CreatePresetUseCase via DI container
|
||||
const preset: SpoolPreset = {
|
||||
id: `user-${Date.now()}`,
|
||||
const user = useAuthStore.getState().user;
|
||||
if (!user) {
|
||||
throw new Error('Usuário não autenticado');
|
||||
}
|
||||
|
||||
const input: CreateSpoolPresetInput = {
|
||||
name: data.name,
|
||||
spoolWeightG: Number(data.spoolWeightG),
|
||||
isSystem: false,
|
||||
userId: 'me',
|
||||
createdAt: new Date().toISOString(),
|
||||
};
|
||||
|
||||
const preset = await createPresetUseCase.execute(user.id, input);
|
||||
addPreset(preset);
|
||||
Alert.alert('Sucesso', 'Preset criado com sucesso');
|
||||
router.back();
|
||||
} catch {
|
||||
Alert.alert('Erro', 'Não foi possível salvar o preset.');
|
||||
} catch (error) {
|
||||
Alert.alert('Erro', `Não foi possível salvar o preset: ${(error as Error).message}`);
|
||||
} finally {
|
||||
setIsLoading(false);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user