{
  "version": 3,
  "sources": ["../../../src/store/middleware/logoutMiddleware.ts"],
  "sourcesContent": ["import { WritableDraft } from 'immer';\nimport { Address } from 'lib/sdkCore';\nimport {\n  addLoginExpiresAt,\n  removeLoginExpiresAt\n} from 'store/actions/loginInfo/loginInfoActions';\nimport {\n  accountInfoSelector,\n  isLoggedInSelector\n} from 'store/selectors/accountSelectors';\nimport { loginExpiresAtSelector } from 'store/selectors/loginInfoSelectors';\nimport { initialState as initialAccountState } from 'store/slices/account/accountSlice';\nimport { initialState as initialLoginInfoState } from 'store/slices/loginInfo/loginInfoSlice';\nimport { initialState as initialToastState } from 'store/slices/toast/toastSlice';\nimport { initialState as initialTransactionsState } from 'store/slices/transactions/transactionsSlice';\nimport { getStore } from 'store/store';\nimport { StoreType } from '../store.types';\n\nexport const resetStore = (store: WritableDraft<StoreType>) => {\n  store.account = initialAccountState;\n  store.loginInfo = initialLoginInfoState;\n  store.transactions = initialTransactionsState;\n  store.toasts = initialToastState;\n};\n\nexport function getNewLoginExpiresTimestamp() {\n  return new Date().setHours(new Date().getHours() + 24);\n}\n\nexport function setLoginExpiresAt(expiresAt: number | null) {\n  if (expiresAt == null) {\n    removeLoginExpiresAt();\n    return;\n  }\n  addLoginExpiresAt(expiresAt);\n}\n\nexport const logoutMiddleware = (state: StoreType) => {\n  const isLoggedIn = isLoggedInSelector(state);\n  const loginTimestamp = loginExpiresAtSelector(state);\n  const { address, publicKey } = accountInfoSelector(state);\n\n  if (address && publicKey !== new Address(address).toHex()) {\n    resetStore(state);\n  }\n\n  if (!isLoggedIn) {\n    return;\n  }\n\n  if (loginTimestamp == null) {\n    setLoginExpiresAt(getNewLoginExpiresTimestamp());\n    return;\n  }\n\n  const now = Date.now();\n  const isExpired = loginTimestamp - now < 0;\n\n  if (isExpired) {\n    // logout\n    setLoginExpiresAt(null);\n    getStore().setState(resetStore, false, {\n      type: 'logoutMiddleware',\n      // @ts-ignore\n      payload: {\n        value: null\n      }\n    });\n  }\n};\n"],
  "mappings": "yaAAA,IAAAA,EAAA,GAAAC,EAAAD,EAAA,iCAAAE,EAAA,qBAAAC,EAAA,eAAAC,EAAA,sBAAAC,IAAA,eAAAC,EAAAN,GACA,IAAAO,EAAwB,uBACxBC,EAGO,oDACPC,EAGO,4CACPC,EAAuC,8CACvCC,EAAoD,6CACpDC,EAAsD,iDACtDC,EAAkD,yCAClDC,EAAyD,uDACzDC,EAAyB,uBAGlB,MAAMX,EAAcY,GAAoC,CAC7DA,EAAM,QAAU,EAAAC,aAChBD,EAAM,UAAY,EAAAE,aAClBF,EAAM,aAAe,EAAAG,aACrBH,EAAM,OAAS,EAAAI,YACjB,EAEO,SAASlB,GAA8B,CAC5C,OAAO,IAAI,KAAK,EAAE,SAAS,IAAI,KAAK,EAAE,SAAS,EAAI,EAAE,CACvD,CAEO,SAASG,EAAkBgB,EAA0B,CAC1D,GAAIA,GAAa,KAAM,IACrB,wBAAqB,EACrB,MACF,IACA,qBAAkBA,CAAS,CAC7B,CAEO,MAAMlB,EAAoBmB,GAAqB,CACpD,MAAMC,KAAa,sBAAmBD,CAAK,EACrCE,KAAiB,0BAAuBF,CAAK,EAC7C,CAAE,QAAAG,EAAS,UAAAC,CAAU,KAAI,uBAAoBJ,CAAK,EAMxD,GAJIG,GAAWC,IAAc,IAAI,UAAQD,CAAO,EAAE,MAAM,GACtDrB,EAAWkB,CAAK,EAGd,CAACC,EACH,OAGF,GAAIC,GAAkB,KAAM,CAC1BnB,EAAkBH,EAA4B,CAAC,EAC/C,MACF,CAEA,MAAMyB,EAAM,KAAK,IAAI,EACHH,EAAiBG,EAAM,IAIvCtB,EAAkB,IAAI,KACtB,YAAS,EAAE,SAASD,EAAY,GAAO,CACrC,KAAM,mBAEN,QAAS,CACP,MAAO,IACT,CACF,CAAC,EAEL",
  "names": ["logoutMiddleware_exports", "__export", "getNewLoginExpiresTimestamp", "logoutMiddleware", "resetStore", "setLoginExpiresAt", "__toCommonJS", "import_sdkCore", "import_loginInfoActions", "import_accountSelectors", "import_loginInfoSelectors", "import_accountSlice", "import_loginInfoSlice", "import_toastSlice", "import_transactionsSlice", "import_store", "store", "initialAccountState", "initialLoginInfoState", "initialTransactionsState", "initialToastState", "expiresAt", "state", "isLoggedIn", "loginTimestamp", "address", "publicKey", "now"]
}
