MiniProgramPagedBackendSnapshot.fromResult constructor

MiniProgramPagedBackendSnapshot.fromResult(
  1. MiniProgramBackendResult result, {
  2. required String requestId,
  3. required MiniProgramPagedBackendQuery query,
  4. required bool append,
  5. MiniProgramPagedBackendSnapshot? previous,
})

Implementation

factory MiniProgramPagedBackendSnapshot.fromResult(
  MiniProgramBackendResult result, {
  required String requestId,
  required MiniProgramPagedBackendQuery query,
  required bool append,
  MiniProgramPagedBackendSnapshot? previous,
}) {
  final isSuccess = result.isSuccess;
  if (!isSuccess) {
    return MiniProgramPagedBackendSnapshot(
      requestId: requestId,
      status: MiniProgramBackendSnapshotStatus.failed,
      endpoint: result.endpoint,
      method: result.method ?? 'GET',
      statusCode: result.statusCode,
      message: result.message,
      errorCode: result.errorCode,
      items: previous?.items ?? const <Object?>[],
      nextCursor: previous?.nextCursor,
      hasMore: previous?.hasMore ?? false,
      pageCount: previous?.pageCount ?? 0,
      fromCache: result.fromCache,
      updatedAt: DateTime.now().toUtc(),
    );
  }

  final pageItems = _readList(result.data, query.itemsPath);
  final items = append
      ? <Object?>[...?previous?.items, ...pageItems]
      : pageItems;
  final nextCursor = _readPath(result.data, query.nextCursorPath);
  final hasMore = _readBool(result.data, query.hasMorePath);
  return MiniProgramPagedBackendSnapshot(
    requestId: requestId,
    status: MiniProgramBackendSnapshotStatus.success,
    endpoint: result.endpoint,
    method: result.method ?? 'GET',
    statusCode: result.statusCode,
    message: result.message,
    items: items,
    nextCursor: nextCursor,
    hasMore: hasMore,
    pageCount: (append ? previous?.pageCount ?? 0 : 0) + 1,
    fromCache: result.fromCache,
    updatedAt: DateTime.now().toUtc(),
  );
}