changeUserLanguage method

  1. @override
Future<bool?> changeUserLanguage(
  1. String lang
)
override

Returns true if the user's language preference in the backend is changed to the language lang.

Throws an InvalidLanguage if lang is null or incorrect language code.

Throws a NotLoggedInUser if the user is not logged in.

If successful, updates the lang field of the current sessionStatus.

Implementation

@override
Future<bool?> changeUserLanguage(String lang) async {
  if (lang.trim().isEmpty || lang.trim().length > 2) {
    throw InvalidLanguage();
  }

  final sessionStatusInfo = getSession();
  if (sessionStatusInfo == null || sessionStatusInfo.loggedIn != true) {
    throw NotLoggedInUser();
  }

  final response = await getCore().model.setValue(
      User(), sessionStatusInfo.user, 'language', lang.toLowerCase());

  if (response.isSuccess) {
    sessionStatusInfo.lang = lang;
    updateSession(
        loggedIn: response.isSuccess, sessionStatus: sessionStatusInfo);
    return sessionStatusInfo.loggedIn;
  }
  return false;
}