OverviewFilesCommitsIssuesDocsReleasesPeers

keet-deobfuscated / @holepunchto / keet-store / store / preferences / preferences.reducer.js

83 lines · javascript ref:
import { EMPTY_OBJ as e, getObjChange as t } from "../lib/object"
import { preferencesDataEvt as r, preferencesMigrateEvt as n } from "./preferences.action"
import {
  PREFERENCES as o,
  NOTIFICATIONS_TYPES as s,
  NOTIFICATIONS_ALERT_TYPES as c,
  FIRST_VISIT_INTRO_ROOM_IDS as E,
} from "./preferences.constant"
export const INITIAL_STATE = Object.freeze({
  migration: {},
  data: {
    [o.AUDIO]: null,
    [o.AUDIO_OUTPUT]: null,
    [o.DISCLAIMER_COMPLETE]: !1,
    [o.IS_AUDIO_DISABLED]: !0,
    [o.IS_VIDEO_DISABLED]: !0,
    [o.LAST_ROOM_ID]: "",
    [o.LOCALE]: "",
    [o.LOGOUT_BANNER]: !1,
    [o.PRIVATE_MODE]: !1,
    [o.RECENT_EMOJIS]: [],
    [o.MIGRATE_RECOVERY_PHRASE_DECLINED]: !1,
    [o.SKIN_TONE]: null,
    [o.STATS_ENABLED]: !0,
    [o.TIME_STATS_ENABLED]: !1,
    [o.CORE_WARNINGS_ENABLED]: !1,
    [o.TOUR_COMPLETE]: {},
    [o.VIDEO]: null,
    [o.VIDEO_QUALITY]: null,
    [o.NOTIFICATIONS_TYPE]: s.ALL,
    [o.NOTIFICATIONS_ALERTS]: Object.values(c),
    [o.IDENTITY_DEVICE_LINK_SEED_ID_KEY]: "",
    [o.NO_CHAT_RATE_LIMIT]: !1,
    [o.NOTIFICATION_SOUND]: null,
    [o.CALL_RINGTONE]: null,
    [o.INTRO_MODAL_SEEN_ROOMS]: Object.fromEntries(E.map((e) => [e, !1])),
  },
})
export const PREFERENCES_STATE_KEY = "preferences"
export const preferencesReducer = (o = INITIAL_STATE, s) => {
  switch (s.type) {
    case r.type: {
      const e = t(o.data, s.payload)
      return e ? { ...o, data: { ...o.data, ...e } } : o
    }
    case n.type:
      return { ...o, migration: s.payload || e }
    default:
      return o
  }
}
export const getPreferencesState = (e) => e.preferences
export const getPreferencesMigration = (e) => getPreferencesState(e).migration
export const getPreferencesData = (e) => getPreferencesState(e).data
export const getPreferencesPrivateMode = (e) => getPreferencesData(e)[o.PRIVATE_MODE]
export const getPreferencesRecentEmojis = (e) => getPreferencesData(e)[o.RECENT_EMOJIS]
export const getPreferencesSkinTone = (e) => getPreferencesData(e)[o.SKIN_TONE]
export const getPreferencesDisclaimerComplete = (e) => getPreferencesData(e)[o.DISCLAIMER_COMPLETE]
export const getPreferencesRecoveryPhraseMigrationDeclined = (e) =>
  getPreferencesData(e)[o.MIGRATE_RECOVERY_PHRASE_DECLINED]
export const getPreferencesLogoutBanner = (e) => getPreferencesData(e)[o.LOGOUT_BANNER]
export const getPreferencesNotificationsType = (e) => getPreferencesData(e)[o.NOTIFICATIONS_TYPE]
export const getPreferencesNotificationsAlerts = (e) =>
  getPreferencesData(e)[o.NOTIFICATIONS_ALERTS]
export const getPreferencesTourComplete = (e) => getPreferencesData(e)[o.TOUR_COMPLETE]
export const getPreferencesLastRoomId = (e) => getPreferencesData(e)[o.LAST_ROOM_ID]
export const getPreferencesLocale = (e) => getPreferencesData(e)[o.LOCALE]
export const getPreferencesStatsEnabled = (e) => getPreferencesData(e)[o.STATS_ENABLED]
export const getPreferencesTimeStatsEnabled = (e) => getPreferencesData(e)[o.TIME_STATS_ENABLED]
export const getPreferencesCoreWarningsEnabled = (e) =>
  getPreferencesData(e)[o.CORE_WARNINGS_ENABLED]
export const getPreferencesIdentityDeviceLinkSeedId = (e) =>
  getPreferencesData(e)[o.IDENTITY_DEVICE_LINK_SEED_ID_KEY]
export const getPreferencesNoChatRateLimit = (e) => getPreferencesData(e)[o.NO_CHAT_RATE_LIMIT]
export const getPreferencesIsVideoDisabled = (e) => getPreferencesData(e)[o.IS_VIDEO_DISABLED]
export const getPreferencesNotificationSound = (e) => getPreferencesData(e)[o.NOTIFICATION_SOUND]
export const getPreferencesCallRingtone = (e) => getPreferencesData(e)[o.CALL_RINGTONE]
export const getPreferencesIntroModalSeenRooms = (e) =>
  getPreferencesData(e)[o.INTRO_MODAL_SEEN_ROOMS] || {}
export const getPreferencesRoomListFilter = (e) => getPreferencesData(e)[o.ROOM_LIST_FILTER]
export const getPreferencesRoomIntroModalNeeded = (e, t) =>
  !!E.includes(t) && !(getPreferencesData(e)[o.INTRO_MODAL_SEEN_ROOMS] || {})[t]