ente/lib/utils/magic_util.dart

69 lines
2.1 KiB
Dart
Raw Normal View History

2021-10-26 10:37:14 +00:00
import 'package:flutter/widgets.dart';
import 'package:logging/logging.dart';
import 'package:photos/core/event_bus.dart';
import 'package:photos/events/force_reload_home_gallery_event.dart';
import 'package:photos/models/file.dart';
import 'package:photos/models/magic_metadata.dart';
import 'package:photos/services/file_magic_service.dart';
import 'package:photos/utils/dialog_util.dart';
import 'package:photos/utils/toast_util.dart';
final _logger = Logger('MagicUtil');
Future<void> changeVisibility(
BuildContext context, List<File> files, int newVisibility) async {
final dialog = createProgressDialog(context,
newVisibility == kVisibilityArchive ? "archiving..." : "unarchiving...");
await dialog.show();
try {
await FileMagicService.instance.changeVisibility(files, newVisibility);
2021-10-29 22:18:24 +00:00
showShortToast(newVisibility == kVisibilityArchive
? "successfully archived"
: "successfully unarchived");
2021-10-26 10:37:14 +00:00
await dialog.hide();
} catch (e, s) {
_logger.severe("failed to update file visibility", e, s);
await dialog.hide();
rethrow;
}
}
Future<bool> editTime(
BuildContext context, List<File> files, int editedTime) async {
try {
await _updatePublicMetadata(
context, files, kPubMagicKeyEditedTime, editedTime);
return true;
} catch (e, s) {
showToast('something went wrong');
return false;
}
}
Future<void> _updatePublicMetadata(
BuildContext context, List<File> files, String key, dynamic value) async {
if (files.isEmpty) {
return;
}
2021-10-27 07:21:40 +00:00
final dialog = createProgressDialog(context, 'please wait...');
2021-10-26 10:37:14 +00:00
await dialog.show();
try {
Map<String, dynamic> update = {key: value};
await FileMagicService.instance.updatePublicMagicMetadata(files, update);
2021-10-29 22:18:24 +00:00
showShortToast('done');
2021-10-26 10:37:14 +00:00
await dialog.hide();
if (_shouldReloadGallery(key)) {
Bus.instance.fire(ForceReloadHomeGalleryEvent());
}
} catch (e, s) {
_logger.severe("failed to update $key = $value", e, s);
await dialog.hide();
rethrow;
}
}
bool _shouldReloadGallery(String key) {
return key == kPubMagicKeyEditedTime;
}