implement user bangs
This commit is contained in:
@@ -21,6 +21,7 @@ import 'dart:convert';
|
||||
|
||||
import 'package:drift/drift.dart';
|
||||
import 'package:riverpod_annotation/riverpod_annotation.dart';
|
||||
import 'package:weblibre/features/bangs/data/models/bang.dart';
|
||||
import 'package:weblibre/features/bangs/data/models/bang_data.dart';
|
||||
import 'package:weblibre/features/bangs/data/models/bang_group.dart';
|
||||
import 'package:weblibre/features/bangs/data/models/bang_key.dart';
|
||||
@@ -143,4 +144,12 @@ class BangDataRepository extends _$BangDataRepository {
|
||||
.bangFrequency
|
||||
.deleteWhere((t) => t.trigger.equals(trigger));
|
||||
}
|
||||
|
||||
Future<void> upsertBang(Bang bang) {
|
||||
return ref.read(bangDatabaseProvider).bangDao.upsertBang(bang);
|
||||
}
|
||||
|
||||
Future<void> deleteBang(BangGroup group, String trigger) {
|
||||
return ref.read(bangDatabaseProvider).syncDao.deleteBangs(group, [trigger]);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -42,7 +42,7 @@ final class BangDataRepositoryProvider
|
||||
}
|
||||
|
||||
String _$bangDataRepositoryHash() =>
|
||||
r'93f1338da86c693f524df377fe01d0ecf7f5ff80';
|
||||
r'0001f3e21fc1bff4fc942e6e468fb580cf2afe4b';
|
||||
|
||||
abstract class _$BangDataRepository extends $Notifier<void> {
|
||||
void build();
|
||||
|
||||
@@ -64,6 +64,18 @@ class BangSyncRepository extends _$BangSyncRepository {
|
||||
required BangDatabase db,
|
||||
required BangGroup group,
|
||||
}) async {
|
||||
if (group.bundled == null) {
|
||||
return Result.failure(
|
||||
const ErrorMessage(source: 'BangSync', message: 'Not bundled'),
|
||||
);
|
||||
}
|
||||
|
||||
if (group.remote == null) {
|
||||
return Result.failure(
|
||||
const ErrorMessage(source: 'BangSync', message: 'No remote source'),
|
||||
);
|
||||
}
|
||||
|
||||
final lastSync = await db.syncDao
|
||||
.getLastSyncOfGroup(group)
|
||||
.getSingleOrNull();
|
||||
@@ -78,7 +90,7 @@ class BangSyncRepository extends _$BangSyncRepository {
|
||||
return Result.success(null);
|
||||
}
|
||||
|
||||
final result = await sourceService.getBundledBangs(group.bundled, group);
|
||||
final result = await sourceService.getBundledBangs(group.bundled!, group);
|
||||
return result.flatMapAsync((remoteBangs) async {
|
||||
await db.syncDao.syncBangs(
|
||||
group: group,
|
||||
@@ -107,7 +119,7 @@ class BangSyncRepository extends _$BangSyncRepository {
|
||||
bangDataSourceServiceProvider.notifier,
|
||||
),
|
||||
db: db,
|
||||
url: Uri.parse(group.remote),
|
||||
url: Uri.parse(group.remote!),
|
||||
group: group,
|
||||
syncInterval: syncInterval,
|
||||
);
|
||||
@@ -163,7 +175,7 @@ class BangSyncRepository extends _$BangSyncRepository {
|
||||
Set<BangGroup>? groups,
|
||||
}) async {
|
||||
//Default to all sources
|
||||
groups ??= BangGroup.values.toSet();
|
||||
groups ??= BangGroup.values.where((e) => e.bundled != null).toSet();
|
||||
|
||||
//Run isolated operations
|
||||
final futures = groups.map(
|
||||
|
||||
@@ -42,7 +42,7 @@ final class BangSyncRepositoryProvider
|
||||
}
|
||||
|
||||
String _$bangSyncRepositoryHash() =>
|
||||
r'e3ce355e5332ff1fe7ac8ecaa277a431b74f2da0';
|
||||
r'1347dcbd03f6a1a4fa3bbbae5d9302098d260c50';
|
||||
|
||||
abstract class _$BangSyncRepository extends $Notifier<void> {
|
||||
void build();
|
||||
|
||||
Reference in New Issue
Block a user