setData method

T setData(
  1. T value, {
  2. DateTime? updatedAt,
  3. bool manual = true,
  4. ResolvedQueryOptions<T>? resolved,
})

Stores successful value and returns the structurally shared result.

Implementation

T setData(
  T value, {
  DateTime? updatedAt,
  bool manual = true,
  ResolvedQueryOptions<T>? resolved,
}) {
  final dataOptions = resolved ?? options;
  final T merged;
  if (dataOptions.merge case final merge?) {
    merged = merge(state.hasData ? state.data : null, value);
  } else if (dataOptions.structuralSharing) {
    final shared = structurallyShare(
      state.hasData ? state.data : null,
      value,
    );
    merged = shared is T ? shared : value;
  } else {
    merged = value;
  }
  _setState(
    state.copyWith(
      status: QueryStatus.success,
      fetchStatus: manual ? state.fetchStatus : QueryFetchStatus.idle,
      hasData: true,
      data: merged,
      dataUpdatedAt: updatedAt ?? client.scheduler.now(),
      error: null,
      errorStackTrace: null,
      dataUpdateCount: state.dataUpdateCount + 1,
      fetchFailureCount: manual ? state.fetchFailureCount : 0,
      fetchFailureReason: manual ? state.fetchFailureReason : null,
      isInvalidated: false,
      fetchMeta: manual ? state.fetchMeta : null,
    ),
  );
  return merged;
}