sseSubscribe method
Implementation
Future<void> sseSubscribe(String token, String id, String usr, String event) async {
var uri = Uri.parse(AppConstants.boraConnURL);
var params = {
'id': id,
'userID': usr,
'event': event
};
uri = uri.replace(queryParameters: params);
boraPushClient = BoraPushClient.connect(
uri: uri,
withCredentials:true,
closeOnError:true,
);
myStream = boraPushClient.stream;
myStream.listen((value) {
try{
//Conert to JSON
var jsonResp = jsonDecode(value);
if(jsonResp['response'] == 'cancelled'){
//User cancelled the request
closeConnection();
emit(state.copyWith(status: STKPushStatus.customerCanceled));
}else if(jsonResp['response'] == 'pending'){
//awaitig confirmation
emit(state.copyWith(status: STKPushStatus.awaitingConfirmation));
}else if(jsonResp['response'] == 'success'){
//The payment was received
closeConnection();
try{
BoraPushTransaction transactionData = BoraPushTransaction.fromJson(jsonResp['data']['response']);
emit(state.copyWith(status: STKPushStatus.success, transactionData: transactionData));
}catch(e){
print('Error parsing response $e');
emit(state.copyWith(status: STKPushStatus.success));
}
}
}catch(e){
emit(state.copyWith(status: STKPushStatus.error, exceptionError: '$e'));
//What to do? Retry | Close
}
});
}