refactoring

This commit is contained in:
Fabian Freund
2025-02-20 12:27:34 +01:00
parent b81fc1cc42
commit 490e13000b
138 changed files with 1392 additions and 3251 deletions
@@ -3,6 +3,7 @@ import 'package:lensai/extensions/nullable.dart';
import 'package:lensai/features/bangs/data/database/database.dart';
import 'package:lensai/features/bangs/data/models/bang.dart';
import 'package:lensai/features/bangs/data/models/bang_data.dart';
import 'package:lensai/features/bangs/data/models/bang_group.dart';
part 'bang.g.dart';
@@ -121,18 +122,4 @@ class BangDao extends DatabaseAccessor<BangDatabase> with _$BangDaoMixin {
Future<int> removeSearchEntry(String searchQuery) {
return db.bangHistory.deleteWhere((t) => t.searchQuery.equals(searchQuery));
}
// Future<int> upsertBangIcon(String trigger, BrowserIcon icon) async {
// //TODO: swithc to WEBP in future, requires 3rd party
// final compressed = await icon.image.toByteData(format: ImageByteFormat.png);
// return db.bangIcon.insertOne(
// BangIconCompanion.insert(
// trigger: trigger,
// iconData: compressed!.buffer.asUint8List(),
// fetchDate: DateTime.now(),
// ),
// mode: InsertMode.insertOrReplace,
// );
// }
}
@@ -1,6 +1,7 @@
import 'package:drift/drift.dart';
import 'package:lensai/features/bangs/data/database/database.dart';
import 'package:lensai/features/bangs/data/models/bang.dart';
import 'package:lensai/features/bangs/data/models/bang_group.dart';
part 'sync.g.dart';
@@ -8,7 +9,7 @@ part 'sync.g.dart';
class SyncDao extends DatabaseAccessor<BangDatabase> with _$SyncDaoMixin {
SyncDao(super.db);
SingleOrNullSelectable<DateTime?> lastSyncOfGroup(BangGroup group) {
SingleOrNullSelectable<DateTime?> getLastSyncOfGroup(BangGroup group) {
final query =
selectOnly(db.bangSync)
..addColumns([db.bangSync.lastSync])
@@ -4,6 +4,7 @@ import 'package:lensai/features/bangs/data/database/daos/sync.dart';
import 'package:lensai/features/bangs/data/database/drift/converters/bang_format.dart';
import 'package:lensai/features/bangs/data/models/bang.dart';
import 'package:lensai/features/bangs/data/models/bang_data.dart';
import 'package:lensai/features/bangs/data/models/bang_group.dart';
import 'package:lensai/features/bangs/data/models/search_history_entry.dart';
import 'package:lensai/features/search/domain/fts_tokenizer.dart';
@@ -1,5 +1,6 @@
import 'package:lensai/features/bangs/data/database/drift/converters/bang_format.dart';
import 'package:lensai/features/bangs/data/models/bang_data.dart';
import 'package:lensai/features/bangs/data/models/bang_group.dart';
import 'package:lensai/features/bangs/data/models/bang.dart';
import 'package:lensai/features/bangs/data/models/search_history_entry.dart';
+1 -17
View File
@@ -4,26 +4,10 @@ import 'package:fast_equatable/fast_equatable.dart';
import 'package:json_annotation/json_annotation.dart';
import 'package:lensai/features/bangs/data/database/database.dart'
show BangCompanion;
import 'package:lensai/features/bangs/data/models/bang_group.dart';
part 'bang.g.dart';
enum BangGroup {
general('https://raw.githubusercontent.com/FaFre/bangs/main/data/bangs.json'),
assistant(
'https://raw.githubusercontent.com/FaFre/bangs/main/data/assistant_bangs.json',
),
kagi(
'https://raw.githubusercontent.com/FaFre/bangs/main/data/kagi_bangs.json',
),
custom(
'https://raw.githubusercontent.com/FaFre/bangs/refs/heads/custom/data/custom.json',
);
final String url;
const BangGroup(this.url);
}
enum BangFormat {
///When the bang is invoked with no query, opens the base path of the URL (/)
///instead of any path given in the template (g., /search)
@@ -0,0 +1,16 @@
enum BangGroup {
general('https://raw.githubusercontent.com/FaFre/bangs/main/data/bangs.json'),
assistant(
'https://raw.githubusercontent.com/FaFre/bangs/main/data/assistant_bangs.json',
),
kagi(
'https://raw.githubusercontent.com/FaFre/bangs/main/data/kagi_bangs.json',
),
custom(
'https://raw.githubusercontent.com/FaFre/bangs/refs/heads/custom/data/custom.json',
);
final String url;
const BangGroup(this.url);
}
@@ -5,12 +5,13 @@ import 'package:flutter/foundation.dart';
import 'package:http/http.dart' as http;
import 'package:lensai/core/http_error_handler.dart';
import 'package:lensai/features/bangs/data/models/bang.dart';
import 'package:lensai/features/bangs/data/models/bang_group.dart';
import 'package:riverpod_annotation/riverpod_annotation.dart';
part 'source.g.dart';
part 'data_source.g.dart';
@Riverpod()
class BangSourceService extends _$BangSourceService {
class BangDataSourceService extends _$BangDataSourceService {
late http.Client _client;
@override
@@ -20,7 +21,9 @@ class BangSourceService extends _$BangSourceService {
Future<Result<List<Bang>>> getBangs(Uri url, BangGroup? group) async {
return Result.fromAsync(() async {
final response = await _client.get(url);
final response = await _client
.get(url)
.timeout(const Duration(seconds: 30));
return await compute((args) => jsonDecode(utf8.decode(args[0])) as List, [
response.bodyBytes,
]).then(
@@ -1,26 +1,27 @@
// GENERATED CODE - DO NOT MODIFY BY HAND
part of 'source.dart';
part of 'data_source.dart';
// **************************************************************************
// RiverpodGenerator
// **************************************************************************
String _$bangSourceServiceHash() => r'2f734d563fa20de306a72013526ef1f72f910fe1';
String _$bangDataSourceServiceHash() =>
r'fb00762858a2878505c14e2b1a0f26c1b2f60d7d';
/// See also [BangSourceService].
@ProviderFor(BangSourceService)
final bangSourceServiceProvider =
AutoDisposeNotifierProvider<BangSourceService, void>.internal(
BangSourceService.new,
name: r'bangSourceServiceProvider',
/// See also [BangDataSourceService].
@ProviderFor(BangDataSourceService)
final bangDataSourceServiceProvider =
AutoDisposeNotifierProvider<BangDataSourceService, void>.internal(
BangDataSourceService.new,
name: r'bangDataSourceServiceProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$bangSourceServiceHash,
: _$bangDataSourceServiceHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef _$BangSourceService = AutoDisposeNotifier<void>;
typedef _$BangDataSourceService = AutoDisposeNotifier<void>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member, deprecated_member_use_from_same_package