import { Middleware } from '@reduxjs/toolkit'; import { CheckoutResult } from '@akinon/next/types'; import { setCards, setUcs } from './reducer'; const savedCardMiddleware: Middleware = ({ dispatch }) => { return (next) => (action) => { const result = next(action) as CheckoutResult; const savedCardContext = result.payload?.context_list?.find( (context) => context.page_slug === 'savedcardselectionpage' ); if (savedCardContext && savedCardContext.page_context?.cards) { const cards = JSON.parse( JSON.stringify(savedCardContext.page_context.cards) ); dispatch(setCards(cards)); } else if (savedCardContext && savedCardContext.page_context?.ucs) { const ucs = JSON.parse(JSON.stringify(savedCardContext.page_context.ucs)); const match = ucs.script.match(/]*>([\s\S]*?)<\/script>/); ucs.script = match ? match[1] : ucs.script; dispatch(setUcs(ucs)); } return result; }; }; export default savedCardMiddleware;