UNPKG

cozy-search

Version:

UI components about search bar and IA assistant

68 lines (56 loc) 2.32 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.groupConversationsByDate = exports.formatDayLabel = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray")); var startOfDay = function startOfDay(date) { return new Date(date.getFullYear(), date.getMonth(), date.getDate()).getTime(); }; var formatDayLabel = function formatDayLabel(timestamp, lang) { return new Date(timestamp).toLocaleDateString(lang, { day: 'numeric', month: 'long', year: 'numeric' }); }; /** * Groups conversations by calendar day based on their updatedAt date. * Returns an ordered array of buckets so today appears first, then yesterday, * then each earlier day descending. * * @param {Array} conversations - The list of conversations to group. * @returns {Array<{ key: string, dayTimestamp: number, items: Array }>} */ exports.formatDayLabel = formatDayLabel; var groupConversationsByDate = function groupConversationsByDate(conversations) { if (!conversations || conversations.length === 0) return []; var now = new Date(); var todayTs = startOfDay(now); var yesterdayTs = todayTs - 86400000; var buckets = new Map(); conversations.forEach(function (conv) { var _conv$cozyMetadata; var raw = ((_conv$cozyMetadata = conv.cozyMetadata) === null || _conv$cozyMetadata === void 0 ? void 0 : _conv$cozyMetadata.updatedAt) || Date.now(); var dayTs = startOfDay(new Date(raw)); if (!buckets.has(dayTs)) buckets.set(dayTs, []); buckets.get(dayTs).push(conv); }); return (0, _toConsumableArray2.default)(buckets.entries()).sort(function (a, b) { return b[0] - a[0]; }).map(function (_ref) { var _ref2 = (0, _slicedToArray2.default)(_ref, 2), dayTimestamp = _ref2[0], items = _ref2[1]; var key; if (dayTimestamp === todayTs) key = 'today';else if (dayTimestamp === yesterdayTs) key = 'yesterday';else key = 'date'; return { key: key, dayTimestamp: dayTimestamp, items: items }; }); }; exports.groupConversationsByDate = groupConversationsByDate;