import { CHAT_MESSAGE_REPORT_COUNT as t, CHAT_MESSAGE_REPORT_REACTION as e } from "../chat.constant"
export const isMineChanged = (t, e) => {
if (!e) return !1
const { length: n } = e
if (t.length !== n) return !0
for (let r = 0; r < n; r += 1) if (e[r] !== t[r]) return !0
return !1
}
export const isReactionsArrayChanged = (t, e) => {
if (!e) return !1
const { length: n } = e
if (t.length !== n) return !0
for (let r = 0; r < n; r += 1) {
const n = t[r],
o = e[r]
if (n.count !== o.count || n.text !== o.text) return !0
}
return !1
}
export const parseCoreReactions = (t, n) => {
const r = t?.digest,
o = t?.mine || [],
i = r?.total || 0,
s = r?.reactions || []
let c = i,
a = s,
d = o
for (let t = 0; t < s.length; t += 1) {
const n = s[t]
if (n.text === e) {
;((c = i - n.count), (a = s.filter((t) => t.text !== e)))
break
}
}
return (
o.includes(e) && (d = o.filter((t) => t !== e)),
{ id: n, editedAt: r?.editedAt, mine: d, reactions: a, total: c }
)
}
export const isEmptyReactions = (t) => !(t?.total > 0)
export const isReactionsChanged = (t, e) => {
const { total: n, reactions: r, mine: o } = e
return (
!(t.total === n || !Number.isInteger(n)) ||
isMineChanged(t.mine, o) ||
isReactionsArrayChanged(t.reactions, r)
)
}
export function shouldUpdateReactions(t, e) {
const n = isEmptyReactions(t),
r = isEmptyReactions(e)
return (!n || !r) && (r || n || isReactionsChanged(t, e))
}
export const getReportedFromReactions = (n) => {
const { digest: r, mine: o } = n || {}
if (!Array.isArray(r?.reactions)) return { reported: !1, reportedCount: 0, reportedByMe: !1 }
const { reactions: i } = r
let s = 0
for (let t = 0; t < i.length; t += 1) {
const n = i[t]
if (n.text === e) {
s = n.count
break
}
}
return { reported: s >= t, reportedCount: s, reportedByMe: !!o && o.includes(e) }
}
export const notEmptyReactions = (t) => t?.digest?.reactions?.length > 0