onData method

Future<bool> onData(
  1. Data data, {
  2. int? code,
  3. String? message,
  4. Observable? onSuccessOverride,
})

Implementation

Future<bool> onData(Data data,
    {int? code, String? message, Observable? onSuccessOverride}) async {
  bool ok = true;

  // set status
  status = "success";

  // set status code
  statuscode = code;

  // set status message
  statusmessage = message ?? 'Ok';

  // Set the source value
  this.data = data;

  // set rowcount
  rowcount = this.data?.length ?? 0;

  // notify listeners
  notify();

  // fire on success event
  if (onSuccessOverride != null || !isNullOrEmpty(onsuccess)) {
    EventHandler handler = EventHandler(this);
    await handler.execute(onSuccessOverride ?? _onsuccess);
  }

  // notify nested data sources
  if (datasources != null) {
    for (IDataSource model in datasources!) {
      if (model is DataModel) {
        // clone the data
        model.onSuccess(data.clone(), code: code, message: message);
      }
    }
  }

  // requery?
  if (((autoquery ?? 0) > 0) && (timer == null) && (!disposed)) {
    timer = Timer.periodic(Duration(seconds: autoquery!), onTimer);
  }

  // busy
  busy = false;

  return ok;
}