Skip to content

Commit 5e783c0

Browse files
committed
TW-1699: change avatar updated
1 parent 400fda4 commit 5e783c0

File tree

3 files changed

+58
-6
lines changed

3 files changed

+58
-6
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1+
import 'package:file_picker/file_picker.dart';
12
import 'package:file_selector/file_selector.dart';
23
import 'package:matrix/matrix.dart';
34

45
extension XFileExtension on XFile {
5-
6-
Future<MatrixFile> toMatrixFile() async{
6+
Future<MatrixFile> toMatrixFile() async {
77
return MatrixFile.fromMimeType(
88
bytes: await readAsBytes(),
99
mimeType: mimeType,
@@ -12,4 +12,13 @@ extension XFileExtension on XFile {
1212
sizeInBytes: await length(),
1313
);
1414
}
15-
}
15+
16+
Future<PlatformFile> toPlatformFile() async {
17+
return PlatformFile.fromMap({
18+
'name': name,
19+
'path': path,
20+
'bytes': await readAsBytes(),
21+
'size': await length(),
22+
});
23+
}
24+
}

lib/pages/settings_dashboard/settings_profile/settings_profile.dart

+44-1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import 'package:fluffychat/di/global/get_it_initializer.dart';
77
import 'package:fluffychat/domain/app_state/room/upload_content_state.dart';
88
import 'package:fluffychat/domain/app_state/settings/update_profile_failure.dart';
99
import 'package:fluffychat/domain/app_state/settings/update_profile_success.dart';
10+
import 'package:fluffychat/domain/model/extensions/xfile_extension.dart';
1011
import 'package:fluffychat/domain/usecase/room/upload_content_for_web_interactor.dart';
1112
import 'package:fluffychat/domain/usecase/room/upload_content_interactor.dart';
1213
import 'package:fluffychat/domain/usecase/settings/update_profile_interactor.dart';
@@ -33,6 +34,8 @@ import 'package:linagora_design_flutter/images_picker/asset_counter.dart';
3334
import 'package:linagora_design_flutter/linagora_design_flutter.dart';
3435
import 'package:matrix/matrix.dart';
3536
import 'package:flutter_gen/gen_l10n/l10n.dart';
37+
import 'package:file_selector/file_selector.dart';
38+
import 'package:path_provider/path_provider.dart';
3639
import 'package:wechat_camera_picker/wechat_camera_picker.dart';
3740

3841
class 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();

lib/pages/settings_dashboard/settings_profile/settings_profile_view_mobile.dart

+2-2
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ class SettingsProfileViewMobile extends StatelessWidget {
9393
);
9494
}
9595
if (success is GetAvatarInBytesUIStateSuccess &&
96-
PlatformInfos.isWeb) {
96+
PlatformInfos.isWebOrDesktop) {
9797
if (success.filePickerResult == null ||
9898
success.filePickerResult?.files.single.bytes ==
9999
null) {
@@ -160,7 +160,7 @@ class SettingsProfileViewMobile extends StatelessWidget {
160160
) {
161161
return GestureDetector(
162162
onTap: () {
163-
if (PlatformInfos.isWeb) {
163+
if (PlatformInfos.isWebOrDesktop) {
164164
menuController.isOpen
165165
? menuController.close()
166166
: menuController.open();

0 commit comments

Comments
 (0)