import 'package:connectivity/connectivity.dart';
import 'package:flutter/cupertino.dart';
import 'package:location/location.dart';

import 'app_shared_preferences.dart';
import 'app_toast.dart';

AppSharedPreferences sharedPref = new AppSharedPreferences();

class Utils {
  ///show  custom Error Toast
  ///  [message] to show for user
  static showErrorToast([String message]) {
    String localMsg = generateContactAdminMessage();
    if (message != null) {
      localMsg = message.toString();
    }
    AppToast.showErrorToast(message: localMsg);
  }

  /// Check The Internet Connection
  static Future<bool> checkConnection() async {
    ConnectivityResult connectivityResult =
        await (Connectivity().checkConnectivity());
    if ((connectivityResult == ConnectivityResult.mobile) ||
        (connectivityResult == ConnectivityResult.wifi)) {
      return true;
    } else {
      return false;
    }
  }

  /// generate Contact Admin Message
  static generateContactAdminMessage([err]) {
    String localMsg = 'Something wrong happened, please contact the admin';
    if (err != null) {
      localMsg = localMsg + '\n \n' + err.toString();
    }
    return localMsg;
  }

  /// hides the keyboard if its already open
  static hideKeyboard(BuildContext context) {
    FocusScope.of(context).unfocus();
  }

  static getLocation() async {
    Location location = new Location();
    LocationData currentLocation = await location.getLocation();
    return currentLocation;
  }

  static formatName(String name) {
    List<String> names = name.split(" ");
    List<String> formattedNamesList = [];
    names.forEach((name) {
      name = name.toLowerCase();
      name = name[0].toUpperCase() + name.substring(1);

      formattedNamesList.add(name);
    });
    return formattedNamesList.join(' ');
  }
}
