mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-24 02:18:50 +01:00
Port starting exif service
This commit is contained in:
parent
47348cf10a
commit
5c1ab48aae
4 changed files with 67 additions and 0 deletions
|
@ -9,6 +9,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
required this.prefController,
|
||||
required this.accountPrefController,
|
||||
required this.collectionsController,
|
||||
required this.sessionController,
|
||||
}) : super(_State.init(
|
||||
zoom: prefController.homePhotosZoomLevel.value,
|
||||
isEnableMemoryCollection:
|
||||
|
@ -38,6 +39,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
on<_SetEnableMemoryCollection>(_onSetEnableMemoryCollection);
|
||||
on<_SetSortByName>(_onSetSortByName);
|
||||
on<_SetMemoriesRange>(_onSetMemoriesRange);
|
||||
on<_SetEnableExif>(_onSetEnableExif);
|
||||
on<_UpdateDateTimeGroup>(_onUpdateDateTimeGroup);
|
||||
|
||||
on<_SetError>(_onSetError);
|
||||
|
@ -52,6 +54,9 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
_subscriptions.add(prefController.memoriesRange.listen((event) {
|
||||
add(_SetMemoriesRange(event));
|
||||
}));
|
||||
_subscriptions.add(prefController.isEnableExif.listen((event) {
|
||||
add(_SetEnableExif(event));
|
||||
}));
|
||||
}
|
||||
|
||||
@override
|
||||
|
@ -130,6 +135,7 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
memoryCollections: ev.memoryCollections,
|
||||
isLoading: _itemTransformerQueue.isProcessing,
|
||||
));
|
||||
_tryStartMetadataTask();
|
||||
}
|
||||
|
||||
void _onSetSelectedItems(_SetSelectedItems ev, Emitter<_State> emit) {
|
||||
|
@ -277,6 +283,15 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
_transformItems(state.files);
|
||||
}
|
||||
|
||||
void _onSetEnableExif(_SetEnableExif ev, Emitter<_State> emit) {
|
||||
_log.info(ev);
|
||||
if (ev.value) {
|
||||
_tryStartMetadataTask(ignoreFired: true);
|
||||
} else {
|
||||
_stopMetadataTask();
|
||||
}
|
||||
}
|
||||
|
||||
void _onUpdateDateTimeGroup(_UpdateDateTimeGroup ev, Emitter<_State> emit) {
|
||||
_log.info(ev);
|
||||
_transformItems(state.files);
|
||||
|
@ -331,12 +346,43 @@ class _Bloc extends Bloc<_Event, _State> with BlocLogger {
|
|||
emit(state.copyWith(selectedItems: const {}));
|
||||
}
|
||||
|
||||
Future<void> _tryStartMetadataTask({
|
||||
bool ignoreFired = false,
|
||||
}) async {
|
||||
if (state.files.isNotEmpty &&
|
||||
prefController.isEnableExif.value &&
|
||||
(ignoreFired || !sessionController.hasFiredMetadataTask.value)) {
|
||||
sessionController.setFiredMetadataTask(true);
|
||||
try {
|
||||
final missingMetadataCount =
|
||||
await _c.npDb.countFilesByFileIdsMissingMetadata(
|
||||
account: account.toDb(),
|
||||
fileIds: state.files.map((e) => e.fdId).toList(),
|
||||
mimes: file_util.supportedImageFormatMimes,
|
||||
);
|
||||
_log.info(
|
||||
"[_tryStartMetadataTask] Missing count: $missingMetadataCount");
|
||||
if (missingMetadataCount > 0) {
|
||||
unawaited(service.startService());
|
||||
}
|
||||
} catch (e, stackTrace) {
|
||||
_log.shout("[_tryStartMetadataTask] Failed starting metadata task", e,
|
||||
stackTrace);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void _stopMetadataTask() {
|
||||
service.stopService();
|
||||
}
|
||||
|
||||
final DiContainer _c;
|
||||
final Account account;
|
||||
final FilesController controller;
|
||||
final PrefController prefController;
|
||||
final AccountPrefController accountPrefController;
|
||||
final CollectionsController collectionsController;
|
||||
final SessionController sessionController;
|
||||
|
||||
final _itemTransformerQueue =
|
||||
ComputeQueue<_ItemTransformerArgument, _ItemTransformerResult>();
|
||||
|
|
|
@ -238,6 +238,16 @@ class _SetMemoriesRange implements _Event {
|
|||
final int value;
|
||||
}
|
||||
|
||||
@toString
|
||||
class _SetEnableExif implements _Event {
|
||||
const _SetEnableExif(this.value);
|
||||
|
||||
@override
|
||||
String toString() => _$toString();
|
||||
|
||||
final bool value;
|
||||
}
|
||||
|
||||
@toString
|
||||
class _UpdateDateTimeGroup implements _Event {
|
||||
const _UpdateDateTimeGroup();
|
||||
|
|
|
@ -19,6 +19,8 @@ import 'package:nc_photos/controller/account_pref_controller.dart';
|
|||
import 'package:nc_photos/controller/collections_controller.dart';
|
||||
import 'package:nc_photos/controller/files_controller.dart';
|
||||
import 'package:nc_photos/controller/pref_controller.dart';
|
||||
import 'package:nc_photos/controller/session_controller.dart';
|
||||
import 'package:nc_photos/db/entity_converter.dart';
|
||||
import 'package:nc_photos/di_container.dart';
|
||||
import 'package:nc_photos/download_handler.dart';
|
||||
import 'package:nc_photos/entity/collection.dart';
|
||||
|
@ -31,6 +33,7 @@ import 'package:nc_photos/flutter_util.dart' as flutter_util;
|
|||
import 'package:nc_photos/k.dart' as k;
|
||||
import 'package:nc_photos/language_util.dart' as language_util;
|
||||
import 'package:nc_photos/progress_util.dart';
|
||||
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';
|
||||
|
@ -80,6 +83,7 @@ class HomePhotos2 extends StatelessWidget {
|
|||
prefController: context.read(),
|
||||
accountPrefController: accountController.accountPrefController,
|
||||
collectionsController: accountController.collectionsController,
|
||||
sessionController: accountController.sessionController,
|
||||
),
|
||||
child: const _WrappedHomePhotos(),
|
||||
);
|
||||
|
|
|
@ -273,6 +273,13 @@ extension _$_SetMemoriesRangeToString on _SetMemoriesRange {
|
|||
}
|
||||
}
|
||||
|
||||
extension _$_SetEnableExifToString on _SetEnableExif {
|
||||
String _$toString() {
|
||||
// ignore: unnecessary_string_interpolations
|
||||
return "_SetEnableExif {value: $value}";
|
||||
}
|
||||
}
|
||||
|
||||
extension _$_UpdateDateTimeGroupToString on _UpdateDateTimeGroup {
|
||||
String _$toString() {
|
||||
// ignore: unnecessary_string_interpolations
|
||||
|
|
Loading…
Reference in a new issue