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);
|
_thumbZoomLevel = Pref.inst().getHomePhotosZoomLevelOr(0);
|
||||||
_initBloc();
|
_initBloc();
|
||||||
_metadataTaskStateChangedListener.begin();
|
_metadataTaskStateChangedListener.begin();
|
||||||
|
_prefUpdatedListener.begin();
|
||||||
}
|
}
|
||||||
|
|
||||||
@override
|
@override
|
||||||
dispose() {
|
dispose() {
|
||||||
_metadataTaskIconController.stop();
|
_metadataTaskIconController.stop();
|
||||||
_metadataTaskStateChangedListener.end();
|
_metadataTaskStateChangedListener.end();
|
||||||
|
_prefUpdatedListener.end();
|
||||||
super.dispose();
|
super.dispose();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -325,10 +327,7 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
} else if (state is ScanDirBlocSuccess || state is ScanDirBlocLoading) {
|
} else if (state is ScanDirBlocSuccess || state is ScanDirBlocLoading) {
|
||||||
_transformItems(state.files);
|
_transformItems(state.files);
|
||||||
if (state is ScanDirBlocSuccess) {
|
if (state is ScanDirBlocSuccess) {
|
||||||
if (Pref.inst().isEnableExifOr() && !_hasFiredMetadataTask.value) {
|
_tryStartMetadataTask();
|
||||||
MetadataTaskManager().addTask(MetadataTask(widget.account));
|
|
||||||
_hasFiredMetadataTask.value = true;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} else if (state is ScanDirBlocFailure) {
|
} else if (state is ScanDirBlocFailure) {
|
||||||
_transformItems(state.files);
|
_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
|
/// Transform a File list to grid items
|
||||||
void _transformItems(List<File> files) {
|
void _transformItems(List<File> files) {
|
||||||
_backingFiles = files
|
_backingFiles = files
|
||||||
|
@ -633,6 +649,8 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
AppEventListener<MetadataTaskStateChangedEvent>(
|
AppEventListener<MetadataTaskStateChangedEvent>(
|
||||||
_onMetadataTaskStateChanged);
|
_onMetadataTaskStateChanged);
|
||||||
var _metadataTaskState = MetadataTaskManager().state;
|
var _metadataTaskState = MetadataTaskManager().state;
|
||||||
|
late final _prefUpdatedListener =
|
||||||
|
AppEventListener<PrefUpdatedEvent>(_onPrefUpdated);
|
||||||
late final _metadataTaskIconController = AnimationController(
|
late final _metadataTaskIconController = AnimationController(
|
||||||
upperBound: 2 * math.pi,
|
upperBound: 2 * math.pi,
|
||||||
duration: const Duration(seconds: 10),
|
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/event/event.dart';
|
||||||
import 'package:nc_photos/k.dart' as k;
|
import 'package:nc_photos/k.dart' as k;
|
||||||
import 'package:nc_photos/language_util.dart' as language_util;
|
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/android/android_info.dart';
|
||||||
import 'package:nc_photos/mobile/notification.dart';
|
import 'package:nc_photos/mobile/notification.dart';
|
||||||
import 'package:nc_photos/platform/k.dart' as platform_k;
|
import 'package:nc_photos/platform/k.dart' as platform_k;
|
||||||
|
@ -322,11 +321,7 @@ class _SettingsState extends State<Settings> {
|
||||||
setState(() {
|
setState(() {
|
||||||
_isEnableExif = value;
|
_isEnableExif = value;
|
||||||
});
|
});
|
||||||
if (await Pref.inst().setEnableExif(value)) {
|
if (!await Pref.inst().setEnableExif(value)) {
|
||||||
if (value) {
|
|
||||||
MetadataTaskManager().addTask(MetadataTask(widget.account));
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
_log.severe("[_setExifSupport] Failed writing pref");
|
_log.severe("[_setExifSupport] Failed writing pref");
|
||||||
SnackBarManager().showSnackBar(SnackBar(
|
SnackBarManager().showSnackBar(SnackBar(
|
||||||
content: Text(L10n.global().writePreferenceFailureNotification),
|
content: Text(L10n.global().writePreferenceFailureNotification),
|
||||||
|
|
Loading…
Reference in a new issue