stream-chat-react-native-core
Version:
The official React Native and Expo components for Stream Chat, a service for building chat applications
58 lines (47 loc) • 1.65 kB
text/typescript
import { selectDraftMessageFromDraft } from './queries/selectDraftMessageFromDraft';
import { selectMessageForId } from './queries/selectMessageById';
import { mapStorableToDraft } from '../mappers/mapStorableToDraft';
import { createSelectQuery } from '../sqlite-utils/createSelectQuery';
import { SqliteClient } from '../SqliteClient';
import { TableRow } from '../types';
export const getDraft = async ({
cid,
userId,
parent_id,
}: {
cid: string;
userId: string;
parent_id?: string;
}) => {
SqliteClient.logger?.('info', 'getDraft', { cid, parent_id });
try {
const draftRowsWithMessage = await selectDraftMessageFromDraft({
cid,
parent_id: parent_id ?? null,
});
if (!draftRowsWithMessage) return null;
const draftRowWithMessage = draftRowsWithMessage;
if (!draftRowWithMessage) {
return null;
}
const channelQuery = createSelectQuery('channels', ['*'], { cid });
const channelRows = await SqliteClient.executeSql.apply(null, channelQuery);
const quotedMessageRows = await selectMessageForId(draftRowWithMessage.quotedMessageId);
const polls = (await SqliteClient.executeSql.apply(
null,
createSelectQuery('poll', ['*'], {
id: quotedMessageRows?.poll_id,
}),
)) as unknown as TableRow<'poll'>[];
return mapStorableToDraft({
channelRow: channelRows[0] as unknown as TableRow<'channels'>,
currentUserId: userId,
draftRow: draftRowWithMessage,
pollRow: polls[0],
quotedMessageRow: quotedMessageRows,
});
} catch (error) {
console.error('Error in getDraft:', error);
throw error;
}
};