import 'dart:io';

import 'package:comunic/utils/intl_utils.dart';
import 'package:flutter/material.dart';
import 'package:image_picker/image_picker.dart';

/// Files utilities
///
/// @author Pierre HUBERT

enum _ChooseImageSource { GALLERY, CAMERA }

/// Ask the user to choose an image, either from the gallery or using the camera
///
/// Returns null in case of failure
Future<File> pickImage(BuildContext context) async {
  /// First, we ask the user to choose between image picker and camera
  final result = await showDialog<_ChooseImageSource>(
    context: context,
    builder: (c) {
      return AlertDialog(
        title: Text(tr("Choose an image")),
        actions: <Widget>[
          //Gallery
          FlatButton(
            onPressed: () => Navigator.pop(context, _ChooseImageSource.GALLERY),
            child: Text(
              tr("Image gallery").toUpperCase(),
            ),
          ),

          // Camera
          FlatButton(
            onPressed: () => Navigator.pop(context, _ChooseImageSource.CAMERA),
            child: Text(
              tr("Camera").toUpperCase(),
            ),
          ),
        ],
      );
    },
  );

  if (result == null) return null;

  return await ImagePicker.pickImage(
      source: result == _ChooseImageSource.CAMERA
          ? ImageSource.camera
          : ImageSource.gallery);
}