onSuccess method

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

Implementation

@override
Future<bool> onSuccess(Data data,
    {int? code, String? message, Observable? onSuccessOverride}) async {
  // set busy
  busy = true;

  // max records
  int maxrecords = this.maxrecords ?? 10000;
  if (maxrecords.isNegative) maxrecords = 0;

  // apply data transforms
  if (children != null) {
    for (WidgetModel model in children!) {
      if (model is ITransform) {
        await (model as ITransform).apply(data);
      }
    }
  }

  // type - default is replace
  ListTypes? type = toEnum(queuetype, ListTypes.values);

  // Fifo - Oldest -> Newest
  if (type == ListTypes.fifo) {
    Data temp = Data();
    if (this.data != null) {
      for (var element in this.data!) {
        temp.add(element);
      }
    }
    for (var element in data) {
      temp.add(element);
    }
    if (temp.length > maxrecords) {
      temp.removeRange(0, temp.length - maxrecords);
    }
    data = temp;
  }

  // Lifo - Newest > Oldest
  if (type == ListTypes.lifo) {
    Data temp = Data();
    for (var element in data) {
      temp.add(element);
    }
    if (this.data != null) {
      for (var element in this.data!) {
        temp.add(element);
      }
    }
    if (temp.length > maxrecords) {
      temp.removeRange(temp.length - maxrecords - 1, temp.length);
    }
    data = temp;
  }

  // Append
  if (type == ListTypes.append) {
    Data temp = Data();
    if (this.data != null) {
      for (var element in this.data!) {
        temp.add(element);
      }
    }
    for (var element in data) {
      temp.add(element);
    }
    data = temp;
  }

  // Prepend
  if (type == ListTypes.prepend) {
    Data temp = Data();
    for (var element in data) {
      temp.add(element);
    }
    if (this.data != null) {
      for (var element in this.data!) {
        temp.add(element);
      }
    }
    data = temp;
  }

  // Truncate List
  if (data.length > maxrecords) data.removeRange(maxrecords, data.length);

  // Return Success
  return await onData(data,
      code: code, message: message, onSuccessOverride: onSuccessOverride);
}