topics intermediate

This commit is contained in:
Fabian Freund
2024-08-21 13:36:58 +02:00
parent e75052aa99
commit 7fedbe260c
35 changed files with 2511 additions and 198 deletions
@@ -0,0 +1,15 @@
import 'package:lensai/features/topics/data/database/database.dart';
import 'package:lensai/features/topics/data/providers.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'tab.g.dart';
@Riverpod(keepAlive: true)
class TabRepository extends _$TabRepository {
late TabDatabase _db;
@override
void build() {
_db = ref.watch(tabDatabaseProvider);
}
}
@@ -0,0 +1,25 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'tab.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$tabRepositoryHash() => r'3f564f553e9586df34e927b20fe4bc860e0814e9';
/// See also [TabRepository].
@ProviderFor(TabRepository)
final tabRepositoryProvider = NotifierProvider<TabRepository, void>.internal(
TabRepository.new,
name: r'tabRepositoryProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$tabRepositoryHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$TabRepository = Notifier<void>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member
@@ -0,0 +1,52 @@
import 'dart:ui';
import 'package:lensai/features/topics/data/database/database.dart';
import 'package:lensai/features/topics/data/providers.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'topic.g.dart';
@Riverpod(keepAlive: true)
class TopicRepository extends _$TopicRepository {
late TabDatabase _db;
@override
void build() {
_db = ref.watch(tabDatabaseProvider);
}
Future<void> addTopic({required String? name, required Color color}) {
return _db.topicDao.addTopic(name: name, color: color);
}
Future<void> replaceTopic({
required String id,
required String? name,
required Color color,
}) {
return _db.topicDao.replaceTopic(id, name: name, color: color);
}
Future<void> deleteTopic(String id) {
return _db.topicDao.deleteTopic(id);
}
Stream<List<TopicData>> watchTopics() {
return _db.topics().watch();
}
Stream<TopicData?> watchTopic(String? id) {
if (id != null) {
return _db.topicDao.getTopicData(id).watchSingleOrNull();
} else {
return Stream.value(null);
}
}
Future<Set<Color>> getDistinctColors() {
return _db.topicDao
.getDistinctColors()
.get()
.then((colors) => colors.toSet());
}
}
@@ -0,0 +1,26 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'topic.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$topicRepositoryHash() => r'f0e8d3170d3706a79decfbe4700f20fcdebfae2c';
/// See also [TopicRepository].
@ProviderFor(TopicRepository)
final topicRepositoryProvider =
NotifierProvider<TopicRepository, void>.internal(
TopicRepository.new,
name: r'topicRepositoryProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$topicRepositoryHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$TopicRepository = Notifier<void>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member