OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-store / store / room / forward-message / forward-message.reducer.js

101 lines · javascript ref:
import { createAction as o, createSelector as r } from "@reduxjs/toolkit"
import {
  FORWARD_MESSAGE_STATE_KEY as e,
  FORWARD_MESSAGE_STEP as s,
} from "./forward-message.constants"
import { sendChatMessageSuccess as t } from "../../chat/message/message.action"
import { myMemberMuted as a } from "../../member"
import { getRoomListAllIds as d } from "../list/room-list.reducer"
import { ROOM_STATE_KEY as g } from "../room.constant"
export const setForwardMessage = o("room/forward/set-forward-message")
export const setForwardMessageRoomTo = o("room/forward/set-forward-message-room-to")
export const setForwardMessageSearchText = o("room/forward/set-search-text")
export const forwardMessage = o("room/forward/forward-message")
export const setForwardMsgRoomListItemsInView = o("room/forward/set-room-list-in-view")
export const setForwardMsgListSearchRoomIds = o("room/forward/set-room-list-search-room-ids")
export const setForwardMsgRoomListIsSearching = o("room/forward/set-room-list-is-searching")
export const searchForwardMsgAllRooms = o("room/forward/search-all-rooms")
export const searchForwardMsgInputEvt = o("room/forward/search-forward-input-evt")
export const setForwardMsgRoomListSearchError = o("room/forward/set-room-list-search-error")
export const resetForwardMessage = o("room/forward/reset-forward-message")
export const forwardMsgRoomListInViewIdsChangeEvt = o("room/forward/room-list-in-view-change-evt")
export const forwardMessageEvt = o("chat/forward-message")
export const FORWARD_MESSAGE_INITIAL_STATE = {
  forwardedMessage: null,
  step: s.SELECT_MESSAGE,
  searchRoomIds: [],
  searchText: "",
  inView: { top: -1, bottom: -1 },
  isSearching: !1,
  searchError: "",
}
export const SEARCH_FORWARD_INPUT_THROTTLE = 250
export const forwardMessageReducer = (o = FORWARD_MESSAGE_INITIAL_STATE, r) => {
  switch (r.type) {
    case setForwardMessage.type:
      return { ...o, step: s.SELECT_ROOM }
    case forwardMessage.type:
      return {
        ...o,
        forwardedMessage: {
          text: r.payload.text,
          display: r.payload.display,
          segments: r.payload.segments,
          roomIdTo: r.payload.roomIdTo,
          roomIdFrom: r.payload.roomIdFrom,
          messageId: r.payload.messageId,
        },
        step: s.COMPLETE,
      }
    case setForwardMsgRoomListItemsInView.type: {
      const { top: e, bottom: s } = r.payload
      return { ...o, inView: { top: e, bottom: s } }
    }
    case setForwardMsgListSearchRoomIds.type:
      return { ...o, isSearching: !1, searchRoomIds: r.payload }
    case setForwardMsgRoomListIsSearching.type:
      return { ...o, isSearching: r.payload }
    case searchForwardMsgAllRooms.type:
      return { ...o, searchText: r.payload, isSearching: !!r.payload }
    case setForwardMsgRoomListSearchError.type:
      return { ...o, searchError: r.payload, isSearching: !1 }
    case a.type:
    case t.type:
    case resetForwardMessage.type:
      return FORWARD_MESSAGE_INITIAL_STATE
    default:
      return o
  }
}
export const getForwardMessageState = (o) => o[g][e]
export const getIsSelectingForwardMessageRoom = (o) =>
  "select_room" === getForwardMessageState(o).step
const c = (o, r) => {
  const e = getForwardMessageState(o)
  return e.forwardedMessage?.roomIdTo === r ? e : null
}
export const getForwardedMessageStepByRoomId = (o, r) => c(o, r)?.step
export const getForwardedMessageByRoomId = (o, r) => c(o, r)?.forwardedMessage
export const getForwardMsgRoomListSearchText = (o) => getForwardMessageState(o).searchText
export const getForwardMsgRoomListSearchIds = (o) => getForwardMessageState(o).searchRoomIds
export const getForwardMsgRoomListSearchActive = (o) => !!getForwardMessageState(o).searchText
export const getForwardMsgRoomListIsSearching = (o) => getForwardMessageState(o).isSearching
export const getForwardMsgRoomListSearchIsEmpty = (o) =>
  !!getForwardMessageState(o).searchText && 0 === getForwardMsgRoomListSearchIds(o).length
export const getForwardMsgRoomListInView = (o) => getForwardMessageState(o).inView
export const getForwardMsgRoomListIds = r(
  getForwardMsgRoomListSearchActive,
  getForwardMsgRoomListSearchIds,
  d,
  (o, r, e) => (o ? r : e),
)
export const getForwardMsgRoomListInViewIds = r(
  getForwardMsgRoomListInView,
  getForwardMsgRoomListIds,
  (o, r) => {
    const { top: e, bottom: s } = o
    return o.top < 0 || o.bottom < 0 ? [] : r.slice(e, s + 1)
  },
)
export const getForwardMsgRoomListSearchError = (o) => getForwardMessageState(o).searchError