OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-store / store / chat / draft-message / draft-message.reducer.js

36 lines · javascript ref:
import { createAction as e } from "@reduxjs/toolkit"
import { CHAT_STATE_KEY as t } from "../chat.constant"
import { sendChatMessageSuccess as s } from "../message"
import { DRAFT_MESSAGE_STATE_KEY as a, EMPTY_DRAFT_MESSAGE as r } from "./draft-message.constant"
import { isEmptyDraftMessage as o } from "./draft-message.model"
import { myMemberMuted as d } from "../../member"
export const setDraftMessage = e("chat/draft/set-draft-message")
export const setDraftReplyIdMessage = e("chat/draft/set-draft-reply-message")
export const clearDraftMessage = e("chat/draft/clear-draft-message")
export const DRAFT_MESSAGE_INITIAL_STATE = {}
export const draftMessageReducer = (e = DRAFT_MESSAGE_INITIAL_STATE, t) => {
  switch (t.type) {
    case setDraftMessage.type: {
      const { roomId: s, text: a, display: d } = t.payload,
        p = { ...(e[s] || r), roomId: s, text: a, display: d }
      return { ...e, [s]: o(p) ? void 0 : p }
    }
    case setDraftReplyIdMessage.type: {
      const { roomId: s, replyId: a } = t.payload,
        d = { ...(e[s] || r), roomId: s, replyId: a }
      return { ...e, [s]: o(d) ? void 0 : d }
    }
    case d.type:
    case s.type:
    case clearDraftMessage.type: {
      const { roomId: s } = t.payload
      return e[s] ? { ...e, [s]: void 0 } : e
    }
    default:
      return e
  }
}
export const getDraftMessageState = (e) => e[t][a]
export const getDraftMessageByRoomId = (e, t) => getDraftMessageState(e)[t]
export const getDraftMessageExistByRoomId = (e, t) => !!getDraftMessageState(e)[t]