fetchSinceFromRawPages method

Future<Delta<T, Id>> fetchSinceFromRawPages(
  1. SyncScope scope,
  2. DateTime? since,
  3. List<List<Map<String, dynamic>>> pages
)

Implementation

Future<Delta<T, Id>> fetchSinceFromRawPages(
  SyncScope scope,
  DateTime? since,
  List<List<Map<String, dynamic>>> pages,
) async {
  final upserts = <T>[];
  final deletes = <Id>[];
  for (final page in pages) {
    // Apply scope filter as server would
    final scoped = filterRowsByScope(page, scope);
    // Apply since filter as server would
    final filtered = since == null
        ? scoped
        : scoped.where((m) {
            final ts = m[config.updatedAtField];
            if (ts is String) {
              return DateTime.parse(ts).isAfter(since);
            }
            return false;
          }).toList();
    final (ups, dels) = parsePage(filtered);
    upserts.addAll(ups);
    deletes.addAll(dels);
  }
  final serverTs = await getServerTime();
  return Delta<T, Id>(
    upserts: upserts,
    deletes: deletes,
    serverTimestamp: serverTs,
  );
}