Skip to content

Commit

Permalink
feat: task provider WIP
Browse files Browse the repository at this point in the history
  • Loading branch information
matthiasn committed May 3, 2024
1 parent 0b5a916 commit 6e1a10f
Show file tree
Hide file tree
Showing 5 changed files with 551 additions and 5 deletions.
3 changes: 2 additions & 1 deletion lib/blocs/journal/journal_page_cubit.dart
Original file line number Diff line number Diff line change
Expand Up @@ -95,8 +95,9 @@ class JournalPageCubit extends Cubit<JournalPageState> {
leading: false,
trailing: true,
)
.where(makeDuplicateFilter())
//.where(makeDuplicateFilter())
.listen((_) {
debugPrint('Update _isVisible $_isVisible');
if (_isVisible) {
refreshQuery();
}
Expand Down
3 changes: 3 additions & 0 deletions lib/database/database.dart
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ import 'package:lotti/sync/vector_clock.dart';
import 'package:lotti/utils/file_utils.dart';
import 'package:lotti/widgets/journal/entry_tools.dart';

import '../blocs/journal/journal_page_cubit.dart';

part 'database.g.dart';

const journalDbFileName = 'db.sqlite';
Expand Down Expand Up @@ -191,6 +193,7 @@ class JournalDb extends _$JournalDb {
Stream<JournalEntity?> watchEntityById(String id) {
final res = (select(journal)..where((t) => t.id.equals(id)))
.watch()
.where(makeDuplicateFilter())
.map(entityStreamMapper)
.map((entities) => entities.isNotEmpty ? entities.first : null);
return res;
Expand Down
58 changes: 58 additions & 0 deletions lib/features/tasks/state/task_controller.dart
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
import 'dart:async';

import 'package:flutter/foundation.dart';
import 'package:lotti/blocs/journal/journal_page_cubit.dart';
import 'package:lotti/classes/journal_entities.dart';
import 'package:lotti/database/database.dart';
import 'package:lotti/get_it.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';

part 'task_controller.g.dart';

@riverpod
class TaskController extends _$TaskController {
TaskController() {}
JournalEntity? _prev;

@override
create() {}

@override
Future<Task?> build({required String id}) async {
final entry = ref.watch(entityByIdProvider(id: id)).value;

if (entry is Task) {
if (entry != _prev) {
debugPrint('TaskController build $id');
_prev = entry;
return entry;
}
}

return null;
}
}

@riverpod
class TaskController1 extends _$TaskController {
TaskController1() {
_controller = StreamController();
}
late final StreamController<JournalEntity?> _controller;

@override
Future<Task?> build({required String id}) async {
return null;
}
}

@riverpod
Stream<JournalEntity?> entityById(
EntityByIdRef ref, {
required String id,
}) {
debugPrint('entityById $id');
final filter = makeDuplicateFilter<JournalEntity?>();
return getIt<JournalDb>().watchEntityById(id).asBroadcastStream();
// .where(filter);
}
Loading

0 comments on commit 6e1a10f

Please sign in to comment.