Compare commits

..

1 Commits

Author SHA1 Message Date
ed48d95375 fix comments repo. (#364) 2024-01-03 14:31:03 -08:00
8 changed files with 20 additions and 11 deletions

View File

@ -9,6 +9,7 @@ import 'package:hacki/config/locator.dart';
import 'package:hacki/cubits/cubits.dart'; import 'package:hacki/cubits/cubits.dart';
import 'package:hacki/models/models.dart'; import 'package:hacki/models/models.dart';
import 'package:hacki/repositories/repositories.dart'; import 'package:hacki/repositories/repositories.dart';
import 'package:logger/logger.dart';
part 'notification_state.dart'; part 'notification_state.dart';
@ -19,6 +20,7 @@ class NotificationCubit extends Cubit<NotificationState> {
HackerNewsRepository? hackerNewsRepository, HackerNewsRepository? hackerNewsRepository,
PreferenceRepository? preferenceRepository, PreferenceRepository? preferenceRepository,
SembastRepository? sembastRepository, SembastRepository? sembastRepository,
Logger? logger,
}) : _authBloc = authBloc, }) : _authBloc = authBloc,
_preferenceCubit = preferenceCubit, _preferenceCubit = preferenceCubit,
_hackerNewsRepository = _hackerNewsRepository =
@ -27,6 +29,7 @@ class NotificationCubit extends Cubit<NotificationState> {
preferenceRepository ?? locator.get<PreferenceRepository>(), preferenceRepository ?? locator.get<PreferenceRepository>(),
_sembastRepository = _sembastRepository =
sembastRepository ?? locator.get<SembastRepository>(), sembastRepository ?? locator.get<SembastRepository>(),
_logger = logger ?? locator.get<Logger>(),
super(NotificationState.init()) { super(NotificationState.init()) {
_authBloc.stream _authBloc.stream
.map((AuthState event) => event.username) .map((AuthState event) => event.username)
@ -58,6 +61,7 @@ class NotificationCubit extends Cubit<NotificationState> {
final HackerNewsRepository _hackerNewsRepository; final HackerNewsRepository _hackerNewsRepository;
final PreferenceRepository _preferenceRepository; final PreferenceRepository _preferenceRepository;
final SembastRepository _sembastRepository; final SembastRepository _sembastRepository;
final Logger _logger;
Timer? _timer; Timer? _timer;
static const Duration _refreshInterval = Duration(minutes: 5); static const Duration _refreshInterval = Duration(minutes: 5);
@ -74,6 +78,7 @@ class NotificationCubit extends Cubit<NotificationState> {
}); });
await _preferenceRepository.unreadCommentsIds.then((List<int> unreadIds) { await _preferenceRepository.unreadCommentsIds.then((List<int> unreadIds) {
_logger.i('NotificationCubit: ${unreadIds.length} unread items.');
emit(state.copyWith(unreadCommentsIds: unreadIds)); emit(state.copyWith(unreadCommentsIds: unreadIds));
}); });

View File

@ -186,7 +186,7 @@ class AutoScrollModePreference extends BooleanPreference {
String get key => 'autoScrollMode'; String get key => 'autoScrollMode';
@override @override
String get title => 'Auto-scroll on collapsing'; String get title => 'Auto-scroll on Collapsing';
@override @override
String get subtitle => String get subtitle =>

View File

@ -97,7 +97,7 @@ class HackerNewsWebRepository {
static const String _itemBaseUrl = 'https://news.ycombinator.com/item?id='; static const String _itemBaseUrl = 'https://news.ycombinator.com/item?id=';
static const String _athingComtrSelector = static const String _athingComtrSelector =
'#hnmain > tbody > tr:nth-child(3) > td > table > tbody > .athing.comtr'; '#hnmain > tbody > tr > td > table > tbody > .athing.comtr';
static const String _commentTextSelector = static const String _commentTextSelector =
'''td > table > tbody > tr > td.default > div.comment'''; '''td > table > tbody > tr > td.default > div.comment''';
static const String _commentHeadSelector = static const String _commentHeadSelector =
@ -153,6 +153,10 @@ class HackerNewsWebRepository {
Iterable<Element> elements = await fetchElements(page); Iterable<Element> elements = await fetchElements(page);
final Map<int, int> indentToParentId = <int, int>{}; final Map<int, int> indentToParentId = <int, int>{};
if (item is Story && item.descendants > 0 && elements.isEmpty) {
throw PossibleParsingException(itemId: itemId);
}
while (elements.isNotEmpty) { while (elements.isNotEmpty) {
for (final Element element in elements) { for (final Element element in elements) {
/// Get comment id. /// Get comment id.

View File

@ -49,7 +49,7 @@ class _HomeScreenState extends State<HomeScreen>
super.didPopNext(); super.didPopNext();
if (context.read<StoriesBloc>().deviceScreenType == if (context.read<StoriesBloc>().deviceScreenType ==
DeviceScreenType.mobile) { DeviceScreenType.mobile) {
locator.get<Logger>().i('Resetting comments in CommentCache'); locator.get<Logger>().i('resetting comments in CommentCache');
Future<void>.delayed( Future<void>.delayed(
AppDurations.ms500, AppDurations.ms500,
locator.get<CommentCache>().resetComments, locator.get<CommentCache>().resetComments,

View File

@ -120,7 +120,7 @@ class WebAnalyzer {
if (info != null) { if (info != null) {
locator.get<Logger>().d(''' locator.get<Logger>().d('''
Fetched mem cached metadata using key $key for $story: fetched mem cached metadata using key $key for $story:
${info.toJson()} ${info.toJson()}
'''); ''');
return info; return info;
@ -168,7 +168,7 @@ ${info.toJson()}
/// [5] If there is file cache, move it to mem cache for later retrieval. /// [5] If there is file cache, move it to mem cache for later retrieval.
if (info != null) { if (info != null) {
locator.get<Logger>().d(''' locator.get<Logger>().d('''
Fetched file cached metadata using key $key for $story: fetched file cached metadata using key $key for $story:
${info.toJson()} ${info.toJson()}
'''); ''');
cacheMap[key] = info; cacheMap[key] = info;
@ -189,7 +189,7 @@ ${info.toJson()}
if (info is WebInfo) { if (info is WebInfo) {
locator locator
.get<Logger>() .get<Logger>()
.d('Caching metadata using key $key for $story.'); .d('caching metadata using key $key for $story.');
unawaited( unawaited(
locator.get<SembastRepository>().cacheMetadata( locator.get<SembastRepository>().cacheMetadata(
key: key, key: key,
@ -422,7 +422,7 @@ ${info.toJson()}
} catch (e) { } catch (e) {
locator locator
.get<Logger>() .get<Logger>()
.e('''Web page resolution failure from:$url Error:$e'''); .e('''web page resolution failure from:$url Error:$e''');
} }
} }

View File

@ -1454,4 +1454,4 @@ packages:
version: "3.1.2" version: "3.1.2"
sdks: sdks:
dart: ">=3.2.0-194.0.dev <4.0.0" dart: ">=3.2.0-194.0.dev <4.0.0"
flutter: ">=3.16.3" flutter: ">=3.16.5"

View File

@ -1,11 +1,11 @@
name: hacki name: hacki
description: A Hacker News reader. description: A Hacker News reader.
version: 2.6.1+136 version: 2.6.2+137
publish_to: none publish_to: none
environment: environment:
sdk: ">=3.0.0 <4.0.0" sdk: ">=3.0.0 <4.0.0"
flutter: "3.16.3" flutter: "3.16.5"
dependencies: dependencies:
adaptive_theme: ^3.2.0 adaptive_theme: ^3.2.0