Skip to content

Commit b331013

Browse files
fixup! TF-3308 Integrate super_drag_and_drop
1 parent b70ea00 commit b331013

File tree

1 file changed

+26
-20
lines changed

1 file changed

+26
-20
lines changed

lib/features/composer/presentation/widgets/web/local_file_drop_zone_widget.dart

Lines changed: 26 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,12 +10,13 @@ import 'package:flutter_svg/flutter_svg.dart';
1010
import 'package:model/upload/file_info.dart';
1111
import 'package:super_clipboard/super_clipboard.dart';
1212
import 'package:super_drag_and_drop/super_drag_and_drop.dart';
13+
import 'package:tmail_ui_user/features/composer/presentation/mixin/drag_drog_file_mixin.dart';
1314
import 'package:tmail_ui_user/features/composer/presentation/styles/web/drop_zone_widget_style.dart';
1415
import 'package:tmail_ui_user/main/localizations/app_localizations.dart';
1516

1617
typedef OnSuperFileDrop = void Function(List<FileInfo> fileInfos);
1718

18-
class LocalFileDropZoneWidget extends StatelessWidget {
19+
class LocalFileDropZoneWidget extends StatelessWidget with DragDropFileMixin {
1920

2021
final ImagePaths imagePaths;
2122
final double? width;
@@ -44,7 +45,7 @@ class LocalFileDropZoneWidget extends StatelessWidget {
4445
return DropRegion(
4546
formats: allowedFormats,
4647
onDropOver: (_) => DropOperation.copy,
47-
onPerformDrop: _onFileDrop,
48+
onPerformDrop: (performDropEvent) => _onFileDrop(context, performDropEvent),
4849
hitTestBehavior: HitTestBehavior.opaque,
4950
child: SizedBox(
5051
width: width,
@@ -85,25 +86,30 @@ class LocalFileDropZoneWidget extends StatelessWidget {
8586
);
8687
}
8788

88-
Future<void> _onFileDrop(PerformDropEvent performDropEvent) async {
89-
final items = performDropEvent.session.items;
90-
final listFileInfo = await Future.wait(items.map(
91-
(item) async {
92-
final dataReaderFile = await item.dataReader?.getFileFuture(
93-
SimpleFileFormat(mimeTypes: item.platformFormats)
94-
);
95-
final bytes = await dataReaderFile?.readAll();
96-
return FileInfo(
97-
fileName: dataReaderFile?.fileName ?? await item.dataReader?.getSuggestedName() ?? '',
98-
fileSize: bytes?.length ?? 0,
99-
bytes: bytes,
100-
isInline: item.platformFormats.firstOrNull?.startsWith(Constant.imageType),
101-
type: item.platformFormats.firstOrNull ?? Constant.octetStreamMimeType,
102-
);
89+
Future<void> _onFileDrop(BuildContext context, PerformDropEvent performDropEvent) async {
90+
await showFutureLoadingDialogFullScreen(
91+
context: context,
92+
future: () async {
93+
final items = performDropEvent.session.items;
94+
final listFileInfo = await Future.wait(items.map(
95+
(item) async {
96+
final dataReaderFile = await item.dataReader?.getFileFuture(
97+
SimpleFileFormat(mimeTypes: item.platformFormats)
98+
);
99+
final bytes = await dataReaderFile?.readAll();
100+
return FileInfo(
101+
fileName: dataReaderFile?.fileName ?? await item.dataReader?.getSuggestedName() ?? '',
102+
fileSize: bytes?.length ?? 0,
103+
bytes: bytes,
104+
isInline: item.platformFormats.firstOrNull?.startsWith(Constant.imageType),
105+
type: item.platformFormats.firstOrNull ?? Constant.octetStreamMimeType,
106+
);
107+
},
108+
));
109+
110+
onSuperDrop?.call(listFileInfo);
103111
},
104-
));
105-
106-
onSuperDrop?.call(listFileInfo);
112+
);
107113
}
108114
}
109115

0 commit comments

Comments
 (0)