import { createSlice as e, createAction as t } from "@reduxjs/toolkit"
import { DEBUG_OFFLINE_FLAGS as o } from "./debug.constants"
export const DEBUG_STATE_KEY = "debug"
export const INITIAL_STATE = {
unlocked: !1,
offline: !1,
suspended: !1,
suspendDisabled: !1,
localDbCompact: { errorMsg: "", success: !1, running: !1 },
audit: { report: [], running: !1, issues: 0, dropped: 0, corrupt: 0, errorMsg: "" },
flags: [],
}
export const debugSlice = e({
name: "debug",
initialState: INITIAL_STATE,
reducers: {
lockDebug: (e) => {
e.unlocked = !1
},
unlockDebug: (e) => {
e.unlocked = !0
},
setStartAudit: (e) => {
;((e.audit.issues = 0),
(e.audit.dropped = 0),
(e.audit.corrupt = 0),
(e.audit.report = []),
(e.audit.running = !0),
(e.audit.errorMsg = ""))
},
setAuditReport: (e, { payload: t }) => {
;((e.audit.report = t.report),
(e.audit.issues = t.issues),
(e.audit.dropped = t.dropped),
(e.audit.corrupt = t.corrupt),
(e.audit.running = !1))
},
setAuditError: (e, { payload: t }) => {
;((e.audit.errorMsg = t), (e.audit.running = !1))
},
setDebugFlags: (e, t) => {
e.flags = t.payload
const s = e.flags.filter((e) => o.includes(e.key))
s.length === o.length ? (e.offline = s.every((e) => !0 === e.value)) : (e.offline = !1)
},
setSuspended: (e, { payload: t }) => {
e.suspended = t
},
setSuspendDisabled: (e, { payload: t }) => {
e.suspendDisabled = t
},
setLocalDbCompacting: (e) => {
;((e.localDbCompact.errorMsg = ""),
(e.localDbCompact.running = !0),
(e.localDbCompact.success = !1))
},
setLocalDbCompactError: (e, { payload: t }) => {
;((e.localDbCompact.errorMsg = t), (e.localDbCompact.running = !1))
},
setLocalDbCompactSuccess: (e) => {
;((e.localDbCompact.success = !0), (e.localDbCompact.running = !1))
},
},
})
const s = (e) => e.debug
export const getIsDebugUnlocked = (e) => s(e).unlocked
export const getIsSuspended = (e) => s(e).suspended
export const getIsSuspendDisabled = (e) => s(e).suspendDisabled
export const getIsOffline = (e) => s(e).offline
export const getDebugFlags = (e) => s(e).flags
export const getAuditResult = (e) => s(e).audit
export const getLocalDbCompact = (e) => s(e).localDbCompact
export const getIsLocalDbCompacting = (e) => getLocalDbCompact(e).running
export const getLocalDbCompactSuccess = (e) => getLocalDbCompact(e).success
export const getLocalDbCompactErrorMsg = (e) => getLocalDbCompact(e).errorMsg
export const {
lockDebug: lockDebug,
unlockDebug: unlockDebug,
setDebugFlags: setDebugFlags,
setSuspended: setSuspended,
setSuspendDisabled: setSuspendDisabled,
setStartAudit: setStartAudit,
setAuditReport: setAuditReport,
setAuditError: setAuditError,
setLocalDbCompacting: setLocalDbCompacting,
setLocalDbCompactError: setLocalDbCompactError,
setLocalDbCompactSuccess: setLocalDbCompactSuccess,
} = debugSlice.actions
export const toggleDebug = t("debug/toggle-debug-lock")
export const fetchDebugFlags = t("debug/fetch-debug-flags")
export const updateDebugFlag = t("debug/update-debug-flag")
export const toggleSuspendCmd = t("debug/toggle-suspend-cmd")
export const toggleOffline = t("debug/toggle-offline")
export const startAudit = t("debug/start-audit")
export const startLocalDbCompact = t("debug/start-local-db-compact")
export const upgradePrivateProfile = t("debug/upgrade-private-profile")