addSetRelationListener method

  1. @override
void addSetRelationListener(
  1. String relationColumnName,
  2. dynamic callback, {
  3. List<String>? parentObjectIds,
  4. List? parents,
  5. void onError(
    1. String error
    )?,
  6. String? whereClause,
})
override

Implementation

@override
void addSetRelationListener(String relationColumnName, callback,
    {List<String>? parentObjectIds,
    List? parents,
    void Function(String error)? onError,
    String? whereClause}) async {
  try {
    if (_rtUrl.isEmpty) _rtUrl = (await RTLookupService.lookup())!;

    if (_rtUrl.isNotEmpty) {
      var tempObjectIds = List<String>.empty(growable: true);

      if (parents?.isNotEmpty ?? false) {
        for (var parent in parents!) {
          tempObjectIds.add(parent['objectId']);
        }
      }

      if (parentObjectIds?.isNotEmpty ?? false) {
        tempObjectIds.addAll(parentObjectIds!);
      }
      await RTListener.subscribeForRelationsChanges<T>(
        RTEventHandlers.SET.toShortString(),
        _tableName,
        relationColumnName,
        callback,
        parentObjectIds: tempObjectIds,
      );
    } else {
      if (kDebugMode) {
        print('empty url');
      }
      throw ArgumentError.value(ExceptionMessage.noInternetConnection);
    }
  } catch (ex) {
    onError!.call(ex.toString());
  }
}