OverviewFilesCommitsIssuesDocsReleasesPeers

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

116 lines · javascript ref:
import { createSlice as t, createSelector as e, createAction as o } from "@reduxjs/toolkit"
import { NETWORK_CONFIG as n } from "./network.constants"
import { calcNetworkStatus as s } from "./network.model"
export const NETWORK_STATE_KEY = "network"
export const NETWORK_INITIAL_STATE = {
  config: n,
  status: { host: "", port: -1, online: !1, degraded: !1, connections: 0, peers: [], loaded: !1 },
  settings: {
    default: { concurrency: 0, maxWindow: 0, randomPunchInterval: 0, connectionKeepAlive: 0 },
    values: { concurrency: 0, maxWindow: 0, randomPunchInterval: 0, connectionKeepAlive: 0 },
    isCustom: !1,
    isLoaded: !1,
  },
}
export const networkSlice = t({
  name: "network",
  initialState: NETWORK_INITIAL_STATE,
  reducers: {
    setNetworkData: (
      t,
      {
        payload: {
          host: e,
          port: o,
          online: n,
          degraded: s,
          connections: r,
          peers: a = [],
          loaded: i = !0,
        },
      },
    ) => {
      ;((t.status.host = e),
        (t.status.port = o),
        (t.status.online = n),
        (t.status.degraded = s),
        (t.status.connections = r),
        (t.status.peers = a),
        (t.status.loaded = i))
    },
    setNetworkSettingsDefault: (
      t,
      { payload: { concurrency: e, maxWindow: o, randomPunchInterval: n, connectionKeepAlive: s } },
    ) => {
      ;((t.settings.default.concurrency = e),
        (t.settings.default.maxWindow = o),
        (t.settings.default.randomPunchInterval = n),
        (t.settings.default.connectionKeepAlive = s))
    },
    setNetworkSettings: (
      t,
      {
        payload: {
          concurrency: e,
          maxWindow: o,
          randomPunchInterval: n,
          connectionKeepAlive: s,
          isLoaded: r = !0,
        },
      },
    ) => {
      ;((t.settings.values.concurrency = e),
        (t.settings.values.maxWindow = o),
        (t.settings.values.randomPunchInterval = n),
        (t.settings.values.connectionKeepAlive = s),
        (t.settings.isCustom = !1),
        (t.settings.isLoaded = r))
    },
    setNetworkSettingsIsCustom: (t, { payload: e }) => {
      t.settings.isCustom = e
    },
    resetNetworkSettings: (t) => {
      ;((t.settings.values.concurrency = t.settings.default.concurrency),
        (t.settings.values.maxWindow = t.settings.default.maxWindow),
        (t.settings.values.randomPunchInterval = t.settings.default.randomPunchInterval),
        (t.settings.values.connectionKeepAlive = t.settings.default.connectionKeepAlive),
        (t.settings.isCustom = !1))
    },
  },
})
export const getNetworkState = (t) => t.network
export const getNetworkConfig = (t) => getNetworkState(t).config
export const getNetworkStatusState = (t) => getNetworkState(t).status
export const getNetworkIp = (t) => getNetworkStatusState(t).host
export const getNetworkPort = (t) => getNetworkStatusState(t).port
export const getNetworkLoaded = (t) => getNetworkStatusState(t).loaded
export const getNetworkOnline = (t) => getNetworkStatusState(t).online
export const getNetworkDegraded = (t) => getNetworkStatusState(t).degraded
export const getNetworkPeerCount = (t) => getNetworkStatusState(t).connections
export const getNetworkPeers = (t) => getNetworkStatusState(t).peers
export const getNetworkSettings = (t) => getNetworkState(t).settings
export const getNetworkSettingsDefault = (t) => getNetworkSettings(t).default
export const getNetworkSettingsValues = (t) => getNetworkSettings(t).values
export const getNetworkSettingsLoading = (t) => !getNetworkSettings(t).isLoaded
export const getNetworkSettingsIsCustom = e(
  getNetworkSettings,
  (t) =>
    t.isCustom ||
    t.values.concurrency !== t.default.concurrency ||
    t.values.maxWindow !== t.default.maxWindow ||
    t.values.randomPunchInterval !== t.default.randomPunchInterval ||
    t.values.connectionKeepAlive !== t.default.connectionKeepAlive,
)
export const getNetworkStatus = (t) => s(getNetworkStatusState(t))
export const {
  setNetworkData: setNetworkData,
  setNetworkSettings: setNetworkSettings,
  setNetworkSettingsDefault: setNetworkSettingsDefault,
  setNetworkSettingsIsCustom: setNetworkSettingsIsCustom,
  resetNetworkSettings: resetNetworkSettings,
} = networkSlice.actions
export const getAppInitialState = networkSlice.getInitialState
export const appReducer = networkSlice.reducer
export const loadNetworkSettings = o("network/load-settings")
export const updateNetworkSettings = o("network/update-settings")