handle method

  1. @override
Future<bool> handle(
  1. Report report,
  2. BuildContext? context
)
override

Method called when report has been accepted by user

Implementation

@override
Future<bool> handle(Report report, BuildContext? context) async {
  try {
    if (!(await CatcherUtils.isInternetConnectionAvailable())) {
      _printLog('No internet connection available');
      return false;
    }
    var message = '';
    if (customMessageBuilder != null) {
      message = await customMessageBuilder!(report);
    } else {
      message = _buildMessage(report);
    }

    final data = {
      'text': message,
      'channel': channel,
      'username': username,
      'icon_emoji': iconEmoji,
    };
    _printLog('Sending request to Slack server...');
    final response = await _dio.post<dynamic>(webhookUrl, data: data);
    _printLog(
      'Server responded with code: ${response.statusCode} and message:'
      ' ${response.statusMessage}',
    );
    final statusCode = response.statusCode ?? 0;
    return statusCode >= 200 && statusCode < 300;
  } catch (exception) {
    _printLog('Failed to send slack message: $exception');
    return false;
  }
}