import 'package:drift/drift.dart'; import 'package:lensai/features/topics/data/database/database.dart'; import 'package:lensai/features/topics/data/providers.dart'; import 'package:lensai/features/web_view/domain/entities/abstract/tab.dart'; import 'package:riverpod_annotation/riverpod_annotation.dart'; part 'tab.g.dart'; @Riverpod(keepAlive: true) class TabRepository extends _$TabRepository { late TabDatabase _db; @override Stream> build() { _db = ref.watch(tabDatabaseProvider); return _db.tabDao.watchTabs(); } Future updateTab( String id, { Value url = const Value.absent(), Value title = const Value.absent(), Value topicId = const Value.absent(), Value screenshot = const Value.absent(), }) { return _db.tabDao.updateTab( id, timestamp: DateTime.now(), url: url, title: title, topicId: topicId, screenshot: screenshot, ); } Future deleteTab(String id) { return _db.tabDao.deleteTab(id); } } @Riverpod() class TopicTabRepository extends _$TopicTabRepository { late TabDatabase _db; @override Stream> build(String? topicId) { _db = ref.watch(tabDatabaseProvider); return _db.tabDao.watchTopicTabs(topicId); } Future addTab(ITab tab) { assert(tab.topicId == topicId); return _db.tabDao.upsertTab(tab, DateTime.now()); } Future closeAllTabs() { return _db.tabDao.deleteTopicTabs(topicId); } }