diff --git a/lib/model/binding.dart b/lib/model/binding.dart index fb3add46da..6d52fa0086 100644 --- a/lib/model/binding.dart +++ b/lib/model/binding.dart @@ -181,21 +181,21 @@ abstract class ZulipBinding { AndroidNotificationHostApi get androidNotificationHost; /// Pick files from the media library, via package:file_picker. - /// - /// This wraps [file_picker.pickFiles]. - Future pickFiles({ - bool allowMultiple, - bool withReadStream, - file_picker.FileType type, - }); + /// + /// This wraps [file_picker.pickFiles]. + Future pickFiles({ + bool allowMultiple, + bool withReadStream, + file_picker.FileType type, + }); - /// Pick files from the camera or media library, via package:image_picker. - /// - /// This wraps [image_picker.pickImage]. - Future pickImage({ - required image_picker.ImageSource source, - bool requestFullMetadata, - }); + /// Pick files from the camera or media library, via package:image_picker. + /// + /// This wraps [image_picker.pickImage]. + Future pickImage({ + required image_picker.ImageSource source, + bool requestFullMetadata, + }); /// Enables or disables keeping the screen on, via package:wakelock_plus. /// @@ -473,12 +473,12 @@ class LiveZulipBinding extends ZulipBinding { Future pickFiles({ bool allowMultiple = false, bool withReadStream = false, - file_picker.FileType type = file_picker.FileType.any, + file_picker.FileType type = file_picker.FileType.image, // Allow any type of file for attachment icon }) async { return file_picker.FilePicker.platform.pickFiles( allowMultiple: allowMultiple, withReadStream: withReadStream, - type: type, + type: type, // This allows multiple types of files (images, documents, etc.) ); } @@ -487,10 +487,13 @@ class LiveZulipBinding extends ZulipBinding { required image_picker.ImageSource source, bool requestFullMetadata = true, }) async { - return image_picker.ImagePicker() - .pickImage(source: source, requestFullMetadata: requestFullMetadata); + return image_picker.ImagePicker().pickImage( + source: source, // Only images can be selected, from gallery or camera + requestFullMetadata: requestFullMetadata, + ); } + @override Future toggleWakelock({required bool enable}) async { return wakelock_plus.WakelockPlus.toggle(enable: enable); diff --git a/lib/widgets/compose_box.dart b/lib/widgets/compose_box.dart index bfd91d6afd..c7cca8a83f 100644 --- a/lib/widgets/compose_box.dart +++ b/lib/widgets/compose_box.dart @@ -1003,11 +1003,15 @@ abstract class _AttachUploadsButton extends StatelessWidget { } } -Future> _getFilePickerFiles(BuildContext context, FileType type) async { +Future> _getFilePickerFiles(BuildContext context, FileType type, {bool withReadStream= false,}) async { FilePickerResult? result; try { result = await ZulipBinding.instance - .pickFiles(allowMultiple: true, withReadStream: true, type: type); + .pickFiles( + allowMultiple: true, + withReadStream: withReadStream, + type: type, + ); } catch (e) { if (!context.mounted) return []; final zulipLocalizations = ZulipLocalizations.of(context); @@ -1086,7 +1090,7 @@ class _AttachMediaButton extends _AttachUploadsButton { @override Future> getFiles(BuildContext context) async { // TODO(#114): This doesn't give quite the right UI on Android. - return _getFilePickerFiles(context, FileType.media); + return _getFilePickerFiles(context, FileType.image,withReadStream: true); } } diff --git a/test/widgets/compose_box_test.dart b/test/widgets/compose_box_test.dart index f979c687de..3f9ae58e85 100644 --- a/test/widgets/compose_box_test.dart +++ b/test/widgets/compose_box_test.dart @@ -955,7 +955,7 @@ void main() { await tester.pump(); final call = testBinding.takePickFilesCalls().single; check(call.allowMultiple).equals(true); - check(call.type).equals(FileType.media); + check(call.type).equals(FileType.image); checkNoErrorDialog(tester);