UNPKG

stream-chat-react-native-core

Version:

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

40 lines 2.04 kB
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.selectReactionsForMessages = void 0; var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator")); var _schema = require("../../schema"); var _SqliteClient = require("../../SqliteClient"); var selectReactionsForMessages = exports.selectReactionsForMessages = function () { var _ref = (0, _asyncToGenerator2.default)(function* (messageIds, limit = 25, filters, sort) { var questionMarks = Array(messageIds.length).fill('?').join(','); var reactionsColumnNames = Object.keys(_schema.tables.reactions.columns).map(name => `'${name}', a.${name}`).join(', '); var userColumnNames = Object.keys(_schema.tables.users.columns).map(name => `'${name}', b.${name}`).join(', '); var filterValue = filters?.type ? [typeof filters.type === 'string' ? filters.type : filters.type.$eq] : []; var createdAtSort = Array.isArray(sort) ? sort.find(s => !!s.created_at)?.created_at : sort?.created_at; var orderByClause = createdAtSort ? `ORDER BY cast(strftime('%s', a.createdAt) AS INTEGER) ${createdAtSort === 1 ? 'ASC' : 'DESC'}` : ''; _SqliteClient.SqliteClient.logger?.('info', 'selectReactionsForMessages', { messageIds }); var result = yield _SqliteClient.SqliteClient.executeSql(`SELECT json_object( 'user', json_object( ${userColumnNames} ), ${reactionsColumnNames} ) as value FROM reactions a LEFT JOIN users b ON b.id = a.userId WHERE a.messageId in (${questionMarks}) ${filters?.type ? `AND a.type = ?` : ''} ${orderByClause} ${limit ? 'LIMIT ?' : ''}`, [...messageIds, ...filterValue, ...(limit ? [limit] : [])]); return result.map(r => JSON.parse(r.value)); }); return function selectReactionsForMessages(_x) { return _ref.apply(this, arguments); }; }(); //# sourceMappingURL=selectReactionsForMessages.js.map