import { last as t } from "../../lib/array"
import { formatTimestamp as e, getStartOfNextDay as o } from "../../lib/date"
const i = (t) => {
const e = []
for (let o = t.length - 1; o >= 0; o -= 1) {
const { datetime: i, msgsByDate: s } = t[o]
let a = e.length
for (let t = s.length - 1; t >= 0; t -= 1) {
const o = s[t]
for (const t of o) e.push(t)
}
const m = e.length - 1
for (; a < m; ) {
const t = e[a]
;(t.datetime && (e[a] = { ...t, datetime: void 0 }), (a += 1))
}
const n = e[m]
if (0 === o && n.seq > 0) {
;(n.isHead || n.datetime) && (e[m] = { ...n, datetime: void 0, isHead: !1 })
break
}
n.isOutOfOrder
? n.datetime && (e[m] = { ...n, datetime: void 0 })
: n.datetime !== i && (e[m] = { ...n, datetime: i })
}
return e
}
export function groupByDate(s = []) {
const a = []
let m = null,
n = 0
for (let i = s.length - 1; i >= 0; i -= 1) {
const r = s[i],
{ timestamp: d } = t(r)
d < n
? m.msgsByDate.push(r)
: ((n = o(d).getTime()), (m = { datetime: e(d), msgsByDate: [r] }), a.push(m))
}
return i(a)
}