improved tab & topic handling

This commit is contained in:
Fabian Freund
2024-08-28 16:00:39 +02:00
parent 95dd254484
commit 0a7e84236f
43 changed files with 2035 additions and 847 deletions
+12 -16
View File
@@ -1,19 +1,14 @@
import 'dart:ui';
import 'package:collection/collection.dart';
import 'package:lensai/features/topics/data/database/database.dart';
import 'package:lensai/features/topics/data/models/topic_data.dart';
import 'package:lensai/features/topics/data/providers.dart';
import 'package:lensai/features/topics/domain/repositories/topic.dart';
import 'package:lensai/features/topics/utils/color_palette.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'providers.g.dart';
@Riverpod()
Stream<List<TopicData>> topicList(TopicListRef ref) {
final repository = ref.watch(topicRepositoryProvider.notifier);
return repository.watchTopics();
}
@Riverpod(keepAlive: true)
class SelectedTopic extends _$SelectedTopic {
void setTopic(String id) {
@@ -40,21 +35,22 @@ class SelectedTopic extends _$SelectedTopic {
@Riverpod()
Stream<TopicData?> selectedTopicData(SelectedTopicDataRef ref) {
final repository = ref.watch(topicRepositoryProvider.notifier);
final selectedBangTrigger = ref.watch(selectedTopicProvider);
return repository.watchTopic(selectedBangTrigger);
}
final db = ref.watch(tabDatabaseProvider);
final selectedTopic = ref.watch(selectedTopicProvider);
@Riverpod()
Future<Set<Color>> distinctTopicColors(DistinctTopicColorsRef ref) {
final repository = ref.watch(topicRepositoryProvider.notifier);
return repository.getDistinctColors();
if (selectedTopic != null) {
return db.topicDao.getTopicData(selectedTopic).watchSingleOrNull();
}
return Stream.value(null);
}
@Riverpod()
Future<Color> unusedRandomTopicColor(UnusedRandomTopicColorRef ref) async {
final repository = ref.watch(topicRepositoryProvider.notifier);
final allColors = colorTypes.flattened.toList();
final usedColors = await ref.read(distinctTopicColorsProvider.future);
final usedColors = await repository.getDistinctColors();
Color randomColor;
do {