stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
47 lines (37 loc) • 1.21 kB
text/typescript
import type { LocalMessage, MessageResponse, ReactionResponse } from 'stream-chat';
import { mapReactionToStorable } from '../mappers/mapReactionToStorable';
import { createUpdateQuery } from '../sqlite-utils/createUpdateQuery';
import { createUpsertQuery } from '../sqlite-utils/createUpsertQuery';
import { SqliteClient } from '../SqliteClient';
import type { PreparedQueries } from '../types';
export const insertReaction = async ({
execute = true,
message,
reaction,
}: {
message: MessageResponse | LocalMessage;
reaction: ReactionResponse;
execute?: boolean;
}) => {
const queries: PreparedQueries[] = [];
const storableReaction = mapReactionToStorable(reaction);
queries.push(createUpsertQuery('reactions', storableReaction));
const stringifiedNewReactionGroups = JSON.stringify(message.reaction_groups);
queries.push(
createUpdateQuery(
'messages',
{
reactionGroups: stringifiedNewReactionGroups,
},
{ id: reaction.message_id },
),
);
SqliteClient.logger?.('info', 'insertReaction', {
execute,
reaction: storableReaction,
});
if (execute) {
await SqliteClient.executeSqlBatch(queries);
}
return queries;
};