changeCommunicationSetting function

Future<bool> changeCommunicationSetting({
  1. required CommunicationType channel,
  2. required bool isAllowed,
  3. required BuildContext context,
  4. required Map<String, bool>? settings,
  5. required Function communicationSettingsFunc,
})

Change Communication Settings

Implementation

Future<bool> changeCommunicationSetting(
    {required CommunicationType channel,
    required bool isAllowed,
    required BuildContext context,
    required Map<String, bool>? settings,
    required Function communicationSettingsFunc}) async {
  final Map<String, bool> variables = <String, bool>{
    'allowEmail': settings!['allowEmail']!,
    'allowWhatsApp': settings['allowWhatsApp']!,
    'allowTextSMS': settings['allowText']!,
    'allowPush': settings['allowPush']!,
  };
  final IGraphQlClient client = AppWrapperBase.of(context)!.graphQLClient;

  variables[channel.toShortString()] = isAllowed;

  /// fetch the data from the api
  final Response result = await client.query(
    setCommSettingsMutation,
    variables,
  );

  final Map<String, dynamic> response = client.toMap(result);
  // /// check if the response has timeout metadata. If yes, return an error to
  // /// handled correctly
  if (result.statusCode == 408) {
    return false;
  }

  // // check for errors in the data here
  if (client.parseError(response) != null) {
    return false;
  }
  communicationSettingsFunc(communicationSettings: variables);
  return true;
}