From 2f6ae2684dcedccb4df69f664ac597adfe1a0c25 Mon Sep 17 00:00:00 2001 From: Fabian Freund Date: Wed, 19 Jun 2024 21:07:37 +0200 Subject: [PATCH] refactored sync repo --- .../bangs/domain/repositories/sync.dart | 47 +++++-------------- .../bangs/domain/repositories/sync.g.dart | 2 +- 2 files changed, 14 insertions(+), 35 deletions(-) diff --git a/app/lib/features/bangs/domain/repositories/sync.dart b/app/lib/features/bangs/domain/repositories/sync.dart index 8b33de41..f42dfdd3 100644 --- a/app/lib/features/bangs/domain/repositories/sync.dart +++ b/app/lib/features/bangs/domain/repositories/sync.dart @@ -45,9 +45,8 @@ class BangSyncRepository extends _$BangSyncRepository { ); } - Future> _syncBangGroup( + Future> syncBangGroup( BangGroup group, - Uri url, Duration? syncInterval, ) async { try { @@ -59,7 +58,7 @@ class BangSyncRepository extends _$BangSyncRepository { final result = await _fetchAndSync( sourceService: ref.read(bangSourceServiceProvider.notifier), db: db, - url: url, + url: Uri.parse(group.url), group: group, syncInterval: syncInterval, ); @@ -84,40 +83,20 @@ class BangSyncRepository extends _$BangSyncRepository { return _db.syncDao.lastSyncOfGroup(group).watchSingleOrNull(); } - Future> syncGeneralBangs({Duration? syncInterval}) => - _syncBangGroup( - BangGroup.general, - Uri.parse(BangGroup.general.url), - syncInterval, - ); - - Future> syncKagiBangs({Duration? syncInterval}) => - _syncBangGroup( - BangGroup.kagi, - Uri.parse(BangGroup.kagi.url), - syncInterval, - ); - - Future> syncAssistantBangs({Duration? syncInterval}) => - _syncBangGroup( - BangGroup.assistant, - Uri.parse(BangGroup.assistant.url), - syncInterval, - ); - - Future>> syncAllBangGroups({ + Future>> syncBangGroups({ + Set? groups, Duration? syncInterval, }) async { - //Run isolated operations - final generalSync = syncGeneralBangs(syncInterval: syncInterval); - final assistantSync = syncAssistantBangs(syncInterval: syncInterval); - final kagiSync = syncKagiBangs(syncInterval: syncInterval); + //Default to all sources + groups ??= BangGroup.values.toSet(); - return { - BangGroup.general: await generalSync, - BangGroup.assistant: await assistantSync, - BangGroup.kagi: await kagiSync, - }; + //Run isolated operations + final futures = groups.map( + (source) => syncBangGroup(source, syncInterval) + .then((result) => MapEntry(source, result)), + ); + + return Map.fromEntries(await Future.wait(futures)); } @override diff --git a/app/lib/features/bangs/domain/repositories/sync.g.dart b/app/lib/features/bangs/domain/repositories/sync.g.dart index d233dc45..f57dcf73 100644 --- a/app/lib/features/bangs/domain/repositories/sync.g.dart +++ b/app/lib/features/bangs/domain/repositories/sync.g.dart @@ -7,7 +7,7 @@ part of 'sync.dart'; // ************************************************************************** String _$bangSyncRepositoryHash() => - r'865164c809e2f171a6b748d149780383d6e3483f'; + r'1e6341c8daf25aaee61d158f94445564d4450a9e'; /// See also [BangSyncRepository]. @ProviderFor(BangSyncRepository)