{
  "version": 3,
  "sources": ["../../src/store/actions/transactions/transactionsActions.ts"],
  "sourcesContent": ["import { current } from 'immer';\nimport { getStore } from 'store/store';\nimport {\n  TransactionBatchStatusesEnum,\n  TransactionServerStatusesEnum\n} from 'types/enums.types';\nimport {\n  TransactionsDisplayInfoType,\n  SignedTransactionType\n} from 'types/transactions.types';\n\nexport type CreateTransactionsSessionType = {\n  transactions: SignedTransactionType[];\n  transactionsDisplayInfo?: TransactionsDisplayInfoType;\n  status: TransactionBatchStatusesEnum | TransactionServerStatusesEnum;\n  sessionInformation?: any;\n};\n\nexport function createTransactionsSession({\n  transactions,\n  transactionsDisplayInfo,\n  status,\n  sessionInformation\n}: CreateTransactionsSessionType) {\n  const sessionId = Date.now().toString();\n  getStore().setState(\n    ({ transactions: state }) => {\n      state[sessionId] = {\n        transactions,\n        status,\n        transactionsDisplayInfo,\n        interpretedTransactions: {},\n        sessionInformation\n      };\n    },\n    false,\n    {\n      type: 'createTransactionsSession',\n      // @ts-ignore\n      payload: {\n        value: {\n          transactions,\n          status,\n          transactionsDisplayInfo,\n          sessionInformation\n        }\n      }\n    }\n  );\n  return sessionId;\n}\n\nexport function updateSessionStatus({\n  sessionId,\n  status,\n  errorMessage\n}: {\n  sessionId: string;\n  status: TransactionBatchStatusesEnum;\n  errorMessage?: string;\n}) {\n  getStore().setState(\n    ({ transactions: state }) => {\n      if (!state[sessionId]) {\n        return;\n      }\n      const transactionsDisplayInfo =\n        current(state[sessionId]).transactionsDisplayInfo ?? {};\n\n      const newErrorMessage =\n        errorMessage || transactionsDisplayInfo?.errorMessage;\n\n      state[sessionId].status = status;\n      state[sessionId].errorMessage = newErrorMessage;\n      state[sessionId].transactionsDisplayInfo = {\n        ...transactionsDisplayInfo,\n        errorMessage: newErrorMessage\n      };\n    },\n    false,\n    {\n      type: 'updateSessionStatus',\n      // @ts-ignore\n      payload: {\n        value: { sessionId, status, errorMessage }\n      }\n    }\n  );\n}\n\nexport type UpdateTransactionStatusPropsType = {\n  sessionId: string;\n  transaction: SignedTransactionType;\n};\n\nexport function updateTransactionStatus({\n  sessionId,\n  transaction: updatedTransaction\n}: UpdateTransactionStatusPropsType) {\n  getStore().setState(\n    ({ transactions: state }) => {\n      const transactions = state[sessionId]?.transactions;\n      if (transactions != null) {\n        state[sessionId].transactions = transactions.map((transaction) => {\n          if (transaction.hash === updatedTransaction.hash) {\n            return {\n              ...transaction,\n              ...(updatedTransaction ?? {})\n            };\n          }\n          return transaction;\n        });\n      }\n    },\n    false,\n    {\n      type: 'updateTransactionStatus',\n      // @ts-ignore\n      payload: {\n        value: { sessionId, transaction: updatedTransaction }\n      }\n    }\n  );\n}\n\nexport const clearCompletedTransactions = () => {\n  getStore().setState(\n    ({ transactions: state, toasts: toastsState }) => {\n      const sessionIds = Object.keys(state);\n\n      const completedSessionIds = sessionIds.filter((sessionId) => {\n        const session = state[sessionId];\n        if (!session) {\n          return false;\n        }\n\n        const { status } = session;\n\n        const isPending =\n          status === TransactionServerStatusesEnum.pending ||\n          status === TransactionBatchStatusesEnum.signed ||\n          status === TransactionBatchStatusesEnum.sent;\n\n        return !isPending;\n      });\n\n      completedSessionIds.forEach((sessionId) => {\n        delete state[sessionId];\n      });\n\n      const filteredTransactionToasts = toastsState.transactionToasts.filter(\n        (toast) => !completedSessionIds.includes(toast.toastId)\n      );\n\n      toastsState.transactionToasts = filteredTransactionToasts;\n    },\n    false,\n    {\n      type: 'clearCompletedTransactions',\n      // @ts-ignore\n      payload: {\n        value: null\n      }\n    }\n  );\n};\n"],
  "mappings": "yCAAA,OAAS,WAAAA,MAAe,QAkBjB,SAASC,EAA0B,CACxC,aAAAC,EACA,wBAAAC,EACA,OAAAC,EACA,mBAAAC,CACF,EAAkC,CAChC,IAAMC,EAAY,KAAK,IAAI,EAAE,SAAS,EACtC,OAAAC,EAAS,EAAE,SACT,CAAC,CAAE,aAAcC,CAAM,IAAM,CAC3BA,EAAMF,CAAS,EAAI,CACjB,aAAAJ,EACA,OAAAE,EACA,wBAAAD,EACA,wBAAyB,CAAC,EAC1B,mBAAAE,CACF,CACF,EACA,GACA,CACE,KAAM,4BAEN,QAAS,CACP,MAAO,CACL,aAAAH,EACA,OAAAE,EACA,wBAAAD,EACA,mBAAAE,CACF,CACF,CACF,CACF,EACOC,CACT,CAEO,SAASG,EAAoB,CAClC,UAAAH,EACA,OAAAF,EACA,aAAAM,CACF,EAIG,CACDH,EAAS,EAAE,SACT,CAAC,CAAE,aAAcC,CAAM,IAAM,CAC3B,GAAI,CAACA,EAAMF,CAAS,EAClB,OAEF,IAAMH,EACJQ,EAAQH,EAAMF,CAAS,CAAC,EAAE,yBAA2B,CAAC,EAElDM,EACJF,GAAgBP,GAAyB,aAE3CK,EAAMF,CAAS,EAAE,OAASF,EAC1BI,EAAMF,CAAS,EAAE,aAAeM,EAChCJ,EAAMF,CAAS,EAAE,wBAA0B,CACzC,GAAGH,EACH,aAAcS,CAChB,CACF,EACA,GACA,CACE,KAAM,sBAEN,QAAS,CACP,MAAO,CAAE,UAAAN,EAAW,OAAAF,EAAQ,aAAAM,CAAa,CAC3C,CACF,CACF,CACF,CAOO,SAASG,EAAwB,CACtC,UAAAP,EACA,YAAaQ,CACf,EAAqC,CACnCP,EAAS,EAAE,SACT,CAAC,CAAE,aAAcC,CAAM,IAAM,CAC3B,IAAMN,EAAeM,EAAMF,CAAS,GAAG,aACnCJ,GAAgB,OAClBM,EAAMF,CAAS,EAAE,aAAeJ,EAAa,IAAKa,GAC5CA,EAAY,OAASD,EAAmB,KACnC,CACL,GAAGC,EACH,GAAID,GAAsB,CAAC,CAC7B,EAEKC,CACR,EAEL,EACA,GACA,CACE,KAAM,0BAEN,QAAS,CACP,MAAO,CAAE,UAAAT,EAAW,YAAaQ,CAAmB,CACtD,CACF,CACF,CACF,CAEO,IAAME,EAA6B,IAAM,CAC9CT,EAAS,EAAE,SACT,CAAC,CAAE,aAAcC,EAAO,OAAQS,CAAY,IAAM,CAGhD,IAAMC,EAFa,OAAO,KAAKV,CAAK,EAEG,OAAQF,GAAc,CAC3D,IAAMa,EAAUX,EAAMF,CAAS,EAC/B,GAAI,CAACa,EACH,MAAO,GAGT,GAAM,CAAE,OAAAf,CAAO,EAAIe,EAOnB,MAAO,EAJLf,eACAA,cACAA,WAGJ,CAAC,EAEDc,EAAoB,QAASZ,GAAc,CACzC,OAAOE,EAAMF,CAAS,CACxB,CAAC,EAED,IAAMc,EAA4BH,EAAY,kBAAkB,OAC7DI,GAAU,CAACH,EAAoB,SAASG,EAAM,OAAO,CACxD,EAEAJ,EAAY,kBAAoBG,CAClC,EACA,GACA,CACE,KAAM,6BAEN,QAAS,CACP,MAAO,IACT,CACF,CACF,CACF",
  "names": ["current", "createTransactionsSession", "transactions", "transactionsDisplayInfo", "status", "sessionInformation", "sessionId", "getStore", "state", "updateSessionStatus", "errorMessage", "current", "newErrorMessage", "updateTransactionStatus", "updatedTransaction", "transaction", "clearCompletedTransactions", "toastsState", "completedSessionIds", "session", "filteredTransactionToasts", "toast"]
}
