getState method
Fetches the current split payment state by split payment ID.
Calls GET /api/SplitPayment/state/{splitPaymentId}.
Returns null when no session exists for the given ID.
Implementation
Future<SplitPaymentStateResponse?> getState(
String splitPaymentId,
String businessId, {
String? operationId,
}) async {
return _monitoring.monitorAction<SplitPaymentStateResponse?>(
actionName: 'split_get_state',
provider: 'split_payments',
action: (_) async {
final url =
'$_paymentsUrl/SplitPayment/state/$splitPaymentId?businessId=$businessId';
_logger.info(
this,
'getState: fetching — splitPaymentId=$splitPaymentId, '
'operationId=$operationId',
);
try {
final response = await _httpClient.get(
url: url,
user: _authService.user,
);
if (response != null && response.statusCode == 200) {
final data = response.data is String
? jsonDecode(response.data as String) as Map<String, dynamic>
: response.data as Map<String, dynamic>;
_logger.info(
this,
'getState: succeeded — '
'state=${data['state']}, splitPaymentId=$splitPaymentId, '
'operationId=$operationId',
);
return SplitPaymentStateResponse.fromJson(data);
}
if (response != null && response.statusCode == 404) {
_logger.info(
this,
'getState: no session found for splitPaymentId=$splitPaymentId',
);
return null;
}
_logger.error(
this,
'getState failed: ${response?.statusCode} ${response?.statusMessage}',
);
throw PlatformException(
code: 'GET_STATE_FAILED',
message:
'Failed to get split state: ${response?.statusCode ?? 'no response'}',
);
} catch (e, st) {
_logger.error(
this,
'Error getting split state: $e',
error: e,
stackTrace: st,
);
rethrow;
}
},
logAnalytics: true,
analyticsEventName: 'split_state_fetched',
);
}