🐛 Fix autohide of upload

This commit is contained in:
2025-11-18 22:52:45 +08:00
parent 5e61805db7
commit b77a832d8a

View File

@@ -7,7 +7,6 @@ import 'package:hooks_riverpod/hooks_riverpod.dart';
import 'package:island/models/drive_task.dart'; import 'package:island/models/drive_task.dart';
import 'package:island/pods/upload_tasks.dart'; import 'package:island/pods/upload_tasks.dart';
import 'package:island/services/responsive.dart'; import 'package:island/services/responsive.dart';
import 'package:island/talker.dart';
import 'package:material_symbols_icons/material_symbols_icons.dart'; import 'package:material_symbols_icons/material_symbols_icons.dart';
import 'package:easy_localization/easy_localization.dart'; import 'package:easy_localization/easy_localization.dart';
import 'package:styled_widget/styled_widget.dart'; import 'package:styled_widget/styled_widget.dart';
@@ -44,32 +43,32 @@ class UploadOverlay extends HookConsumerWidget {
); );
// Auto-hide timer effect // Auto-hide timer effect
useEffect( useEffect(() {
() { // Reset pendingHide if there are unfinished tasks
final hasUnfinishedTasks = activeTasks.any(
(task) =>
task.status == DriveTaskStatus.pending ||
task.status == DriveTaskStatus.inProgress ||
task.status == DriveTaskStatus.paused,
);
if (hasUnfinishedTasks && pendingHide.value) {
pendingHide.value = false;
}
autoHideTimer.value?.cancel(); autoHideTimer.value?.cancel();
if (allFinished && if (allFinished &&
activeTasks.isNotEmpty && activeTasks.isNotEmpty &&
!isExpandedLocal.value && !isExpandedLocal.value &&
!pendingHide.value) { !pendingHide.value) {
talker.info('[UploadOverlay] Setting auto hide timer...');
autoHideTimer.value = Timer(const Duration(seconds: 3), () { autoHideTimer.value = Timer(const Duration(seconds: 3), () {
talker.info('[UploadOverlay] Ready to hide!');
pendingHide.value = true; pendingHide.value = true;
}); });
} else { } else {
talker.info('[UploadOverlay] Remove auto hide timer...');
autoHideTimer.value?.cancel(); autoHideTimer.value?.cancel();
autoHideTimer.value = null; autoHideTimer.value = null;
} }
return null; return null;
}, }, [allFinished, activeTasks, isExpandedLocal.value, pendingHide.value]);
[
allFinished,
activeTasks.length,
isExpandedLocal.value,
pendingHide.value,
],
);
final isVisible = final isVisible =
(isVisibleOverride.value ?? activeTasks.isNotEmpty) && (isVisibleOverride.value ?? activeTasks.isNotEmpty) &&
!pendingHide.value; !pendingHide.value;