Surface reason for ignore on long press
This commit is contained in:
parent
00f49dd36e
commit
58b17ac20e
|
@ -47,6 +47,14 @@ class IgnoredFilesService {
|
|||
return false;
|
||||
}
|
||||
|
||||
String? getUploadSkipReason(Map<String, String> idToReasonMap, File file) {
|
||||
final id = _getIgnoreID(file.localID, file.deviceFolder, file.title);
|
||||
if (id != null && id.isNotEmpty) {
|
||||
return idToReasonMap[id];
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
Future<bool> shouldSkipUploadAsync(File file) async {
|
||||
final ignoredID = await idToIgnoreReasonMap;
|
||||
return shouldSkipUpload(ignoredID, file);
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
import "dart:async";
|
||||
|
||||
import "package:flutter/foundation.dart";
|
||||
import "package:flutter/material.dart";
|
||||
import "package:flutter_animate/flutter_animate.dart";
|
||||
import "package:photos/core/event_bus.dart";
|
||||
|
@ -7,12 +8,14 @@ import "package:photos/db/files_db.dart";
|
|||
import "package:photos/events/collection_updated_event.dart";
|
||||
import "package:photos/events/files_updated_event.dart";
|
||||
import "package:photos/models/file.dart";
|
||||
import "package:photos/models/ignored_file.dart";
|
||||
import "package:photos/services/collections_service.dart";
|
||||
import "package:photos/services/hidden_service.dart";
|
||||
import "package:photos/services/ignored_files_service.dart";
|
||||
import "package:photos/services/remote_sync_service.dart";
|
||||
import "package:photos/services/sync_service.dart";
|
||||
import "package:photos/ui/common/loading_widget.dart";
|
||||
import "package:photos/utils/toast_util.dart";
|
||||
|
||||
class UploadIconWidget extends StatefulWidget {
|
||||
final File file;
|
||||
|
@ -27,12 +30,14 @@ class UploadIconWidget extends StatefulWidget {
|
|||
|
||||
class _UpdateIconWidgetState extends State<UploadIconWidget> {
|
||||
late StreamSubscription<CollectionUpdatedEvent> _firstImportEvent;
|
||||
late IgnoredFilesService ignoreService;
|
||||
bool isUploadedNow = false;
|
||||
bool isBeingUploaded = false;
|
||||
|
||||
@override
|
||||
void initState() {
|
||||
super.initState();
|
||||
ignoreService = IgnoredFilesService.instance;
|
||||
_firstImportEvent =
|
||||
Bus.instance.on<CollectionUpdatedEvent>().listen((event) {
|
||||
if (mounted &&
|
||||
|
@ -80,17 +85,30 @@ class _UpdateIconWidgetState extends State<UploadIconWidget> {
|
|||
}
|
||||
return const SizedBox.shrink();
|
||||
}
|
||||
return FutureBuilder<bool>(
|
||||
future: IgnoredFilesService.instance.shouldSkipUploadAsync(widget.file),
|
||||
return FutureBuilder<Map<String,String>>(
|
||||
future: ignoreService.idToIgnoreReasonMap,
|
||||
builder: (context, snapshot) {
|
||||
if (snapshot.hasData) {
|
||||
final bool isIgnored = snapshot.data!;
|
||||
final Map<String,String> idsToReasonMap = snapshot.data!;
|
||||
final ignoreReason = ignoreService.getUploadSkipReason(idsToReasonMap, widget.file);
|
||||
final bool isIgnored = ignoreReason != null;
|
||||
final bool isQueuedForUpload =
|
||||
!isIgnored && widget.file.collectionID != null;
|
||||
if (isQueuedForUpload && isBeingUploaded) {
|
||||
return const EnteLoadingWidget();
|
||||
}
|
||||
return IconButton(
|
||||
if (isIgnored && kDebugMode) {
|
||||
showToast(
|
||||
context,
|
||||
'Upload is ignored due to $ignoreReason',
|
||||
);
|
||||
}
|
||||
return Tooltip(
|
||||
message: isIgnored
|
||||
? "Tap to upload, upload is currently ignored due "
|
||||
"to $ignoreReason"
|
||||
: "Tap to upload",
|
||||
child: IconButton(
|
||||
icon: const Icon(
|
||||
Icons.upload_rounded,
|
||||
color: Colors.white,
|
||||
|
@ -113,6 +131,7 @@ class _UpdateIconWidgetState extends State<UploadIconWidget> {
|
|||
});
|
||||
}
|
||||
},
|
||||
),
|
||||
);
|
||||
} else {
|
||||
return const SizedBox.shrink();
|
||||
|
|
Loading…
Reference in a new issue