mirror of
https://gitlab.com/nkming2/nc-photos.git
synced 2025-02-02 06:46:22 +01:00
No longer propagate property updates to album
This commit is contained in:
parent
f4faa1ed1f
commit
30ec7dab7a
5 changed files with 4 additions and 69 deletions
|
@ -89,15 +89,12 @@ class ListAlbumBlocInconsistent extends ListAlbumBlocState {
|
||||||
|
|
||||||
class ListAlbumBloc extends Bloc<ListAlbumBlocEvent, ListAlbumBlocState> {
|
class ListAlbumBloc extends Bloc<ListAlbumBlocEvent, ListAlbumBlocState> {
|
||||||
ListAlbumBloc() : super(ListAlbumBlocInit()) {
|
ListAlbumBloc() : super(ListAlbumBlocInit()) {
|
||||||
_filePropertyUpdatedListener =
|
|
||||||
AppEventListener<FilePropertyUpdatedEvent>(_onFilePropertyUpdatedEvent);
|
|
||||||
_albumUpdatedListener =
|
_albumUpdatedListener =
|
||||||
AppEventListener<AlbumUpdatedEvent>(_onAlbumUpdatedEvent);
|
AppEventListener<AlbumUpdatedEvent>(_onAlbumUpdatedEvent);
|
||||||
_fileRemovedListener =
|
_fileRemovedListener =
|
||||||
AppEventListener<FileRemovedEvent>(_onFileRemovedEvent);
|
AppEventListener<FileRemovedEvent>(_onFileRemovedEvent);
|
||||||
_albumCreatedListener =
|
_albumCreatedListener =
|
||||||
AppEventListener<AlbumCreatedEvent>(_onAlbumCreatedEvent);
|
AppEventListener<AlbumCreatedEvent>(_onAlbumCreatedEvent);
|
||||||
_filePropertyUpdatedListener.begin();
|
|
||||||
_albumUpdatedListener.begin();
|
_albumUpdatedListener.begin();
|
||||||
_fileRemovedListener.begin();
|
_fileRemovedListener.begin();
|
||||||
_albumCreatedListener.begin();
|
_albumCreatedListener.begin();
|
||||||
|
@ -115,7 +112,6 @@ class ListAlbumBloc extends Bloc<ListAlbumBlocEvent, ListAlbumBlocState> {
|
||||||
|
|
||||||
@override
|
@override
|
||||||
close() {
|
close() {
|
||||||
_filePropertyUpdatedListener.end();
|
|
||||||
_albumUpdatedListener.end();
|
_albumUpdatedListener.end();
|
||||||
_fileRemovedListener.end();
|
_fileRemovedListener.end();
|
||||||
_albumCreatedListener.end();
|
_albumCreatedListener.end();
|
||||||
|
@ -160,18 +156,6 @@ class ListAlbumBloc extends Bloc<ListAlbumBlocEvent, ListAlbumBlocState> {
|
||||||
yield ListAlbumBlocInconsistent(state.account, state.albums);
|
yield ListAlbumBlocInconsistent(state.account, state.albums);
|
||||||
}
|
}
|
||||||
|
|
||||||
void _onFilePropertyUpdatedEvent(FilePropertyUpdatedEvent ev) {
|
|
||||||
if (!ev.hasAnyProperties([FilePropertyUpdatedEvent.propMetadata])) {
|
|
||||||
// not interested
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if (state is ListAlbumBlocInit) {
|
|
||||||
// no data in this bloc, ignore
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
add(_ListAlbumBlocExternalEvent());
|
|
||||||
}
|
|
||||||
|
|
||||||
void _onAlbumUpdatedEvent(AlbumUpdatedEvent ev) {
|
void _onAlbumUpdatedEvent(AlbumUpdatedEvent ev) {
|
||||||
if (state is ListAlbumBlocInit) {
|
if (state is ListAlbumBlocInit) {
|
||||||
// no data in this bloc, ignore
|
// no data in this bloc, ignore
|
||||||
|
@ -224,7 +208,6 @@ class ListAlbumBloc extends Bloc<ListAlbumBlocEvent, ListAlbumBlocState> {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
AppEventListener<FilePropertyUpdatedEvent> _filePropertyUpdatedListener;
|
|
||||||
AppEventListener<AlbumUpdatedEvent> _albumUpdatedListener;
|
AppEventListener<AlbumUpdatedEvent> _albumUpdatedListener;
|
||||||
AppEventListener<FileRemovedEvent> _fileRemovedListener;
|
AppEventListener<FileRemovedEvent> _fileRemovedListener;
|
||||||
AppEventListener<AlbumCreatedEvent> _albumCreatedListener;
|
AppEventListener<AlbumCreatedEvent> _albumCreatedListener;
|
||||||
|
|
|
@ -1,7 +1,6 @@
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:nc_photos/account.dart';
|
import 'package:nc_photos/account.dart';
|
||||||
import 'package:nc_photos/connectivity_util.dart' as connectivity_util;
|
import 'package:nc_photos/connectivity_util.dart' as connectivity_util;
|
||||||
import 'package:nc_photos/entity/album.dart';
|
|
||||||
import 'package:nc_photos/entity/exif.dart';
|
import 'package:nc_photos/entity/exif.dart';
|
||||||
import 'package:nc_photos/entity/file.dart';
|
import 'package:nc_photos/entity/file.dart';
|
||||||
import 'package:nc_photos/entity/file/data_source.dart';
|
import 'package:nc_photos/entity/file/data_source.dart';
|
||||||
|
@ -52,8 +51,7 @@ class UpdateMissingMetadata {
|
||||||
exif: exif,
|
exif: exif,
|
||||||
);
|
);
|
||||||
|
|
||||||
final updateOp = UpdateProperty(FileRepo(FileCachedDataSource()),
|
final updateOp = UpdateProperty(FileRepo(FileCachedDataSource()));
|
||||||
AlbumRepo(AlbumCachedDataSource()));
|
|
||||||
await updateOp(
|
await updateOp(
|
||||||
account,
|
account,
|
||||||
file,
|
file,
|
||||||
|
|
|
@ -2,15 +2,12 @@ import 'package:event_bus/event_bus.dart';
|
||||||
import 'package:kiwi/kiwi.dart';
|
import 'package:kiwi/kiwi.dart';
|
||||||
import 'package:logging/logging.dart';
|
import 'package:logging/logging.dart';
|
||||||
import 'package:nc_photos/account.dart';
|
import 'package:nc_photos/account.dart';
|
||||||
import 'package:nc_photos/entity/album.dart';
|
|
||||||
import 'package:nc_photos/entity/file.dart';
|
import 'package:nc_photos/entity/file.dart';
|
||||||
import 'package:nc_photos/event/event.dart';
|
import 'package:nc_photos/event/event.dart';
|
||||||
import 'package:nc_photos/or_null.dart';
|
import 'package:nc_photos/or_null.dart';
|
||||||
import 'package:nc_photos/use_case/list_album.dart';
|
|
||||||
import 'package:nc_photos/use_case/update_album.dart';
|
|
||||||
|
|
||||||
class UpdateProperty {
|
class UpdateProperty {
|
||||||
UpdateProperty(this.fileRepo, this.albumRepo);
|
UpdateProperty(this.fileRepo);
|
||||||
|
|
||||||
Future<void> call(
|
Future<void> call(
|
||||||
Account account,
|
Account account,
|
||||||
|
@ -34,12 +31,6 @@ class UpdateProperty {
|
||||||
metadata: metadata,
|
metadata: metadata,
|
||||||
isArchived: isArchived,
|
isArchived: isArchived,
|
||||||
);
|
);
|
||||||
await _cleanUpAlbums(
|
|
||||||
account,
|
|
||||||
file,
|
|
||||||
metadata: metadata,
|
|
||||||
isArchived: isArchived,
|
|
||||||
);
|
|
||||||
|
|
||||||
int properties = 0;
|
int properties = 0;
|
||||||
if (metadata != null) {
|
if (metadata != null) {
|
||||||
|
@ -54,41 +45,7 @@ class UpdateProperty {
|
||||||
.fire(FilePropertyUpdatedEvent(account, file, properties));
|
.fire(FilePropertyUpdatedEvent(account, file, properties));
|
||||||
}
|
}
|
||||||
|
|
||||||
Future<void> _cleanUpAlbums(
|
|
||||||
Account account,
|
|
||||||
File file, {
|
|
||||||
OrNull<Metadata> metadata,
|
|
||||||
OrNull<bool> isArchived,
|
|
||||||
}) async {
|
|
||||||
final albums = await ListAlbum(fileRepo, albumRepo)(account);
|
|
||||||
for (final a in albums) {
|
|
||||||
try {
|
|
||||||
if (a.items.any((element) =>
|
|
||||||
element is AlbumFileItem && element.file.path == file.path)) {
|
|
||||||
final newItems = a.items.map((e) {
|
|
||||||
if (e is AlbumFileItem && e.file.path == file.path) {
|
|
||||||
return AlbumFileItem(
|
|
||||||
file: e.file.copyWith(
|
|
||||||
metadata: metadata,
|
|
||||||
isArchived: isArchived,
|
|
||||||
),
|
|
||||||
);
|
|
||||||
} else {
|
|
||||||
return e;
|
|
||||||
}
|
|
||||||
}).toList();
|
|
||||||
await UpdateAlbum(albumRepo)(account, a.copyWith(items: newItems));
|
|
||||||
}
|
|
||||||
} catch (e, stacktrace) {
|
|
||||||
_log.shout(
|
|
||||||
"[_cleanUpAlbums] Failed while updating album", e, stacktrace);
|
|
||||||
// continue to next album
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
final FileRepo fileRepo;
|
final FileRepo fileRepo;
|
||||||
final AlbumRepo albumRepo;
|
|
||||||
|
|
||||||
static final _log = Logger("use_case.update_property.UpdateProperty");
|
static final _log = Logger("use_case.update_property.UpdateProperty");
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,7 +7,6 @@ import 'package:logging/logging.dart';
|
||||||
import 'package:nc_photos/account.dart';
|
import 'package:nc_photos/account.dart';
|
||||||
import 'package:nc_photos/api/api_util.dart' as api_util;
|
import 'package:nc_photos/api/api_util.dart' as api_util;
|
||||||
import 'package:nc_photos/bloc/scan_dir.dart';
|
import 'package:nc_photos/bloc/scan_dir.dart';
|
||||||
import 'package:nc_photos/entity/album.dart';
|
|
||||||
import 'package:nc_photos/entity/file.dart';
|
import 'package:nc_photos/entity/file.dart';
|
||||||
import 'package:nc_photos/entity/file/data_source.dart';
|
import 'package:nc_photos/entity/file/data_source.dart';
|
||||||
import 'package:nc_photos/entity/file_util.dart' as file_util;
|
import 'package:nc_photos/entity/file_util.dart' as file_util;
|
||||||
|
@ -216,11 +215,10 @@ class _ArchiveViewerState extends State<ArchiveViewer>
|
||||||
clearSelectedItems();
|
clearSelectedItems();
|
||||||
});
|
});
|
||||||
final fileRepo = FileRepo(FileCachedDataSource());
|
final fileRepo = FileRepo(FileCachedDataSource());
|
||||||
final albumRepo = AlbumRepo(AlbumCachedDataSource());
|
|
||||||
final failures = <File>[];
|
final failures = <File>[];
|
||||||
for (final f in selectedFiles) {
|
for (final f in selectedFiles) {
|
||||||
try {
|
try {
|
||||||
await UpdateProperty(fileRepo, albumRepo)
|
await UpdateProperty(fileRepo)
|
||||||
.updateIsArchived(widget.account, f, false);
|
.updateIsArchived(widget.account, f, false);
|
||||||
} catch (e, stacktrace) {
|
} catch (e, stacktrace) {
|
||||||
_log.shout(
|
_log.shout(
|
||||||
|
|
|
@ -408,11 +408,10 @@ class _HomePhotosState extends State<HomePhotos>
|
||||||
clearSelectedItems();
|
clearSelectedItems();
|
||||||
});
|
});
|
||||||
final fileRepo = FileRepo(FileCachedDataSource());
|
final fileRepo = FileRepo(FileCachedDataSource());
|
||||||
final albumRepo = AlbumRepo(AlbumCachedDataSource());
|
|
||||||
final failures = <File>[];
|
final failures = <File>[];
|
||||||
for (final f in selectedFiles) {
|
for (final f in selectedFiles) {
|
||||||
try {
|
try {
|
||||||
await UpdateProperty(fileRepo, albumRepo)
|
await UpdateProperty(fileRepo)
|
||||||
.updateIsArchived(widget.account, f, true);
|
.updateIsArchived(widget.account, f, true);
|
||||||
} catch (e, stacktrace) {
|
} catch (e, stacktrace) {
|
||||||
_log.shout(
|
_log.shout(
|
||||||
|
|
Loading…
Reference in a new issue