mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-02 14:56:20 +01:00
Fix exif task starting prematurely after enabling in settings
This commit is contained in:
parent
3183efafb3
commit
6372d65f1f
2 changed files with 23 additions and 10 deletions
|
@ -70,12 +70,14 @@ class _HomePhotosState extends State<HomePhotos>
|
|||
_thumbZoomLevel = Pref.inst().getHomePhotosZoomLevelOr(0);
|
||||
_initBloc();
|
||||
_metadataTaskStateChangedListener.begin();
|
||||
_prefUpdatedListener.begin();
|
||||
}
|
||||
|
||||
@override
|
||||
dispose() {
|
||||
_metadataTaskIconController.stop();
|
||||
_metadataTaskStateChangedListener.end();
|
||||
_prefUpdatedListener.end();
|
||||
super.dispose();
|
||||
}
|
||||
|
||||
|
@ -325,10 +327,7 @@ class _HomePhotosState extends State<HomePhotos>
|
|||
} else if (state is ScanDirBlocSuccess || state is ScanDirBlocLoading) {
|
||||
_transformItems(state.files);
|
||||
if (state is ScanDirBlocSuccess) {
|
||||
if (Pref.inst().isEnableExifOr() && !_hasFiredMetadataTask.value) {
|
||||
MetadataTaskManager().addTask(MetadataTask(widget.account));
|
||||
_hasFiredMetadataTask.value = true;
|
||||
}
|
||||
_tryStartMetadataTask();
|
||||
}
|
||||
} else if (state is ScanDirBlocFailure) {
|
||||
_transformItems(state.files);
|
||||
|
@ -487,6 +486,23 @@ class _HomePhotosState extends State<HomePhotos>
|
|||
}
|
||||
}
|
||||
|
||||
void _onPrefUpdated(PrefUpdatedEvent ev) {
|
||||
if (ev.key == PrefKey.enableExif && ev.value == true) {
|
||||
_tryStartMetadataTask(ignoreFired: true);
|
||||
}
|
||||
}
|
||||
|
||||
void _tryStartMetadataTask({
|
||||
bool ignoreFired = false,
|
||||
}) {
|
||||
if (_bloc.state is ScanDirBlocSuccess &&
|
||||
Pref.inst().isEnableExifOr(false) &&
|
||||
(!_hasFiredMetadataTask.value || ignoreFired)) {
|
||||
MetadataTaskManager().addTask(MetadataTask(widget.account));
|
||||
_hasFiredMetadataTask.value = true;
|
||||
}
|
||||
}
|
||||
|
||||
/// Transform a File list to grid items
|
||||
void _transformItems(List<File> files) {
|
||||
_backingFiles = files
|
||||
|
@ -633,6 +649,8 @@ class _HomePhotosState extends State<HomePhotos>
|
|||
AppEventListener<MetadataTaskStateChangedEvent>(
|
||||
_onMetadataTaskStateChanged);
|
||||
var _metadataTaskState = MetadataTaskManager().state;
|
||||
late final _prefUpdatedListener =
|
||||
AppEventListener<PrefUpdatedEvent>(_onPrefUpdated);
|
||||
late final _metadataTaskIconController = AnimationController(
|
||||
upperBound: 2 * math.pi,
|
||||
duration: const Duration(seconds: 10),
|
||||
|
|
|
@ -8,7 +8,6 @@ import 'package:nc_photos/debug_util.dart';
|
|||
import 'package:nc_photos/event/event.dart';
|
||||
import 'package:nc_photos/k.dart' as k;
|
||||
import 'package:nc_photos/language_util.dart' as language_util;
|
||||
import 'package:nc_photos/metadata_task_manager.dart';
|
||||
import 'package:nc_photos/mobile/android/android_info.dart';
|
||||
import 'package:nc_photos/mobile/notification.dart';
|
||||
import 'package:nc_photos/platform/k.dart' as platform_k;
|
||||
|
@ -322,11 +321,7 @@ class _SettingsState extends State<Settings> {
|
|||
setState(() {
|
||||
_isEnableExif = value;
|
||||
});
|
||||
if (await Pref.inst().setEnableExif(value)) {
|
||||
if (value) {
|
||||
MetadataTaskManager().addTask(MetadataTask(widget.account));
|
||||
}
|
||||
} else {
|
||||
if (!await Pref.inst().setEnableExif(value)) {
|
||||
_log.severe("[_setExifSupport] Failed writing pref");
|
||||
SnackBarManager().showSnackBar(SnackBar(
|
||||
content: Text(L10n.global().writePreferenceFailureNotification),
|
||||
|
|
Loading…
Reference in a new issue