{"version":3,"file":"hook-B2xypkd_.js","sources":["../../Client/app/State/Context.ts","../../Client/business/Components/UpcomingRenewalQuotes/GetOrCreate/hook.ts"],"sourcesContent":["import { ApplicationState } from '@app/State';\r\nimport { createContext } from 'react';\r\nimport { AppSettings } from '../Models';\r\n\r\nexport const StateContext = createContext<ApplicationState>({} as ApplicationState);\r\nexport const StepContext = createContext<string>({} as string);\r\nexport const AppSettingsContext = createContext<AppSettings | null>({} as AppSettings);\r\n","import { fetchAndLog } from '@api/Fetch';\r\nimport { StateContext } from '@app/State';\r\nimport { getPath, Path } from '@app/Views';\r\nimport { getRenewalTermFromPolicyNumber, isAdmin } from '@shared/Common';\r\nimport { useContext, useMemo, useState } from 'react';\r\nimport { GetUrqProps } from './models';\r\n\r\nexport function useGetOrCreateUrq({\r\n    quoteId,\r\n    productLine,\r\n    policyNumber,\r\n    urqId,\r\n    hasRenewalPolicy,\r\n    navigate,\r\n}: GetUrqProps) {\r\n    const state = useContext(StateContext),\r\n        [creatingUrq, setCreatingUrq] = useState(false);\r\n\r\n    const isSinglePageApp = useMemo(() => state && Object.keys(state).length > 0, [state]),\r\n        isDisabled = useMemo(() => !isAdmin() || (!urqId && Boolean(hasRenewalPolicy)), [urqId, hasRenewalPolicy]),\r\n        renewalTerm = useMemo(() => getRenewalTermFromPolicyNumber(policyNumber), [policyNumber]),\r\n        tooltip = useMemo(() => getUrqTooltip(), [urqId, renewalTerm]),\r\n        label = useMemo(() => getUrqLabel(), [urqId, renewalTerm]);\r\n\r\n    return {\r\n        creatingUrq,\r\n        isDisabled,\r\n        tooltip,\r\n        label,\r\n        getOrCreateUrq,\r\n        navigateToUrq,\r\n    };\r\n\r\n    async function getOrCreateUrq() {\r\n        if (urqId) {\r\n            navigateToUrq(urqId);\r\n            return;\r\n        }\r\n\r\n        try {\r\n            setCreatingUrq(true);\r\n            const requestUrl = productLine.switch({\r\n                onHomeowner: () => `/api/quotes/upcomingRenewal/create/${quoteId}`,\r\n                onFlood: productLine.throwNotImplementedError,\r\n                onCommercial: productLine.throwNotImplementedError,\r\n            });\r\n            const createdId = await fetchAndLog<string>(requestUrl, 'create upcoming renewal quote');\r\n            navigateToUrq(createdId);\r\n        } catch (e) {\r\n            if (isSinglePageApp) {\r\n                state.update(state => (state.error = e));\r\n            }\r\n\r\n            throw e;\r\n        } finally {\r\n            setCreatingUrq(false);\r\n        }\r\n    }\r\n\r\n    function navigateToUrq(urqId: string) {\r\n        const path = getPath(Path.UpcomingRenewalQuote, {\r\n            quoteId: urqId,\r\n            product: productLine.lowercaseName,\r\n        });\r\n        navigate(path);\r\n    }\r\n\r\n    function getUrqTooltip() {\r\n        if (Boolean(urqId)) {\r\n            return 'View existing URQ';\r\n        }\r\n\r\n        if (hasRenewalPolicy) {\r\n            return 'Cannot create URQ because renewal policy is already in place';\r\n        }\r\n\r\n        return `Create new URQ for upcoming renewal term ${renewalTerm}`;\r\n    }\r\n\r\n    function getUrqLabel() {\r\n        return `${Boolean(urqId) ? 'View' : 'Create'} URQ (${renewalTerm})`;\r\n    }\r\n}\r\n"],"names":["StateContext","createContext","AppSettingsContext","useGetOrCreateUrq","quoteId","productLine","policyNumber","urqId","hasRenewalPolicy","navigate","state","useContext","creatingUrq","setCreatingUrq","useState","isSinglePageApp","useMemo","isDisabled","isAdmin","renewalTerm","getRenewalTermFromPolicyNumber","tooltip","getUrqTooltip","label","getUrqLabel","getOrCreateUrq","navigateToUrq","requestUrl","createdId","fetchAndLog","e","path","getPath","Path"],"mappings":"+IAIa,MAAAA,EAAeC,EAAgC,cAAA,CAAsB,CAAA,EACvDA,EAAAA,cAAsB,CAAY,CAAA,EAChD,MAAAC,EAAqBD,EAAkC,cAAA,CAAiB,CAAA,ECC9E,SAASE,EAAkB,CAC9B,QAAAC,EACA,YAAAC,EACA,aAAAC,EACA,MAAAC,EACA,iBAAAC,EACA,SAAAC,CACJ,EAAgB,CACN,MAAAC,EAAQC,aAAWX,CAAY,EACjC,CAACY,EAAaC,CAAc,EAAIC,EAAA,SAAS,EAAK,EAE5CC,EAAkBC,UAAQ,IAAMN,GAAS,OAAO,KAAKA,CAAK,EAAE,OAAS,EAAG,CAACA,CAAK,CAAC,EACjFO,EAAaD,EAAAA,QAAQ,IAAM,CAACE,EAAc,GAAA,CAACX,GAAS,EAAQC,EAAoB,CAACD,EAAOC,CAAgB,CAAC,EACzGW,EAAcH,EAAAA,QAAQ,IAAMI,EAA+Bd,CAAY,EAAG,CAACA,CAAY,CAAC,EACxFe,EAAUL,EAAAA,QAAQ,IAAMM,IAAiB,CAACf,EAAOY,CAAW,CAAC,EAC7DI,EAAQP,EAAAA,QAAQ,IAAMQ,IAAe,CAACjB,EAAOY,CAAW,CAAC,EAEtD,MAAA,CACH,YAAAP,EACA,WAAAK,EACA,QAAAI,EACA,MAAAE,EACA,eAAAE,EACA,cAAAC,CACJ,EAEA,eAAeD,GAAiB,CAC5B,GAAIlB,EAAO,CACPmB,EAAcnB,CAAK,EACnB,MAAA,CAGA,GAAA,CACAM,EAAe,EAAI,EACb,MAAAc,EAAatB,EAAY,OAAO,CAClC,YAAa,IAAM,sCAAsCD,CAAO,GAChE,QAASC,EAAY,yBACrB,aAAcA,EAAY,wBAAA,CAC7B,EACKuB,EAAY,MAAMC,EAAoBF,EAAY,+BAA+B,EACvFD,EAAcE,CAAS,QAClBE,EAAG,CACR,MAAIf,GACAL,EAAM,OAAOA,GAAUA,EAAM,MAAQoB,CAAE,EAGrCA,CAAA,QACR,CACEjB,EAAe,EAAK,CAAA,CACxB,CAGJ,SAASa,EAAcnB,EAAe,CAC5B,MAAAwB,EAAOC,EAAQC,EAAK,qBAAsB,CAC5C,QAAS1B,EACT,QAASF,EAAY,aAAA,CACxB,EACDI,EAASsB,CAAI,CAAA,CAGjB,SAAST,GAAgB,CACjB,OAAQf,EACD,oBAGPC,EACO,+DAGJ,4CAA4CW,CAAW,EAAA,CAGlE,SAASK,GAAc,CACnB,MAAO,GAAWjB,EAAS,OAAS,QAAQ,SAASY,CAAW,GAAA,CAExE"}