implemented reader mode

This commit is contained in:
Fabian Freund
2024-07-12 10:59:18 +02:00
parent 1704a4fa89
commit 3087bdbd8c
22 changed files with 6935 additions and 20 deletions
@@ -1,7 +1,12 @@
import 'dart:convert';
import 'package:bang_navigator/features/content_block/domain/repositories/host.dart';
import 'package:bang_navigator/features/settings/data/models/settings.dart';
import 'package:bang_navigator/features/settings/data/repositories/settings_repository.dart';
import 'package:flutter/foundation.dart';
import 'package:flutter/services.dart' show rootBundle;
import 'package:riverpod_annotation/riverpod_annotation.dart';
import 'package:universal_io/io.dart';
part 'providers.g.dart';
@@ -28,3 +33,13 @@ Stream<Set<String>?> blockContentHosts(BlockContentHostsRef ref) {
.watchHosts(sources: enableHostList)
.map((hosts) => hosts.toSet());
}
@Riverpod(keepAlive: true)
Future<String> readerabilityScript(ReaderabilityScriptRef ref) {
return rootBundle.load('assets/scripts/readability.min.js.gz').then(
(value) => compute(
(message) => utf8.decode(gzip.decode(message)),
value.buffer.asUint8List(),
),
);
}
@@ -21,5 +21,21 @@ final blockContentHostsProvider = StreamProvider<Set<String>?>.internal(
);
typedef BlockContentHostsRef = StreamProviderRef<Set<String>?>;
String _$readerabilityScriptHash() =>
r'6fdd1aa920bc58c35ef9888158e572e25793870a';
/// See also [readerabilityScript].
@ProviderFor(readerabilityScript)
final readerabilityScriptProvider = FutureProvider<String>.internal(
readerabilityScript,
name: r'readerabilityScriptProvider',
debugGetCreateSourceHash: const bool.fromEnvironment('dart.vm.product')
? null
: _$readerabilityScriptHash,
dependencies: null,
allTransitiveDependencies: null,
);
typedef ReaderabilityScriptRef = FutureProviderRef<String>;
// ignore_for_file: type=lint
// ignore_for_file: subtype_of_sealed_class, invalid_use_of_internal_member, invalid_use_of_visible_for_testing_member