cozy-search
Version:
UI components about search bar and IA assistant
68 lines (56 loc) • 2.32 kB
JavaScript
;
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;