UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

45 lines (36 loc) 1.27 kB
import type { ReadResponse } from 'stream-chat'; import { mapReadToStorable } from '../mappers/mapReadToStorable'; import { mapUserToStorable } from '../mappers/mapUserToStorable'; import { createUpsertQuery } from '../sqlite-utils/createUpsertQuery'; import { SqliteClient } from '../SqliteClient'; import type { PreparedQueries } from '../types'; export const upsertReads = async ({ cid, execute = true, reads, }: { cid: string; reads: ReadResponse[]; execute?: boolean; }) => { const queries: PreparedQueries[] = []; const storableReads: Array<ReturnType<typeof mapReadToStorable>> = []; const storableUsers: Array<ReturnType<typeof mapUserToStorable>> = []; reads?.forEach((read) => { if (read.user) { storableUsers.push(mapUserToStorable(read.user)); } storableReads.push(mapReadToStorable({ cid, read })); }); queries.push(...storableUsers.map((storableUser) => createUpsertQuery('users', storableUser))); queries.push(...storableReads.map((storableRead) => createUpsertQuery('reads', storableRead))); SqliteClient.logger?.('info', 'upsertReads', { execute, reads: storableReads, users: storableUsers, }); if (execute) { await SqliteClient.executeSqlBatch(queries); } return queries; };