39 lines
1.2 KiB
Dart
39 lines
1.2 KiB
Dart
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
|
|
|
import 'package:timetrack/features/projects/data/drift_projects_repository.dart';
|
|
import 'package:timetrack/features/projects/data/projects_repository.dart';
|
|
import 'package:timetrack/features/projects/domain/project.dart';
|
|
|
|
part 'projects_provider.g.dart';
|
|
|
|
@riverpod
|
|
Stream<List<Project>> activeProjects(ActiveProjectsRef ref) =>
|
|
ref.watch(projectsRepositoryProvider).watchActive();
|
|
|
|
@riverpod
|
|
Stream<List<Project>> allProjects(AllProjectsRef ref) =>
|
|
ref.watch(projectsRepositoryProvider).watchAll();
|
|
|
|
@riverpod
|
|
class ProjectsNotifier extends _$ProjectsNotifier {
|
|
@override
|
|
Future<void> build() async {}
|
|
|
|
ProjectsRepository get _repo => ref.read(projectsRepositoryProvider);
|
|
|
|
Future<void> create({
|
|
required String name,
|
|
required int colorValue,
|
|
String? description,
|
|
}) async {
|
|
await _repo.create(name: name, colorValue: colorValue, description: description);
|
|
}
|
|
|
|
Future<void> updateProject(Project project) => _repo.update(project);
|
|
|
|
Future<void> archive(int id) => _repo.archive(id);
|
|
|
|
Future<void> unarchive(int id) => _repo.unarchive(id);
|
|
|
|
Future<void> delete(int id) => _repo.delete(id);
|
|
}
|