UNPKG

stream-chat-react-native-core

Version:

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

79 lines 3.38 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.getChannelMessages = void 0; var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _selectMessagesForChannels = require("./queries/selectMessagesForChannels"); var _selectReactionsForMessages = require("./queries/selectReactionsForMessages"); var _mapStorableToMessage = require("../mappers/mapStorableToMessage"); var _createSelectQuery = require("../sqlite-utils/createSelectQuery"); var _SqliteClient = require("../SqliteClient"); var getChannelMessages = exports.getChannelMessages = function () { var _ref = (0, _asyncToGenerator2.default)(function* ({ channelIds, currentUserId }) { _SqliteClient.SqliteClient.logger?.('info', 'getChannelMessages', { channelIds, currentUserId }); var messageRows = yield (0, _selectMessagesForChannels.selectMessagesForChannels)(channelIds); var messageIds = messageRows.map(({ id }) => id); var reactionRows = yield (0, _selectReactionsForMessages.selectReactionsForMessages)(messageIds, null); var messageIdVsReactions = {}; reactionRows.forEach(reaction => { if (!messageIdVsReactions[reaction.messageId]) { messageIdVsReactions[reaction.messageId] = []; } messageIdVsReactions[reaction.messageId].push(reaction); }); var messageIdsVsPolls = {}; var pollsById = {}; var messagesWithPolls = messageRows.filter(message => !!message.poll_id); var polls = yield _SqliteClient.SqliteClient.executeSql.apply(null, (0, _createSelectQuery.createSelectQuery)('poll', ['*'], { id: messagesWithPolls.map(message => message.poll_id) })); polls.forEach(poll => { pollsById[poll.id] = poll; }); messagesWithPolls.forEach(message => { messageIdsVsPolls[message.poll_id] = pollsById[message.poll_id]; }); var messageIdsVsReminders = {}; var reminders = yield _SqliteClient.SqliteClient.executeSql.apply(null, (0, _createSelectQuery.createSelectQuery)('reminders', ['*'], { messageId: messageIds })); reminders.forEach(reminder => { messageIdsVsReminders[reminder.messageId] = reminder; }); var messagesWithSharedLocations = messageRows.filter(message => !!message.shared_location); var messageIdsVsLocations = {}; var sharedLocationRows = yield _SqliteClient.SqliteClient.executeSql.apply(null, (0, _createSelectQuery.createSelectQuery)('locations', ['*'], { messageId: messagesWithSharedLocations.map(message => message.id) })); sharedLocationRows.forEach(location => { messageIdsVsLocations[location.messageId] = location; }); var cidVsMessages = {}; messageRows.forEach(m => { if (!cidVsMessages[m.cid]) { cidVsMessages[m.cid] = []; } cidVsMessages[m.cid].push((0, _mapStorableToMessage.mapStorableToMessage)({ currentUserId, messageRow: m, pollRow: messageIdsVsPolls[m.poll_id], reactionRows: messageIdVsReactions[m.id], reminderRow: messageIdsVsReminders[m.id] })); }); return cidVsMessages; }); return function getChannelMessages(_x) { return _ref.apply(this, arguments); }; }(); //# sourceMappingURL=getChannelMessages.js.map