mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-03-29 02:11:37 +01:00
Refresh after receiving native exif event
This commit is contained in:
parent
5c1ab48aae
commit
37a30e927c
4 changed files with 44 additions and 0 deletions
|
@ -3,8 +3,11 @@ import 'dart:convert';
|
|||
|
||||
import 'package:logging/logging.dart';
|
||||
import 'package:nc_photos/stream_extension.dart';
|
||||
import 'package:np_codegen/np_codegen.dart';
|
||||
import 'package:np_platform_message_relay/np_platform_message_relay.dart';
|
||||
|
||||
part 'native_event.g.dart';
|
||||
|
||||
class NativeEventListener<T> {
|
||||
NativeEventListener(this.listener);
|
||||
|
||||
|
@ -43,6 +46,7 @@ class NativeEventListener<T> {
|
|||
Logger("event.native_event.NativeEventListener<${T.runtimeType}>");
|
||||
}
|
||||
|
||||
@npLog
|
||||
class FileExifUpdatedEvent {
|
||||
const FileExifUpdatedEvent(this.fileIds);
|
||||
|
||||
|
|
14
app/lib/event/native_event.g.dart
Normal file
14
app/lib/event/native_event.g.dart
Normal file
|
@ -0,0 +1,14 @@
|
|||
// GENERATED CODE - DO NOT MODIFY BY HAND
|
||||
|
||||
part of 'native_event.dart';
|
||||
|
||||
// **************************************************************************
|
||||
// NpLogGenerator
|
||||
// **************************************************************************
|
||||
|
||||
extension _$FileExifUpdatedEventNpLog on FileExifUpdatedEvent {
|
||||
// ignore: unused_element
|
||||
Logger get _log => log;
|
||||
|
||||
static final log = Logger("event.native_event.FileExifUpdatedEvent");
|
||||
}
|
|
@ -57,6 +57,8 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
_subscriptions.add(prefController.isEnableExif.listen((event) {
|
||||
add(_SetEnableExif(event));
|
||||
}));
|
||||
|
||||
_nativeFileExifUpdatedListener?.begin();
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -64,6 +66,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
for (final s in _subscriptions) {
|
||||
s.cancel();
|
||||
}
|
||||
_nativeFileExifUpdatedListener?.end();
|
||||
return super.close();
|
||||
}
|
||||
|
||||
|
@ -302,6 +305,14 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
emit(state.copyWith(error: ExceptionEvent(ev.error, ev.stackTrace)));
|
||||
}
|
||||
|
||||
void _onNativeFileExifUpdated(FileExifUpdatedEvent ev) {
|
||||
_log.info(ev);
|
||||
_refreshThrottler.trigger(
|
||||
maxResponceTime: const Duration(seconds: 3),
|
||||
maxPendingCount: 10,
|
||||
);
|
||||
}
|
||||
|
||||
Future _transformItems(List<FileDescriptor> files) async {
|
||||
_log.info("[_transformItems] Queue ${files.length} items");
|
||||
_itemTransformerQueue.addJob(
|
||||
|
@ -389,6 +400,18 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
final _subscriptions = <StreamSubscription>[];
|
||||
var _isHandlingError = false;
|
||||
var _isInitialLoad = true;
|
||||
|
||||
// Listen to updates from background isolates as the memories are not shared
|
||||
late final _nativeFileExifUpdatedListener =
|
||||
getRawPlatform() == NpPlatform.android
|
||||
? NativeEventListener<FileExifUpdatedEvent>(_onNativeFileExifUpdated)
|
||||
: null;
|
||||
late final _refreshThrottler = Throttler(
|
||||
onTriggered: (_) {
|
||||
add(const _Reload());
|
||||
},
|
||||
logTag: _log.name,
|
||||
);
|
||||
}
|
||||
|
||||
_ItemTransformerResult _buildItem(_ItemTransformerArgument arg) {
|
||||
|
|
|
@ -27,6 +27,7 @@ import 'package:nc_photos/entity/collection.dart';
|
|||
import 'package:nc_photos/entity/file_descriptor.dart';
|
||||
import 'package:nc_photos/entity/file_util.dart' as file_util;
|
||||
import 'package:nc_photos/event/event.dart';
|
||||
import 'package:nc_photos/event/native_event.dart';
|
||||
import 'package:nc_photos/exception_event.dart';
|
||||
import 'package:nc_photos/exception_util.dart' as exception_util;
|
||||
import 'package:nc_photos/flutter_util.dart' as flutter_util;
|
||||
|
@ -37,6 +38,7 @@ import 'package:nc_photos/service.dart' as service;
|
|||
import 'package:nc_photos/snack_bar_manager.dart';
|
||||
import 'package:nc_photos/theme.dart';
|
||||
import 'package:nc_photos/theme/dimension.dart';
|
||||
import 'package:nc_photos/throttler.dart';
|
||||
import 'package:nc_photos/widget/collection_browser.dart';
|
||||
import 'package:nc_photos/widget/collection_picker.dart';
|
||||
import 'package:nc_photos/widget/file_sharer_dialog.dart';
|
||||
|
@ -55,6 +57,7 @@ import 'package:np_codegen/np_codegen.dart';
|
|||
import 'package:np_collection/np_collection.dart';
|
||||
import 'package:np_common/object_util.dart';
|
||||
import 'package:np_common/or_null.dart';
|
||||
import 'package:np_platform_util/np_platform_util.dart';
|
||||
import 'package:to_string/to_string.dart';
|
||||
import 'package:visibility_detector/visibility_detector.dart';
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue