UNPKG

stream-chat-react-native-core

Version:

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

48 lines (39 loc) 1.33 kB
import type { ChannelMemberResponse } from 'stream-chat'; import { mapMemberToStorable } from '../mappers/mapMemberToStorable'; import { mapUserToStorable } from '../mappers/mapUserToStorable'; import { createUpsertQuery } from '../sqlite-utils/createUpsertQuery'; import { SqliteClient } from '../SqliteClient'; import type { PreparedQueries } from '../types'; export const upsertMembers = async ({ cid, execute = true, members, }: { cid: string; members: ChannelMemberResponse[]; execute?: boolean; }) => { const queries: PreparedQueries[] = []; const storableUsers: Array<ReturnType<typeof mapUserToStorable>> = []; const storableMembers: Array<ReturnType<typeof mapMemberToStorable>> = []; members?.forEach((member) => { if (member.user) { const storableUser = mapUserToStorable(member.user); storableUsers.push(storableUser); queries.push(createUpsertQuery('users', storableUser)); } const storableMember = mapMemberToStorable({ cid, member }); storableMembers.push(storableMember); queries.push(createUpsertQuery('members', storableMember)); }); SqliteClient.logger?.('info', 'upsertMembers', { cid, execute, storableMembers, storableUsers, }); if (execute) { await SqliteClient.executeSqlBatch(queries); } return queries; };