uploadAvatar function

Future<void> uploadAvatar(
  1. dynamic ref,
  2. dynamic context,
  3. String roomId
)

Implementation

Future<void> uploadAvatar(
  WidgetRef ref,
  BuildContext context,
  String roomId,
) async {
  final room = await ref.read(maybeRoomProvider(roomId).future);
  if (room == null || !context.mounted) return;
  FilePickerResult? result = await pickAvatar(context: context);
  if (result == null || result.files.isEmpty) return;
  try {
    if (!context.mounted) return;
    EasyLoading.show(status: L10n.of(context).avatarUploading);
    final file = result.files.first;
    if (file.path != null) await room.uploadAvatar(file.path!);
    // close loading
    EasyLoading.dismiss();
  } catch (e, s) {
    _log.severe('Failed to upload avatar', e, s);
    if (!context.mounted) {
      EasyLoading.dismiss();
      return;
    }
    EasyLoading.showError(
      L10n.of(context).failedToUploadAvatar(e),
      duration: const Duration(seconds: 3),
    );
  }
}