@@ -7,6 +7,7 @@ import 'package:fluffychat/di/global/get_it_initializer.dart';
7
7
import 'package:fluffychat/domain/app_state/room/upload_content_state.dart' ;
8
8
import 'package:fluffychat/domain/app_state/settings/update_profile_failure.dart' ;
9
9
import 'package:fluffychat/domain/app_state/settings/update_profile_success.dart' ;
10
+ import 'package:fluffychat/domain/model/extensions/xfile_extension.dart' ;
10
11
import 'package:fluffychat/domain/usecase/room/upload_content_for_web_interactor.dart' ;
11
12
import 'package:fluffychat/domain/usecase/room/upload_content_interactor.dart' ;
12
13
import 'package:fluffychat/domain/usecase/settings/update_profile_interactor.dart' ;
@@ -33,6 +34,8 @@ import 'package:linagora_design_flutter/images_picker/asset_counter.dart';
33
34
import 'package:linagora_design_flutter/linagora_design_flutter.dart' ;
34
35
import 'package:matrix/matrix.dart' ;
35
36
import 'package:flutter_gen/gen_l10n/l10n.dart' ;
37
+ import 'package:file_selector/file_selector.dart' ;
38
+ import 'package:path_provider/path_provider.dart' ;
36
39
import 'package:wechat_camera_picker/wechat_camera_picker.dart' ;
37
40
38
41
class SettingsProfile extends StatefulWidget {
@@ -180,7 +183,43 @@ class SettingsProfileController extends State<SettingsProfile>
180
183
),
181
184
);
182
185
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 ' ,
184
223
);
185
224
}
186
225
}
@@ -190,6 +229,10 @@ class SettingsProfileController extends State<SettingsProfile>
190
229
_getImageOnWeb (context);
191
230
return ;
192
231
}
232
+ if (PlatformInfos .isDesktop) {
233
+ _getImageOnDesktop (context);
234
+ return ;
235
+ }
193
236
final currentPermissionPhotos = await getCurrentMediaPermission ();
194
237
if (currentPermissionPhotos != null ) {
195
238
final imagePickerController = createImagePickerController ();
0 commit comments