setStoneTransaction method

void setStoneTransaction(
  1. String message
)

Implementation

void setStoneTransaction(String message) {
  try {
    if (message.contains('{')) {
      final map = json.decode(message);
      log('setStoneTransaction: $map');
      log('***METHOD: ${map['method']}');

      switch (map['method']) {
        case 'active':
          final message = (map['message'] ?? '').toString().toLowerCase();
          if (message.contains('terminal ativado')) {
            lastStatus = const StoneStatusActivate();
          } else {
            lastStatus = StoneStatusActivateError(message: map['message'] ?? 'Erro ao ativar o terminal');
          }
          _emit(lastStatus!);
          return;
        case 'cancel':
          lastStatus = StoneStatusCanceled(cancelExtraData: map);
          _emit(lastStatus!);
          return;
        case 'transaction':
          final transaction = StoneTransactionModel.fromMap(map);
          lastStatus = StoneStatusTransaction(transaction: transaction);
          _emit(lastStatus!);
          return;
        case 'QRCode':
          final transaction = StoneTransactionModel.fromMap(map);
          lastStatus = StoneQRCodeTransaction(transaction: transaction);
          _emit(lastStatus!);
          return;
        case 'printerTransaction':
          lastStatus = const StonePrinterCustomer();
          _emit(lastStatus!);
          return;
      }
    }
  } catch (e) {
    log('***Erro setStoneTransaction: $e');
  }
}