retireSecondaryContact method

Future<Map<String, dynamic>> retireSecondaryContact({
  1. required String value,
  2. required bool isPhone,
  3. required BuildContext context,
  4. required String flag,
})

Implementation

Future<Map<String, dynamic>> retireSecondaryContact(
    {required String value,
    required bool isPhone,
    required BuildContext context,
    required String flag}) async {
  Map<String, dynamic> variables;
  if (isPhone) {
    variables = <String, dynamic>{
      'phones': <String>[value],
    };
  } else {
    variables = <String, dynamic>{
      'emails': <String>[value],
    };
  }
  try {
    final http.Response result = await client.query(
        isPhone ? retireSecondaryPhoneQuery : retireSecondaryEmailQuery,
        variables) as http.Response;
    toggleLoadingIndicator(context: context, flag: flag, show: false);
    final Map<String, dynamic> body =
        client.toMap(result) as Map<String, dynamic>;
    if (client.parseError(body) != null) {
      return <String, dynamic>{
        'status': 'error',
      };
    }

    if (isPhone) {
      /// remove the retired phone number from state
      updateStateFunc(
          context: context,
          type: StateContactType.retireSecondaryPhone,
          value: value);
    } else {
      /// remove the retired email from state
      updateStateFunc(
          context: context,
          type: StateContactType.retireSecondaryEmail,
          value: value);
    }

    return <String, dynamic>{
      'status': 'ok',
      'value': json.decode(result.body)['data'][isPhone
          ? 'retireSecondaryPhoneNumbers'
          : 'retireSecondaryEmailAddresses'],
    };
  } catch (e) {
    return <String, dynamic>{
      'status': 'error',
    };
  }
}