import 'package:flutter_riverpod/flutter_riverpod.dart'; import '../data/models/project.dart'; import 'api_client_provider.dart'; final projectsProvider = AsyncNotifierProvider>( ProjectsNotifier.new); class ProjectsNotifier extends AsyncNotifier> { @override Future> build() async { return ref .watch(projectsRepositoryProvider) .getAll(sort: 'updated_at', order: 'desc'); } Future refresh() async { final fresh = await ref.read(projectsRepositoryProvider) .getAll(sort: 'updated_at', order: 'desc'); state = AsyncData(fresh); } Future create({ required String title, String? description, String? goal, String? color, }) async { final project = await ref.read(projectsRepositoryProvider).create( title: title, description: description, goal: goal, color: color, ); state = AsyncData([...state.value ?? [], project]); return project; } Future updateProject(int id, Map fields) async { final updated = await ref.read(projectsRepositoryProvider).update(id, fields); state = AsyncData([ for (final p in state.value ?? []) if (p.id == id) updated else p, ]); return updated; } Future delete(int id) async { await ref.read(projectsRepositoryProvider).delete(id); state = AsyncData([ for (final p in state.value ?? []) if (p.id != id) p, ]); } }