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.42 kB
JavaScript
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 == null || _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