addSubscription method
Add new subscription
Implementation
Future<void> addSubscription(T sub, {bool saveChanges=true}) async {
_logs?.print('Adding new subscription ext:${sub.toExt} accId:${sub.fromAccId}');
try {
//When accUri present - model loaded from json, search accId as it might be changed
if(sub.accUri.isNotEmpty) { sub.fromAccId = _accountsModel.getAccId(sub.accUri); }
else { sub.accUri = _accountsModel.getUri(sub.fromAccId); }
//Add
sub.mySubscrId = await SiprixVoipSdk().addSubscription(sub) ?? 0;
_integrateAddedSubscription(sub, saveChanges);
} on PlatformException catch (err) {
if(err.code == SiprixVoipSdk.eSubscrAlreadyExist.toString()) {
int existingSubscrId = err.details;
int idx = _subscriptions.indexWhere((s) => (s.mySubscrId == existingSubscrId));
if(idx==-1) {
//This case is possible in Android when:
// - activity started as usual and initialized SDK Core
// - activity destroyed, but SDK Core is still running (as Service)
// - activity started again, loaded saved state and has to sync it
sub.mySubscrId = existingSubscrId;
_integrateAddedSubscription(sub, saveChanges);
}
}
else {
_logs?.print('Can\'t add subscription: ${err.code} ${err.message} ');
return Future.error((err.message==null) ? err.code : err.message!);
}
} on Exception catch (err) {
_logs?.print('Can\'t add subscription: ${err.toString()}');
return Future.error(err.toString());
}
}