OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-store / store / call / call-settings.reducer.js

89 lines · javascript ref:
import { VIDEO_QUALITY_STANDARD as e, VIDEO_QUALITY_HIGH as t } from "../media/media-constraints"
import { CALL_STATE_KEY as i, CALL_SETTINGS_STATE_KEY as a } from "./call.constants"
import {
  setCallSettingsReady as d,
  setCallSettingsSkipJoinMsg as o,
  setMySharedScreen as s,
  setMyAudioMuted as r,
  setMyVideoMuted as n,
  setMyVideoLimits as c,
  setMyVideoAllowed as l,
  setMyVideoTrackId as S,
  setMyVideoQuality as m,
  setMyCameraStreamId as g,
  removeMyStreams as u,
} from "./call-settings.action"
import { setAudioDevice as y, setVideoDevice as p } from "../media"
export const CALL_SETTINGS_INITIAL_STATE = {
  sharedScreen: "",
  isAudioMuted: !0,
  isVideoMuted: !0,
  skipJoinMsg: !1,
  videoLimits: { meAllowed: !1, allowed: !0, showInfo: !0, maxQuality: t },
  videoTrackId: "",
  videoQuality: e,
  cameraStreamId: "",
  screenStreamId: "",
  isReady: !1,
}
export const callSettingsReducer = (e = CALL_SETTINGS_INITIAL_STATE, { type: t, payload: i }) => {
  switch (t) {
    case o.type:
      return { ...e, skipJoinMsg: !!i }
    case d.type:
      return { ...e, isReady: i }
    case s.type:
      return { ...e, sharedScreen: i.screenId, screenStreamId: i.streamId }
    case u.type:
      return { ...e, sharedScreen: "", screenStreamId: "", cameraStreamId: "" }
    case r.type:
      return { ...e, isAudioMuted: i }
    case n.type:
      return {
        ...e,
        isVideoMuted: i,
        videoTrackId: "",
        videoLimits: { ...e.videoLimits, meAllowed: !1 },
      }
    case c.type: {
      const { allowed: t, showInfo: a } = i,
        d = { ...e, videoLimits: { ...e.videoLimits, allowed: t, showInfo: a } }
      return t || e.videoLimits.meAllowed ? d : { ...d, isVideoMuted: !0, videoTrackId: "" }
    }
    case l.type:
      return { ...e, videoLimits: { ...e.videoLimits, meAllowed: !0 } }
    case S.type:
      return { ...e, videoTrackId: i || "" }
    case m.type:
      return { ...e, videoQuality: i, videoTrackId: "" }
    case g.type: {
      const { streamId: t, setReady: a } = i,
        d = { ...e }
      return (
        e.cameraStreamId !== t && ((d.cameraStreamId = t || ""), t || (d.videoTrackId = "")),
        a && (d.isReady = !0),
        Object.keys(d).length ? d : e
      )
    }
    case y.type:
      return { ...e, isAudioMuted: !i || e.isAudioMuted }
    case p.type:
      return { ...e, videoTrackId: "", isVideoMuted: !i || e.isVideoMuted }
    default:
      return e
  }
}
export const getCallSettingsState = (e) => e[i][a]
export const getCallSettingsReady = (e) => getCallSettingsState(e).isReady
export const getCallSettingsSkipJoinMsg = (e) => getCallSettingsState(e).skipJoinMsg
export const getMyAudioMuted = (e) => getCallSettingsState(e).isAudioMuted
export const getMyVideoMuted = (e) => getCallSettingsState(e).isVideoMuted
export const getMyVideoLimits = (e) => getCallSettingsState(e).videoLimits
export const getMyVideoAllowed = (e) => getMyVideoLimits(e).allowed || !getMyVideoMuted(e)
export const getMyVideoQualityLimited = (e) => getMyVideoLimits(e).maxQuality !== t
export const getMyVideoTrackId = (e) => getCallSettingsState(e).videoTrackId
export const getMyVideoQuality = (e) => getCallSettingsState(e).videoQuality
export const getMySharedScreen = (e) => getCallSettingsState(e).sharedScreen
export const getMyCameraStreamId = (e) => getCallSettingsState(e).cameraStreamId
export const getMyScreenStreamId = (e) => getCallSettingsState(e).screenStreamId