OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-store / store / chat / reaction / chat-reaction.model.js

69 lines · javascript ref:
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