@@ -7,6 +7,7 @@ import 'package:fluffychat/di/global/get_it_initializer.dart';
77import 'package:fluffychat/domain/app_state/room/upload_content_state.dart' ;
88import 'package:fluffychat/domain/app_state/settings/update_profile_failure.dart' ;
99import 'package:fluffychat/domain/app_state/settings/update_profile_success.dart' ;
10+ import 'package:fluffychat/domain/model/extensions/xfile_extension.dart' ;
1011import 'package:fluffychat/domain/usecase/room/upload_content_for_web_interactor.dart' ;
1112import 'package:fluffychat/domain/usecase/room/upload_content_interactor.dart' ;
1213import 'package:fluffychat/domain/usecase/settings/update_profile_interactor.dart' ;
@@ -33,6 +34,8 @@ import 'package:linagora_design_flutter/images_picker/asset_counter.dart';
3334import 'package:linagora_design_flutter/linagora_design_flutter.dart' ;
3435import 'package:matrix/matrix.dart' ;
3536import 'package:flutter_gen/gen_l10n/l10n.dart' ;
37+ import 'package:file_selector/file_selector.dart' ;
38+ import 'package:path_provider/path_provider.dart' ;
3639import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
3740
3841class SettingsProfile extends StatefulWidget {
@@ -180,7 +183,43 @@ class SettingsProfileController extends State<SettingsProfile>
180183 ),
181184 );
182185 Logs ().d (
183- 'SettingsProfile::_getImageOnWeb(): AvatarWebNotifier - $result ' ,
186+ 'SettingsProfile::_getImageOnWeb(): AvatarNotifier - $result ' ,
187+ );
188+ }
189+ }
190+
191+ void _getImageOnDesktop (
192+ BuildContext context,
193+ ) async {
194+ const XTypeGroup typeGroup = XTypeGroup (
195+ label: 'images' ,
196+ extensions: < String > ['jpg' , 'png' ],
197+ );
198+ final String initialDirectory =
199+ (await getApplicationDocumentsDirectory ()).path;
200+
201+ final XFile ? result = await openFile (
202+ initialDirectory: initialDirectory,
203+ acceptedTypeGroups: [typeGroup],
204+ );
205+
206+ Logs ().d (
207+ 'SettingsProfile::_getImageOnDesktop(): FilePickerResult - ${result ?.path }' ,
208+ );
209+
210+ if (result == null ) {
211+ return ;
212+ } else {
213+ if (! isEditedProfileNotifier.value) {
214+ isEditedProfileNotifier.toggle ();
215+ }
216+ settingsProfileUIState.value = Right <Failure , Success >(
217+ GetAvatarInBytesUIStateSuccess (
218+ filePickerResult: FilePickerResult ([await result.toPlatformFile ()]),
219+ ),
220+ );
221+ Logs ().d (
222+ 'SettingsProfile::_getImageOnDesktop(): AvatarNotifier - $result ' ,
184223 );
185224 }
186225 }
@@ -190,6 +229,10 @@ class SettingsProfileController extends State<SettingsProfile>
190229 _getImageOnWeb (context);
191230 return ;
192231 }
232+ if (PlatformInfos .isDesktop) {
233+ _getImageOnDesktop (context);
234+ return ;
235+ }
193236 final currentPermissionPhotos = await getCurrentMediaPermission ();
194237 if (currentPermissionPhotos != null ) {
195238 final imagePickerController = createImagePickerController ();
0 commit comments