cloudPosTransactionStatusFromString function

CloudPosTransactionStatus cloudPosTransactionStatusFromString(
  1. String value
)

Parses a status string from the API into a CloudPosTransactionStatus.

Implementation

CloudPosTransactionStatus cloudPosTransactionStatusFromString(String value) {
  switch (value) {
    case 'Staged':
      return CloudPosTransactionStatus.staged;
    case 'Pushed':
      return CloudPosTransactionStatus.pushed;
    case 'PendingOnTerminal':
      return CloudPosTransactionStatus.pendingOnTerminal;
    case 'CardPresented':
      return CloudPosTransactionStatus.cardPresented;
    case 'Approved':
      return CloudPosTransactionStatus.approved;
    case 'Declined':
      return CloudPosTransactionStatus.declined;
    case 'TimedOut':
      return CloudPosTransactionStatus.timedOut;
    case 'Error':
      return CloudPosTransactionStatus.error;
    case 'InProgress':
      return CloudPosTransactionStatus.pendingOnTerminal;
    case 'Abandoned':
      return CloudPosTransactionStatus.abandoned;
    case 'Completed':
      return CloudPosTransactionStatus.completed;
    case 'Failed':
      return CloudPosTransactionStatus.failed;
    case 'TerminalBusy':
      return CloudPosTransactionStatus.terminalBusy;
    case 'Cancelled':
      return CloudPosTransactionStatus.failed;
    case 'Reassigned':
      return CloudPosTransactionStatus.staged;
    default:
      // Defensive: unrecognised statuses are treated as non-terminal so
      // the polling loop keeps running instead of immediately stopping.
      assert(() {
        debugPrint(
          '### cloudpos WARNING: unrecognised transaction status "$value", '
          'defaulting to staged',
        );
        return true;
      }());
      return CloudPosTransactionStatus.staged;
  }
}