{"version":3,"sources":["store/constants.ts","datadog.ts","config.ts","apis/response.ts","apis/utils.ts","apis/charges.ts","apis/customization.ts","apis/environments.ts","apis/customers.ts","apis/paymentSources.ts","apis/merchant.ts","apis/payLinks.ts","apis/promotions.ts","store/actions/global.ts","apis/configuration.ts","store/types/global.ts","store/actions/splitio.ts","store/actions/authentication.ts","store/actions/merchant.ts","store/actions/balanceTransfer.ts","apis/balanceTransfers.ts","store/actions/charge.ts","store/actions/settlement.ts","apis/settlements.ts","store/actions/customer.ts","store/actions/paymentSources.ts","store/actions/reports.ts","apis/reports.ts","store/actions/users.ts","apis/users.ts","store/actions/payLinks.ts","store/actions/returns.ts","store/actions/promotions.ts","store/actions/credits.ts","apis/credits.ts","store/actions/processingFees.ts","apis/processingFees.ts","store/actions/index.ts","store/selectors/global.ts","store/selectors/format.ts","store/selectors/charge.ts","store/selectors/customizations.ts","store/selectors/customer.ts","store/selectors/paylink.ts","store/selectors/user.ts","store/selectors/merchant.ts","store/selectors/index.ts","components/split/ToggleSplit.tsx","components/LinkContact.tsx","components/developers/RequestLiveModal.tsx","components/Loader.tsx","components/modals/SelectMerchantModal.tsx","components/NavMenu.tsx","components/SandboxBanner.tsx","components/Layout.tsx","components/RestrictedAccess.tsx","components/roles/ToggleRole.tsx","components/AppLoader.tsx","components/launchpad/TileLink.tsx","components/SHQRCode.tsx","pages/Home.tsx","components/AuthorizeRoute.tsx","components/Hidden.tsx","components/PlaceholderLoader.tsx","components/TableBody.tsx","pages/Developers.tsx","components/Pagination.tsx","components/settlement/SettlementsTable.tsx","components/DatePicker.tsx","components/ListFilters.tsx","pages/Settlements.tsx","components/payLinks/PayLinkStatusBadge.tsx","components/modals/PaylinkQRModal.tsx","components/Tooltip.tsx","components/modals/CustomersProfileEditModal.tsx","components/customer/CustomerDetails.tsx","components/payLinks/PayLinkDocuments.tsx","components/modals/SimpleConfirmationModal.tsx","components/modals/PayLinkSendErrorModal.tsx","components/payLinks/PayLinkActions.tsx","pages/Paylink/Paylink.tsx","components/forms/Customer.tsx","components/customer/CustomersTable.tsx","pages/Paylink/CreateStep1.tsx","components/NumberInput.tsx","components/payLinks/PayLinkFileUploader.tsx","pages/Paylink/CreateStep2.tsx","pages/Paylink/CreateStep3.tsx","pages/Paylink/CreateStep4.tsx","pages/Paylink/CreatePaylink.tsx","components/payLinks/PayLinkListFilters.tsx","components/payLinks/PayLinksTable.tsx","pages/Paylink/Paylinks.tsx","components/charge/ChargeStatusBadge.tsx","components/modals/ConfirmationModal.tsx","components/charge/ChargeActions.tsx","components/paymentSource/PaymentSourceDetails.tsx","components/charge/ReturnDetails.tsx","components/charge/TipDetails.tsx","pages/Transaction.tsx","components/charge/ChargesTable.tsx","pages/Transactions.tsx","pages/Customers.tsx","components/paymentSource/PaymentSourceActions.tsx","components/paymentSource/UnlinkAllButton.tsx","components/paymentSource/PaymentSourceTable.tsx","components/credits/CreditsTable.tsx","pages/Customer.tsx","components/balanceTransfer/BalanceTransfersTable.tsx","components/balanceTransfer/BalanceTransfersSummary.tsx","pages/Settlement.tsx","components/reports/AutomatedReportsActions.tsx","components/reports/AutomatedReportsTable.tsx","pages/Reports/Reports.tsx","components/reports/MonthSelector.tsx","pages/Reports/OutstandingReturns.tsx","pages/Reports/Transactions.tsx","pages/Reports/Settlements.tsx","pages/Reports/SettlementDetails.tsx","pages/Reports/ActivityDetails.tsx","components/modals/EditUserRolesModal.tsx","components/users/UsersActions.tsx","components/users/UsersTable.tsx","pages/Admin/Admin.tsx","pages/Admin/AddUser.tsx","pages/Reports/AutomatedMailing.tsx","components/promotions/PromotionsTable.tsx","pages/Promotions.tsx","components/promotions/PromotionReportDetails.tsx","components/promotions/PromotionDetails.tsx","pages/InStore.tsx","App.tsx","store/reducers/authentication.ts","store/reducers/balanceTransfer.ts","store/reducers/charge.ts","store/reducers/global.ts","store/reducers/settlement.ts","store/reducers/customer.ts","store/reducers/paymentSources.ts","store/reducers/merchant.ts","store/reducers/reports.ts","store/reducers/users.ts","store/reducers/payLink.ts","store/reducers/returns.ts","store/reducers/rewards.ts","store/reducers/promotions.ts","store/reducers/credits.ts","store/reducers/processingFees.ts","store/index.ts","index.tsx","store/configureStore.ts"],"names":["SET_ACTION_REQUEST_STATUS","RESET_ACTION_STATUS","SET_ACTION_RESPONSE_ERROR","RESET_ACTION_RESPONSE_ERROR","SET_CONFIGURATION","LOGIN","READY","SWITCH_CONTEXT","SET_ENVIRONMENTS","SET_ENVIRONMENT_DATA","SHOW_REQUEST_LIVE_DATA_MESSAGE","SHOW_SWITCHED_SANDBOX_MESSAGE","SET_MERCHANT","SET_MERCHANTS","SET_CHARGES","UPSERT_CHARGE","CLEAN_CHARGES","SET_CHARGE_TIP","SET_RETURN","CLEAN_RETURNS","SET_EARNED_POINTS_YTD","SET_SETTLEMENTS","ADD_SETTLEMENT","SET_BALANCE_TRANSFERS","SET_BALANCE_TRANSFER_SUMMARY","SET_CUSTOMERS","ADD_CUSTOMER","CLEAN_CUSTOMERS","UPDATE_CUSTOMER","SET_PAYMENT_SOURCE","SET_PAYMENT_SOURCES","CLEAN_PAYMENT_SOURCE","UPDATE_PAYMENT_SOURCE","SET_TRANSACTIONS_REPORT","SET_AUTOMATED_MAILING_REPORTS","ADD_AUTOMATED_MAILING_REPORT","REMOVE_AUTOMATED_MAILING_REPORT","SET_PROMOTION_REPORT","SET_USERS","SET_ROLES","ADD_USER","REMOVE_USER","UPDATE_USER_ROLES","SET_PAYLINKS","UPSERT_PAYLINK","ADD_PAYLINK","SET_PAYLINK","CLEAN_PAYLINK","SET_PROMOTION","SET_PROMOTIONS","SET_CREDIT","SET_CREDITS","SET_PROCESSING_FEE_AMOUNT","datadogLogs","setLoggerGlobalContext","service","configuration","sentry_dsn","environment","oidc","authority","client_id","redirect_uri","post_logout_redirect_uri","launch_darkly","split","api_key","data_dog","client_token","site","admin_uri","portal_url","setConfiguration","newConfiguration","merge","_ref","clientToken","init","env","forwardErrorsToLogs","sampleRate","DataDog","Sentry","dsn","ROUTE","HOME","AUTH_CALLBACK","CUSTOMER","CUSTOMERS","TRANSACTIONS","TRANSACTION","SETTLEMENTS","SETTLEMENT","DEVELOPERS","REPORTS","REWARDS","ADMIN","ADMIN_ADD_USER","REPORTS_TRANSACTIONS","REPORTS_OUTSTANDING_REPORTS","REPORTS_SETTLEMENTS","REPORTS_SETTLEMENT_DETAILS","REPORTS_ACTIVITY_DETAILS","REPORTS_AUTOMATED_MAILING","REPORTS_VIEW_AUTOMATED_MAILING","PAYLINK_INDEX","PAYLINK_CREATE","PAYLINKS","PAYLINK","PROMOTION","PROMOTIONS","IN_STORE","apiEnvironment","localStorage","getItem","accessToken","merchantId","setApiEnvironment","setItem","getApiEnvironment","setMerchantId","id","getMerchantId","setAccessToken","token","ResponseErrorType","ResponseErrorCode","ResponseError","Error","constructor","type","code","message","arguments","length","undefined","property","super","this","segmentListLimit","updateRequestConfig","config","headers","Authorization","suppressMerchantHeader","cancelTokenIds","async","sendRequest","cancelTokenSource","cancelTokenId","cancel","axios","CancelToken","source","_cancelTokenSource","request","cancelToken","e","isCancel","error","errorData","response","data","Unknown","requestConfig","download","res","disposition","contentDisposition","parse","fileDownload","parameters","filename","CHARGE_STATUS","listChargesCancelTokenId","uniqueId","CustomizationType","getEnvironments","method","url","result","listCustomersCancelTokenId","deactivatePaymentSource","sourceId","getMerchant","the_result","Array","isArray","PAY_LINK_STATUS","listPayLinksCancelTokenId","sendPayLinkSms","payLinkId","sendPayLinkEmail","createPayLinkEmail","TRIGGER_TYPE","setActionRequestingAction","name","isRequesting","payload","setActionResponseErrorAction","resetActionResponseErrorAction","resetActionStatusAction","setEnvironmentsAction","environments","setEnvironmentDataAction","environmentData","showRequestLiveDataMessageAction","show","showSwitchedSandboxDataMessageAction","switchContextAction","switching","fetchConfiguration","dispatch","getConfiguration","toggleLiveDataAction","getState","hasLiveData","merchant","selected","is_approved_live","global","promise","switchingAction","Promise","resolve","setTimeout","SPLIT_FLAG","USER_ROLE","fetchSplitTreatmentAction","flag","selectTreatmentValue","splitio","getTreatments","splitNames","fetchMerchantTreatmentsAction","sdkBrowserConfig","core","authorizationKey","key","initSplitSdk","Object","values","setUserRolesAction","roles","user","loginUser","oktaAuth","authState","getUser","tokenType","email","cached_merchant_id","merchant_id","merchants","withAssociations","query","stringify","api","arr","find","has_live_data","setMerchantAction","isReady","window","analytics","identify","sub","domain","location","hostname","fetchBalanceTransfersAction","options","body","limit","list","fetchBalanceTransferSummaryAction","upsertChargeAction","charge","fetchChargesAction","call","actionName","onSuccess","fetchChargeAction","chargeId","items","value","fetchTipAction","tip_model","upsertTransactionAction","action","formData","fetchSettlementsAction","fetchSettlementAction","settlementId","settlement","addCustomerAction","customer","cleanCustomersAction","fetchCustomersAction","createCustomerAction","fetchCustomerAction","customerId","patchCustomersAction","updateCustomersAction","cleanPaymentSourceAction","updatePaymentSourceAction","fetchPaymentSourceAction","paymentSourceId","fetchPaymentSourcesAction","deactivatePaymentSourceAction","paymentSource","paymentSources","filter","el","unique_hash","deactivateAllPaymentSourcesAction","active","setSelectedMerchantAction","removeAutomatedMailingReportAction","automatedMailingReportId","fetchTransactionsReportAction","transactions","fetchAutomatedMailingReportsAction","automatedMailingReports","addAutomatedMailingReportAction","details","automatedMailingReport","deleteAutomatedMailingReportAction","reportId","fetchPromotionReportAction","promotionId","promotionReport","fetchDashboardUsersAction","addDashboardUserAction","addUserAction","removeDashboardUserAction","updateDashboardUserRoleAction","updateUserRoleAction","cleanPayLinkAction","fetchPayLinksAction","fetchPayLinkAction","payLinks","payLink","createPayLinkAction","_data$merchant$commun","documents","order","createEmailModel","first_name","last_name","merchant_name","communication_safe_name","display_name","pay_link_id","pay_link_url","sendSmsAction","sendEmailAction","cancelPayLinkAction","fetchReturnAction","chargeReturn","returns","charge_id","return","fetchPromotionAction","selectedPromotion","fetchPromotionsAction","skip","fetchCreditsAction","fetchProcessingFeeAmountAction","chargeAmount","processing_fee_amount","payment_processing_fee","onCancel","onError","numberRange","start","end","step","output","i","push","isActionRequesting","requests","status","getActionStatus","statuses","getResponseError","responseError","customerRoute","replace","payLinkRoute","transactionRoute","transactionsPaymentFilterRoute","settlementRoute","promotionRoute","outstandingReportsRoute","filterType","getSplitFlagValue","flags","REPORTS_TAB","TRANSACTIONS_REPORTS","includes","toLowerCaseLastTwoChars","slice","toLowerCase","formatDateIso","toFormat","formatDate","tz","DateTime","fromISO","setZone","formatDateTimeMinutesWithYear","formatDateTimeSecondsWithYear","formatAmount","amount","withoutSign","parseInt","toLocaleString","minimumFractionDigits","maximumFractionDigits","formatTipAmount","tipAmount","formatNumberNoDecimal","formatCustomerName","individual","formatMobile","mobile","isSearch","charAt","join","domesticUsRegex","formatMobilePhoneNumberReadable","test","formatted","substr","formatHypenated","hyphenatedString","formatUnderscored","formatCapitalizeFirstLetter","text","toUpperCase","formatKB","size","Math","round","toFixed","formatStatus","upperFirst","getCustomization","state","_merchant$customizati","_merchant$customizati2","CustomerName","ProviderName","customization","pluralize","getCustomerName","formatErrorMessage","toString","isAdmin","normalized_name","MERCHANT_ALLADMIN","isRegularUser","MERCHANT_ALLUSERS","noAccessStrongholdDirect","NO_STRONGHOLD_DIRECT","canCreatePayLinkSD","STRONGHOLD_DIRECT_B2B","canCreatePayLinkB2B","canCreateReports","MERCHANT_REPORTING","canUpdateAmount","MERCHANT_TRANSACTIONS_EDIT","formatRoleType","role","formattedRole","formatRoleTypeFromString","roleType","toolTipMessage","getPortalUrl","short_name","selectors","format","customizations","paylink","ToggleSplit","React","componentDidMount","props","render","treatment","unactiveComponent","children","connect","mapStateToProps","bindActionCreators","LinkContact","mailto","subject","_jsx","href","target","RequestLiveModal","showModal","switchedToSandbox","_jsxs","Modal","isOpen","toggle","ModalHeader","ModalBody","className","ModalFooter","Button","color","onClick","Loader","style","borderWidth","Spinner","SelectMerchantModal","selectedMerchant","searchQuery","isLoading","onSelectMerchant","setState","onInputChange","filteredMerchants","componentDidUpdate","prevProps","FontAwesomeIcon","icon","faSearch","Input","bsSize","onChange","placeholder","minHeight","maxHeight","map","block","disabled","onSubmit","NavMenuWrapped","withOktaAuth","dropdownOpen","toggleModal","onMouseEnter","onMouseLeave","signOut","postLogoutRedirectUri","signOutOptions","renderMerchantSelector","fromRestricted","NavItem","currentMerchant","_Fragment","height","width","src","image_url","alt","canCreatePaylinks","toggleRequestLiveModal","renderUserProfile","_authState$isAuthenti","manageAccountUri","adminUri","isInternalUser","isLight","isAuthenticated","Dropdown","DropdownToggle","nav","drop","DropdownMenu","DropdownItem","renderNavBar","customCustomerName","showLiveData","customCustomerNamePlural","Nav","navbar","divider","NavLink","to","Form","inline","Label","CustomInput","checked","readOnly","showRequestLiveDataMessage","showSwitchedSandboxDataMessage","Navbar","Container","fluid","rel","dark","NavbarBrand","NavbarToggler","expand","Collapse","getManageActionUri","withRouter","authentication","showSwitchedToSandboxMessage","switchingContext","actions","SandboxBannerWrapped","hasSwitched","_this$props$authState","_this$props$authState2","isSandbox","borderBottomLeftRadius","borderBottomRightRadius","LayoutBreadcrumbs","isLastItem","index","Breadcrumb","listClassName","BreadcrumbItem","isId","title","Link","Layout","hideSandboxBanner","breadcrumbItems","NavMenu","SandboxBanner","RestrictedAccess","_this$props$hasMercha","hasMerchants","Alert","faExclamationTriangle","ToggleRole","hasAccess","AppLoaderWrapped","isInitialized","isAuthenticating","BarLoader","css","newImageUrl","getBgColor","bgColor","getHeight","getTitleSize","renderLink","subTitle","textColor","TileLink","link","newTile","fullHeight","externalLink","defaultImgUrl","SHQRCode","imgUrl","QRCodeCanvas","includeMargin","level","imageSettings","excavate","HomeWrapped","signIn","signInWithRedirect","portalUrl","Row","Col","md","paddingBottom","AuthorizeRouteWrapped","_AuthorizeRoute","loginIfNotAuthenticated","featureFlag","userRole","AppLoader","redirectUrl","Redirect","Route","defaultProps","Hidden","top","left","transform","zIndex","onShow","PlaceholderLoader","margin","TableBody","rows","row","columns","col","loaderWidth","Developers","showSecretKey","renderKey","apiKey","keyValue","publishable","renderTable","sandboxKeys","liveKeys","keys","tableBody","noKeysText","CardBody","faCheckCircle","faMinusCircle","last_used_at","timezone","created_at","Table","responsive","_state$merchant$selec","sandbox_keys","live_keys","getPageSkip","page","Pagination","skipped","total","currentPage","getCurrentPage","floor","paginationInfo","Paginator","build","getPaginationInfo","lastPageSkip","total_pages","previousBigStep","getPreviousBigStep","current_page","has","hasPagesLeft","first_page","nextBigStep","getNextBigStep","last_page","pages","PaginationItem","PaginationLink","PaginationBS","first","last","has_next_page","SettlementsTable","hasNoRows","settlements","renderNoRows","noRowsComponent","hover","minWidth","settlementsLimit","onRowClick","date","gross_amount","net_amount","fee","description","settlementsTotal","settlementsSkipped","onGoTo","label","InputGroup","InputGroupAddon","addonType","InputGroupText","DatePicker","p","ReactDatePicker","showYearDropdown","scrollableYearDropdown","yearDropdownItemNumber","customInput","wrapperClassName","fromChargeStatusToOption","defaultDatePickerPlaceholders","from","ListFilters","notCaptured","AUTHORIZED","ATTEMPTING_COLLECTION","STOPPED_COLLECTION","CANCELED","CAPTURE_FAILED","CREATED","DISPUTED","REFUND_PENDING","REFUNDED","onStatusChange","onChargeStatusChange","onPaymentSourceChange","search","chargeStatuses","dateIcon","noChargeCaptured","xor","CAPTURED","captured","noStatus","datePickerPlaceholders","toJSDate","onDateFromChange","fromJSDate","maxDate","now","placeholderText","onDateToChange","minDate","ButtonGroup","Select","isMulti","components","IndicatorSeparator","Settlements","querystring","history","fetchSettlements","updateUrl","pathname","onRowClicked","handleDateFromChange","fetchSettlementsDebounced","handleDateToChange","debounce","renderAdvancedSearch","PayLinkStatusBadge","classes","formattedStatus","USED","PaylinkQRModal","renderSuccess","Tooltip","tooltip","placement","tooltipOpen","setTooltipOpen","useState","BSTooltip","CustomersProfileEditModal","date_of_birth","handleChange","country","external_id","errorMessage","callback","setCustomer","updatedCustomer","showMobileOnly","showEmailOnly","editForm","headerTitle","sm","InputMask","mask","CustomerDetails","toggleEditForm","showEditForm","successScreenType","dob","deliveryBlocked","dateString","expiration","Date","canEditDetails","customerDetailsPage","emailBlocked","email_block_expires_at","smsBlocked","sms_block_expires_at","is_blocked","faUserSlash","PayLinkDocuments","document","file_name","file_size","SimpleConfirmationModal","spinner","PayLinkSendErrorModal","onCreate","PayLinkActions","DELAY_ACTION_DURATION","ready","smsDisabled","emailDisabled","showCancelModal","showSmsSendErrorModal","showEmailSendErrorModal","onSmsResend","onEmailResend","toggleCancelModal","togglePayLinkSmsSendErrorModal","togglePayLinkEmailSendErrorModal","onActionClick","setLink","_merchant$communicati","renderDropdownItem","isDisabled","isBlocked","blockedReason","smsErrorMessage","emailErrorMessage","smsBlockedReason","emailBlockedReason","UncontrolledDropdown","caret","userEmail","PayLink","payLinkType","match","params","customer_id","showQRCode","setPayLinkType","layoutBreadcrumbItems","external_charge_id","total_amount","convenience_fee","expires_at","ownProps","CustomerForm","firstName","lastName","externalId","field","street_location","customers","onSubmitCallback","customerError","CustomersTable","strongholdDirectPage","customersLimit","customersTotal","customersSkipped","searchIcon","CreateStep1","activeTab","fetchCustomers","fetchCustomersDebounced","onSubmitCustomerCallback","toggleTab","renderCreateCustomer","renderSearchCustomer","faPlusCircle","TabContent","TabPane","tabId","VALID_FIRST","VALID_NEXT","NumberInput","handleKeyDown","max","onValueChange","keyCode","currentTarget","blur","valueString","nextValue","nextValueString","Number","valueDisplay","pow","digits","prefix","suffix","trunc","abs","isFinite","isNaN","inputMode","onKeyDown","PayLinkFileUploader","Component","MAX_LENGTH","errors","files","fileValidation","fileList","errorArray","fileArray","fileSize","onChangeFile","renderFileNames","fileName","_this$props$multiple","isMultiple","multiple","hasFiles","uploadDocClasses","htmlFor","accept","fileType","display","mobileIcon","emailIcon","CreateStep2","amountInput","convenienceFee","onOrderIdChange","setOrderId","orderId","onAmountChange","setAmount","onSetCustomer","onFileChange","setFiles","selectDeliveryType","deliveryType","setDeliveryType","setStep","isStrongholdDirectB2B","strongholdDirectRequest","noFiles","innerRef","input","xs","isCreatingPayLink","CreatePaylink3","getLinkMethod","linkMethod","strongholdDirectRequestModel","totalAmount","createPayLinkRequest","tip","beneficiary_name","stand_alone","FormData","append","x","renderFileList","forEach","file","processingFee","offset","processingFees","CreatePaylink4","showSendErrorModal","onResetForm","resetForm","onViewDetails","togglePayLinkSendErrorModal","CreatePaylink","stepNumber","renderSteps","baseClasses","CreateStep3","CreateStep4","fromPayLinkStatusToOption","ListPayLinkFilters","onPayLinkStatusChange","onSearchChange","payLinkStatuses","uncaptured","PayLinksTable","payLinksLimit","payLinksTotal","payLinksSkipped","Paylinks","fetchPayLinks","fetchPayLinksDebounced","onEmailChange","onMobileChange","handleStatusesChange","renderSearch","open","isRequestingPayLinks","ChargeStatusBadge","ConfirmationModal","captcha","errorCode","formatModalTitle","renderUserDetails","dashBoardUser","user_type","renderCaptureCaptcha","for","renderUpdateAmount","updatedAmount","typeCapture","typeUpdateAmount","typeUser","typeRemoveUser","formattedAmount","typeElement","header","ChargeActions","disabledToolTipMessage","enabled","renderDropDown","enableCancel","enableCapture","enableUpdateAmount","enableRefund","renderSingleChargeAction","faEdit","actionType","PaymentSourceDetails","ReturnDetails","returnModel","charge_status","return_reason","events","event","TipDetails","tipModel","drawer_id","terminal_id","authorized_at","captured_at","getChargeStatusDescription","Transaction","transactionId","originatedFromChargeId","payment_source_id","credit","promotion","redeemed","merchant_convenience_fee","statement_reference","transactionCredits","credits","c","originated_from_charge_id","sort","a","b","promotions","promotion_id","ChargesTable","charges","chargesTotal","chargesLimit","chargesSkipped","some","Transactions","fetchCharges","fetchChargesDebounced","downloadChargesReport","faInfoCircle","direction","outline","faEllipsisH","right","CustomersDashboard","customerName","customerNamePlural","PaymentSourceActions","UnlinkAllButton","PaymentSourceTable","activeIcon","unActiveIcon","activeSources","s","CreditsTable","formatRedeemedDate","redeemedDate","updated_at","showPromoColumn","creditsLimit","onOriginChargeClick","onRedeemedChargeClick","onFlexColumnClick","concat","creditsTotal","creditsSkipped","Customer","onChargeRowClicked","onCreditOriginChargeIdClicked","onCreditRedeemedChargeIdClicked","redeemed_with_charge_id","onCreditPromotionIdClicked","fetchCredits","isRequestingCharges","isRequestingPaymentSources","uniqBy","chevronRight","BalanceTransfersTable","balanceTransfers","tipChargeRoute","redirectingTipRoute","tipId","transactionLink","balanceTransfer","associated_with","renderLoadingPlaceholder","renderTransfer","external_associated_with","balanceTransfersTotal","balanceTransfersSkipped","balanceTransfersLimit","BalanceTransfersSummary","renderRow","gross","net","balanceTransferSummary","charge_settlement_amount","tip_settlement_amount","charge_collection_settlement_amount","tip_collection_settlement_amount","promotional_credit_reversal_amount","charge_reversal_amount","tip_reversal_amount","adjustment_amount","promotional_credit_settlement_amount","summary","Settlement","downloadSettlementDetailsReportById","_state$merchant$selec2","AutomatedReportsActions","AutomatedReportsTable","automatedReports","report","interval","Reports","reports","automatedMailing","MonthSelector","today","handleMonthChange","startDate","year","monthNumber","endDate","onChangeFrom","onChangeTo","handleYearChange","month","renderMonthButton","isActive","readableMonth","local","minus","years","faCaretLeft","plus","faCaretRight","OutstandingReturnsReport","getFilterType","monthStart","startOf","downloadOutstandingReturnsReport","_this$props$match$par","TransactionsReport","placeHolderWidth","placeHolderMargin","months","days","fetchTransactionsReportDebounced","fetchTransactionReport","downloadTransactionsReport","renderTransactionsSummary","isDebit","classText","convenience","fees","renderTotals","renderReport","legalName","Card","CardHeader","faReceipt","faFileCsv","fixedWidth","merchantName","returns_credit","adjustments_credit","refunds","returns_debit","adjustments_debit","legal_name","SettlmentsReport","downloadSettlementsReport","SettlmentDetailsReport","downloadSettlementDetailsReport","ActivityDetailsReport","downloadActivityDetailsReport","EditUserRolesModal","initState","userType","setRole","hideDivider","onRoleChange","renderRoleSelect","UsersActions","dashBoardUserId","owner_id","formatAction","onEditRoleSubmit","roleRemovalErrorMessage","faPencilAlt","UsersTable","dashboardUsers","sortedDashboardUsers","sortBy","Admin","faPlus","users","AddUser","confirmEmail","firstNameError","lastNameError","emailConfirmationError","isEmailConfirmed","emailValidationError","successMessage","onConfirmEmailChange","onFirstNameChange","onLastNameChange","validateEmail","validateEmailsMatch","validateFirstName","trim","validateLastName","addUserError","hasEmailValidationError","hasEmailConfirmationError","hasSuccessMsg","hasFirstNameError","hasLastNameError","UncontrolledAlert","onBlur","AutomatedMailingReport","handleTypeChange","reportType","handleIntervalChange","handleUserChange","intervalType","renderMonthDayInterval","dayCount","renderUserSelect","fetchingUsers","FormGroup","renderWeekDayInterval","renderReportTypeSelect","validationError","valid","PromotionsTable","promotionsLimit","start_date","end_date","promotionsTotal","promotionsSkipped","PromotionsDashboard","fetchPromotions","PromotionReportDetails","renderCount","count","renderValue","promo_transactions_earned_count","promo_transactions_earned_value","promo_transactions_redeemed_count","promo_transactions_redeemed_value","transactions_in_promo_period_count","transactions_in_promo_period_value","average_transactions_in_promo_period_count","average_transaction_in_promo_period_value","average_transactions_by_day_prior30_count","average_transaction_by_day_prior30_value","average_transactions_by_day_prior90_count","average_transaction_by_day_prior90_value","PromotionDetails","onOriginChargeIdClicked","onRedeemedChargeIdClicked","onCreditCustomerClicked","setEndDate","disabled_on","promotion_type","benefit_type","trigger_type","PURCHASE","immediate_use","first_purchase_only","single_use","fixed_amount","min_charge_amount","relink_allowed","InStore","App","restoreOriginalUri","OktaAuth","issuer","clientId","redirectUri","_oktaAuth","originalUri","toRelativeUrl","origin","tokenManager","on","newToken","isAccessToken","Security","Switch","AuthorizeRoute","path","component","Promotions","Paylink","CreatePayLink","Customers","SettlementsReport","SettlementDetailsReport","LoginCallback","Home","unloadedState","aggregated","captured_charges","captured_fees","customer_average","disputes","failed_payments","new_customers","succesful_payments","unloadedActionStatusState","earnedPointsYTD","selectedCredit","reducers","tmp","clone","unionBy","item","orderBy","filtered","updatedArr","splitReducer","updatedPayLink","rewards","baseUrl","getElementsByTagName","getAttribute","createBrowserHistory","basename","prevPath","listen","store","initialState","middleware","thunk","routerMiddleware","rootReducer","combineReducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","compose","applyMiddleware","configureStore","ReactDOM","Provider","ConnectedRouter","getElementById"],"mappings":"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","file":"static/js/main.e73c834b.chunk.js","sourcesContent":["/**\n * Set the requesting status for an action\n */\nexport const SET_ACTION_REQUEST_STATUS = 'SET_ACTION_REQUEST_STATUS';\nexport type SET_ACTION_REQUEST_STATUS = typeof SET_ACTION_REQUEST_STATUS;\n/**\n * Clean all the actions from the store\n */\nexport const RESET_ACTION_STATUS = 'RESET_ACTION_STATUS';\nexport type RESET_ACTION_STATUS = typeof RESET_ACTION_STATUS;\n/**\n * Set an error for an action, this will set the action as terminated\n */\nexport const SET_ACTION_RESPONSE_ERROR = 'SET_ACTION_RESPONSE_ERROR';\nexport type SET_ACTION_RESPONSE_ERROR = typeof SET_ACTION_RESPONSE_ERROR;\nexport const RESET_ACTION_RESPONSE_ERROR = 'RESET_ACTION_RESPONSE_ERROR';\nexport type RESET_ACTION_RESPONSE_ERROR = typeof RESET_ACTION_RESPONSE_ERROR;\nexport const SET_CONFIGURATION = 'SET_CONFIGURATION';\nexport type SET_CONFIGURATION = typeof SET_CONFIGURATION;\n\nexport const LOGIN = 'LOGIN';\nexport type LOGIN = typeof LOGIN;\n\nexport const READY = 'READY';\nexport type READY = typeof READY;\n\n/**\n * Register the action of switching for a different environment or merchant\n */\nexport const SWITCH_CONTEXT = 'SWITCH_CONTEXT';\nexport type SWITCH_CONTEXT = typeof SWITCH_CONTEXT;\n\n// Api Keys\nexport const SET_ENVIRONMENTS = 'SET_ENVIRONMENTS';\nexport type SET_ENVIRONMENTS = typeof SET_ENVIRONMENTS;\nexport const SET_ENVIRONMENT_DATA = 'SHOW_LIVE_DATA';\nexport type SET_ENVIRONMENT_DATA = typeof SET_ENVIRONMENT_DATA;\nexport const SHOW_REQUEST_LIVE_DATA_MESSAGE = 'SHOW_REQUEST_LIVE_DATA_MESSAGE';\nexport type SHOW_REQUEST_LIVE_DATA_MESSAGE = typeof SHOW_REQUEST_LIVE_DATA_MESSAGE;\nexport const SHOW_SWITCHED_SANDBOX_MESSAGE = 'SHOW_SWITCHED_SANDBOX_MESSAGE';\nexport type SHOW_SWITCHED_SANDBOX_MESSAGE = typeof SHOW_SWITCHED_SANDBOX_MESSAGE;\n\n// Merchants\nexport const SET_MERCHANT = 'SET_MERCHANT';\nexport type SET_MERCHANT = typeof SET_MERCHANT;\nexport const SET_MERCHANTS = 'SET_MERCHANTS';\nexport type SET_MERCHANTS = typeof SET_MERCHANTS;\n\n// Charges\nexport const SET_CHARGES = 'SET_CHARGES';\nexport type SET_CHARGES = typeof SET_CHARGES;\nexport const UPSERT_CHARGE = 'UPSERT_CHARGE';\nexport type UPSERT_CHARGE = typeof UPSERT_CHARGE;\nexport const CLEAN_CHARGES = 'CLEAN_CHARGES';\nexport type CLEAN_CHARGES = typeof CLEAN_CHARGES;\nexport const REFUND_CHARGE = 'REFUND_CHARGE';\nexport type REFUND_CHARGE = typeof REFUND_CHARGE;\nexport const SET_CHARGE_TIP = 'SET_CHARGE_TIP';\nexport type SET_CHARGE_TIP = typeof SET_CHARGE_TIP;\n\n// Returns\nexport const SET_RETURN = 'SET_RETURN';\nexport type SET_RETURN = typeof SET_RETURN;\nexport const CLEAN_RETURNS = 'CLEAN_RETURNS';\nexport type CLEAN_RETURNS = typeof CLEAN_RETURNS;\n\n// Rewards\nexport const SET_EARNED_POINTS_YTD = 'SET_EARNED_POINTS_YTD';\nexport type SET_EARNED_POINTS_YTD = typeof SET_EARNED_POINTS_YTD;\n\n// Settlements\nexport const SET_SETTLEMENTS = 'SET_SETTLEMENTS';\nexport type SET_SETTLEMENTS = typeof SET_SETTLEMENTS;\nexport const ADD_SETTLEMENT = 'ADD_SETTLEMENT';\nexport type ADD_SETTLEMENT = typeof ADD_SETTLEMENT;\n\n// Balance transfers\nexport const SET_BALANCE_TRANSFERS = 'SET_BALANCE_TRANSFERS';\nexport type SET_BALANCE_TRANSFERS = typeof SET_BALANCE_TRANSFERS;\nexport const SET_BALANCE_TRANSFER_SUMMARY = 'SET_BALANCE_TRANSFER_SUMMARY';\nexport type SET_BALANCE_TRANSFER_SUMMARY = typeof SET_BALANCE_TRANSFER_SUMMARY;\n\n// Customers\nexport const SET_CUSTOMERS = 'SET_CUSTOMERS';\nexport type SET_CUSTOMERS = typeof SET_CUSTOMERS;\nexport const ADD_CUSTOMER = 'ADD_CUSTOMER';\nexport type ADD_CUSTOMER = typeof ADD_CUSTOMER;\nexport const CLEAN_CUSTOMERS = 'CLEAN_CUSTOMERS';\nexport type CLEAN_CUSTOMERS = typeof CLEAN_CUSTOMERS;\nexport const UPDATE_CUSTOMER = 'UPDATE_CUSTOMER';\nexport type UPDATE_CUSTOMER = typeof UPDATE_CUSTOMER;\n\n// Payment sources\nexport const SET_PAYMENT_SOURCE = 'SET_PAYMENT_SOURCE';\nexport type SET_PAYMENT_SOURCE = typeof SET_PAYMENT_SOURCE;\nexport const SET_PAYMENT_SOURCES = 'SET_PAYMENT_SOURCES';\nexport type SET_PAYMENT_SOURCES = typeof SET_PAYMENT_SOURCES;\nexport const CLEAN_PAYMENT_SOURCE = 'CLEAN_PAYMENT_SOURCE';\nexport type CLEAN_PAYMENT_SOURCE = typeof CLEAN_PAYMENT_SOURCE;\nexport const UPDATE_PAYMENT_SOURCE = 'UPDATE_PAYMENT_SOURCE';\nexport type UPDATE_PAYMENT_SOURCE = typeof UPDATE_PAYMENT_SOURCE;\n\n// Reports\nexport const SET_TRANSACTIONS_REPORT = 'SET_TRANSACTIONS_REPORT';\nexport type SET_TRANSACTIONS_REPORT = typeof SET_TRANSACTIONS_REPORT;\nexport const SET_AUTOMATED_MAILING_REPORTS = 'SET_AUTOMATED_MAILING_REPORTS';\nexport type SET_AUTOMATED_MAILING_REPORTS = typeof SET_AUTOMATED_MAILING_REPORTS;\nexport const ADD_AUTOMATED_MAILING_REPORT = 'ADD_AUTOMATED_MAILING_REPORT';\nexport type ADD_AUTOMATED_MAILING_REPORT = typeof ADD_AUTOMATED_MAILING_REPORT;\nexport const REMOVE_AUTOMATED_MAILING_REPORT = 'REMOVE_AUTOMATED_MAILING_REPORT';\nexport type REMOVE_AUTOMATED_MAILING_REPORT = typeof REMOVE_AUTOMATED_MAILING_REPORT;\n\nexport const SET_PROMOTION_REPORT = 'SET_PROMOTION_REPORT';\nexport type SET_PROMOTION_REPORT = typeof SET_PROMOTION_REPORT;\n\n// Users\nexport const SET_USERS = 'SET_USERS';\nexport type SET_USERS = typeof SET_USERS;\nexport const SET_ROLES = 'SET_ROLES';\nexport type SET_ROLES = typeof SET_ROLES;\nexport const ADD_USER = 'ADD_USER';\nexport type ADD_USER = typeof ADD_USER;\nexport const REMOVE_USER = 'REMOVE_USER';\nexport type REMOVE_USER = typeof REMOVE_USER;\nexport const UPDATE_USER_ROLES = 'UPDATE_USER_ROLES';\nexport type UPDATE_USER_ROLES = typeof UPDATE_USER_ROLES;\nexport const SHOW_DEVELOPER_SIGN_UP = 'SHOW_DEVELOPER_SIGN_UP';\nexport type SHOW_DEVELOPER_SIGN_UP = typeof SHOW_DEVELOPER_SIGN_UP;\n\n// Pay Links\nexport const SET_PAYLINKS = 'SET_PAYLINKS';\nexport type SET_PAYLINKS = typeof SET_PAYLINKS;\nexport const UPSERT_PAYLINK = 'UPSERT_PAYLINK';\nexport type UPSERT_PAYLINK = typeof UPSERT_PAYLINK;\nexport const ADD_PAYLINK = 'ADD_PAYLINK';\nexport type ADD_PAYLINK = typeof ADD_PAYLINK;\nexport const SET_PAYLINK = 'SET_PAYLINK';\nexport type SET_PAYLINK = typeof SET_PAYLINK;\nexport const CLEAN_PAYLINK = 'CLEAN_PAYLINK';\nexport type CLEAN_PAYLINK = typeof CLEAN_PAYLINK;\n\n// Promotions\nexport const SET_PROMOTION = 'SET_PROMOTION';\nexport type SET_PROMOTION = typeof SET_PROMOTION;\nexport const SET_PROMOTIONS = 'SET_PROMOTIONS';\nexport type SET_PROMOTIONS = typeof SET_PROMOTIONS;\n\n// Credits\nexport const SET_CREDIT = 'SET_CREDIT';\nexport type SET_CREDIT = typeof SET_CREDIT;\nexport const SET_CREDITS = 'SET_CREDITS';\nexport type SET_CREDITS = typeof SET_CREDITS;\n\n// Processing Fees\nexport const SET_PROCESSING_FEE_AMOUNT = 'SET_PROCESSING_FEE_AMOUNT';\nexport type SET_PROCESSING_FEE_AMOUNT = typeof SET_PROCESSING_FEE_AMOUNT;\n","import { datadogLogs, StatusType } from '@datadog/browser-logs';\n\ndatadogLogs.setLoggerGlobalContext({ service: 'pay-dashboard' });\n\nexport function initializeDataDog({\n clientToken,\n site,\n environment,\n}: {\n clientToken: string;\n site: string;\n environment: string;\n}) {\n if (!clientToken || !environment) {\n return;\n }\n\n datadogLogs.init({\n clientToken: clientToken,\n env: environment,\n site: site,\n forwardErrorsToLogs: true,\n sampleRate: 100,\n service: 'pay-dashboard',\n });\n}\n\nexport function addDataDogLog(message: string, messageContext: Record, status: StatusType) {\n datadogLogs.logger.log(message, messageContext, status);\n}\n","import { merge } from 'lodash';\nimport { ApiEnvironment, ConfigurationModel } from './apis';\nimport * as Sentry from '@sentry/browser';\nimport * as DataDog from './datadog';\nimport { AuthState, OktaAuth } from '@okta/okta-auth-js';\n\n// Open ID authentication\nexport const configuration: ConfigurationModel = {\n sentry_dsn: '',\n environment: '',\n oidc: {\n authority: '',\n client_id: '',\n redirect_uri: '',\n post_logout_redirect_uri: '',\n },\n launch_darkly: {\n client_id: '',\n },\n split: {\n api_key: '',\n },\n data_dog: {\n client_token: '',\n site: '',\n environment: '',\n },\n admin_uri: '',\n portal_url: '',\n};\n\nexport function setConfiguration(newConfiguration: ConfigurationModel) {\n merge(configuration, newConfiguration);\n\n DataDog.initializeDataDog({\n environment: configuration.environment,\n clientToken: configuration.data_dog.client_token,\n site: configuration.data_dog.site,\n });\n\n if (configuration.sentry_dsn) {\n Sentry.init({\n dsn: configuration.sentry_dsn,\n environment: configuration.environment,\n });\n }\n}\n\nexport const MANAGE_ACCOUNT_URI = '/enduser/settings';\n\n// ========================================\n// Router\nexport const ROUTE = {\n HOME: '/home',\n AUTH_CALLBACK: '/login/callback',\n CUSTOMER: '/customers/:customerId',\n CUSTOMERS: '/customers',\n TRANSACTIONS: '/transactions',\n TRANSACTION: '/transactions/:transactionId',\n SETTLEMENTS: '/settlements',\n SETTLEMENT: '/settlements/:settlementId',\n DEVELOPERS: '/developers',\n REPORTS: '/reports',\n REWARDS: '/rewards',\n ADMIN: '/admin',\n ADMIN_ADD_USER: '/admin/add-user',\n REPORTS_TRANSACTIONS: '/reports/transactions',\n REPORTS_OUTSTANDING_REPORTS: '/reports/outstanding-reports/:filterType',\n REPORTS_SETTLEMENTS: '/reports/settlements',\n REPORTS_SETTLEMENT_DETAILS: '/reports/settlement-details',\n REPORTS_ACTIVITY_DETAILS: '/reports/activity-details',\n REPORTS_AUTOMATED_MAILING: '/reports/optin-automated-mailing',\n REPORTS_VIEW_AUTOMATED_MAILING: '/reports/view-automated-mailing',\n PAYLINK_INDEX: '/paylink-index',\n PAYLINK_CREATE: '/paylink-create',\n PAYLINKS: '/paylinks',\n PAYLINK: '/paylink/:payLinkId',\n PROMOTION: '/promotions/:promotionId',\n PROMOTIONS: '/promotions',\n IN_STORE: '/in-store',\n};\n\n// ========================================\n// Api environment\nlet apiEnvironment: ApiEnvironment = (localStorage.getItem('api-environment') as ApiEnvironment) || 'sandbox';\nlet accessToken: string = localStorage.getItem('access_token') || '';\nlet merchantId: string = localStorage.getItem('merchant_id') || '';\n\nexport function setApiEnvironment(environment: ApiEnvironment) {\n apiEnvironment = environment;\n localStorage.setItem('api-environment', environment);\n}\n\nexport function getApiEnvironment() {\n return apiEnvironment;\n}\n\nexport function setMerchantId(id: string) {\n merchantId = id;\n localStorage.setItem('merchant_id', merchantId);\n}\n\nexport function getMerchantId() {\n return merchantId;\n}\n\nexport function setAccessToken(token: string) {\n accessToken = token;\n localStorage.setItem('access-token', accessToken);\n}\n\nexport function getAccessToken() {\n return accessToken;\n}\n\n// Okta\nexport interface OktaStateProps {\n oktaAuth: OktaAuth;\n authState: AuthState;\n}\n","export enum ResponseErrorType {\n Unknown = 'unknown',\n ValidationError = 'validation_error',\n}\n\nexport enum ResponseErrorCode {\n Unknown = 'unknown',\n FieldRequired = 'field_required',\n InvalidValue = 'invalid_value',\n ValueTaken = 'value_taken',\n InvalidCredentials = 'invalid_credentials',\n}\n\nexport interface DashboardResponseError {\n type: string;\n code: string;\n property: string | null;\n message: string;\n}\n\nexport class ResponseError extends Error implements DashboardResponseError {\n type: ResponseErrorType;\n code: ResponseErrorCode;\n property: string | null;\n message: string;\n\n public constructor(\n type: ResponseErrorType,\n code: ResponseErrorCode,\n message: string | null = null,\n property: string | null = null,\n ) {\n super(`${type}: ${code}, ${property}`);\n this.type = type;\n this.code = code;\n this.property = property;\n this.message = message || '';\n }\n}\n\nexport interface DashboardResponse {\n result: T;\n}\n\nexport interface ListSegment {\n total: number;\n limit: number;\n skipped: number;\n items: T[];\n}\n\nexport interface DashboardResponseFailed {\n error: DashboardResponseError | null;\n}\n","import axios, { AxiosError, AxiosRequestConfig, CancelTokenSource } from 'axios';\nimport {\n DashboardResponse,\n DashboardResponseFailed,\n ResponseError,\n ResponseErrorCode,\n ResponseErrorType,\n} from './response';\nimport { merge } from 'lodash';\nimport { getAccessToken, getApiEnvironment, getMerchantId } from '../config';\nimport fileDownload from 'js-file-download';\nimport contentDisposition from 'content-disposition';\n\nexport const segmentListLimit = 20;\n\nexport interface RequestConfig extends AxiosRequestConfig {\n suppressMerchantHeader?: boolean;\n /**\n * Give an unique ID to the request enabling the cancelation of old requests\n */\n cancelTokenId?: string;\n}\n\nfunction updateRequestConfig(config: RequestConfig) {\n const accessToken = getAccessToken();\n\n return merge({}, config, {\n headers: {\n Authorization: `Bearer ${accessToken}`,\n 'SH-API-ENVIRONMENT': getApiEnvironment(),\n 'SH-MERCHANT-ID': config.suppressMerchantHeader ? '' : getMerchantId(),\n },\n });\n}\n\nconst cancelTokenIds: { [key: string]: CancelTokenSource } = {};\n\nasync function sendRequest(config: RequestConfig) {\n let cancelTokenSource: CancelTokenSource | undefined;\n if (config.cancelTokenId) {\n const cancelTokenId = config.cancelTokenId;\n\n if (cancelTokenIds[cancelTokenId]) {\n const token = cancelTokenIds[cancelTokenId];\n token.cancel('Request has been canceled');\n }\n\n cancelTokenSource = axios.CancelToken.source();\n cancelTokenIds[config.cancelTokenId] = cancelTokenSource;\n }\n\n try {\n return await axios.request({\n cancelToken: cancelTokenSource?.token,\n ...config,\n });\n } catch (e) {\n // If is cancel, we throw\n if (axios.isCancel(e)) throw e;\n\n const error = e as AxiosError;\n\n // If forbidden or unauthorized refresh the page\n // TODO: See how to deal with unauthorized or forbidden calls\n // if (error && error.response && (error.response.status === 403 || error.response.status === 401)) {\n // window.location.reload();\n // }\n\n const errorData = error && error.response && error.response.data.error;\n\n if (!errorData) {\n throw new ResponseError(ResponseErrorType.Unknown, ResponseErrorCode.Unknown);\n }\n\n throw new ResponseError(\n errorData.type as ResponseErrorType,\n errorData.code as ResponseErrorCode,\n errorData.message,\n errorData.property,\n );\n }\n}\n\nexport async function request(config: RequestConfig): Promise> {\n const requestConfig = updateRequestConfig(config);\n const res = await sendRequest(requestConfig);\n return res.data;\n}\n\nexport async function download(config: RequestConfig) {\n const requestConfig = updateRequestConfig(config);\n try {\n const res = await sendRequest(requestConfig);\n const disposition = contentDisposition.parse(res.headers['content-disposition']);\n fileDownload(res.data, disposition.parameters.filename as string);\n } catch {\n // Catch error\n }\n}\n\nexport function isValidEmail(input: string) {\n const format =\n /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\n return format.test(input);\n}\n","import { request, segmentListLimit } from './utils';\nimport { ListSegment } from './response';\nimport { stringify } from 'querystring';\nimport { uniqueId } from 'lodash';\n\nexport enum CHARGE_STATUS {\n CREATED = 'created',\n AUTHORIZED = 'authorized',\n CAPTURED = 'captured',\n CANCELED = 'canceled',\n ATTEMPTING_COLLECTION = 'attempting_collection',\n STOPPED_COLLECTION = 'stopped_collection',\n CAPTURE_FAILED = 'capture_failed',\n DISPUTED = 'disputed',\n REFUND_PENDING = 'refund_pending',\n REFUNDED = 'refunded',\n}\n\nexport interface EventModel {\n created_at: string;\n description: string;\n}\n\nexport enum ReturnReason {\n InsufficientFunds = 'insufficient_funds',\n Stopped = 'stopped',\n Unauthorized = 'unauthorized',\n}\n\nexport interface TipModel {\n id: string;\n charge_id: string;\n amount: number;\n fee: number;\n status: CHARGE_STATUS;\n created_at: string;\n authorized_at: string | null;\n captured_at: string | null;\n beneficiary_name: string;\n details: {\n drawer_id: string;\n terminal_id: string;\n };\n}\n\nexport interface ReturnModel {\n charge_id: string;\n return_reason: ReturnReason;\n charge_status: string;\n events: EventModel[];\n}\n\nexport interface ChargeModel {\n id: string;\n type: 'bank_debit' | 'bank_debit_cnp';\n status: CHARGE_STATUS;\n merchant_convenience_fee: number;\n fee: number;\n amount: number;\n currency: string;\n customer_id: string;\n payment_source_id: string;\n external_id: string | null;\n created_at: string;\n authorized_at: string | null;\n captured_at: string | null;\n tip_model: TipModel | null;\n statement_reference: string;\n payment_processing_fee: number | null;\n}\n\nexport interface UpdateAmountPosted {\n amount: string;\n}\n\nexport interface AggregatedChargesModel {\n gross: string;\n net: string;\n new_customers: string;\n succesful_payments: string;\n failed_payments: string;\n customer_average: string;\n disputes: string;\n captured_charges: string;\n captured_fees: string;\n}\n\nconst listChargesCancelTokenId = uniqueId();\nexport async function listCharges(\n options: {\n skip?: number;\n limit?: number;\n customerId?: string;\n status?: string[];\n from?: string;\n to?: string;\n search?: string;\n } = {},\n) {\n const query = stringify({\n limit: segmentListLimit,\n ...options,\n });\n\n const res = await request>({\n method: 'GET',\n url: `/api/charges?${query}`,\n cancelTokenId: listChargesCancelTokenId,\n });\n return res.result;\n}\n\nexport async function getCharge(chargeId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/charges/${chargeId}`,\n });\n return res.result;\n}\n\nexport async function getReturn(chargeId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/charges/${chargeId}/returns`,\n });\n return res.result;\n}\n\nexport async function getTipForCharge(chargeId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/charges/${chargeId}/tip`,\n });\n return res.result;\n}\n\nexport async function getTip(tipId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/tips/${tipId}`,\n });\n return res.result;\n}\n\nexport async function refundCharge(chargeId: string) {\n const res = await request({\n method: 'POST',\n url: `/api/charges/${chargeId}/refund`,\n });\n return res.result;\n}\n\nexport async function captureCharge(chargeId: string) {\n const res = await request({\n method: 'POST',\n url: `/api/charges/${chargeId}/capture`,\n });\n return res.result;\n}\n\nexport async function cancelCharge(chargeId: string) {\n const res = await request({\n method: 'POST',\n url: `/api/charges/${chargeId}/cancel`,\n });\n return res.result;\n}\n\nexport async function updateChargeAmount(chargeId: string, data: UpdateAmountPosted) {\n const res = await request({\n method: 'PATCH',\n url: `/api/charges/${chargeId}`,\n data,\n });\n return res.result;\n}\n","export type TipType = 'percentage' | 'fixed';\n\nexport enum CustomizationType {\n ProviderName = 'dashboard::management:provider_name/v1',\n CustomerName = 'dashboard::management:customer_name/v1',\n}\n\nexport interface TipCustomizationModel {\n type: TipType;\n value1: number;\n value2: number;\n value3: number;\n}\n\nexport interface Customization {\n data: string;\n type: CustomizationType;\n}\n\nexport interface CustomizationModel {\n tip: TipCustomizationModel;\n items: Customization[];\n}\n","import { request } from './utils';\nimport { ApiEnvironment } from './types';\n\nexport interface ApiKeyModel {\n key: string;\n publishable: boolean;\n environment: ApiEnvironment;\n created_at: string;\n last_used_at: string;\n}\n\nexport interface EnvironmentsModel {\n has_live_data: boolean;\n sandbox_keys: ApiKeyModel[];\n live_keys: ApiKeyModel[];\n}\n\nexport async function getEnvironments() {\n const res = await request({\n method: 'GET',\n url: '/api/environments',\n });\n return res.result;\n}\n","import { request, segmentListLimit } from './utils';\nimport { ListSegment } from './response';\nimport { stringify } from 'querystring';\nimport { uniqueId } from 'lodash';\n\nexport interface IndividualModel {\n first_name: string;\n last_name: string;\n date_of_birth?: string;\n email?: string;\n mobile?: string;\n}\n\nexport interface CustomerModel {\n id: string;\n country: string;\n state: string;\n external_id: string;\n individual: IndividualModel;\n is_blocked: boolean;\n email_block_expires_at: string | null;\n sms_block_expires_at: string | null;\n}\n\nexport interface CreateCustomerRequest {\n country: string;\n state: string;\n external_id?: string;\n individual: IndividualModel;\n}\n\nconst listCustomersCancelTokenId = uniqueId();\nexport async function listCustomers(\n options: {\n skip?: number;\n limit?: number;\n firstName?: string;\n lastName?: string;\n email?: string;\n mobile?: string;\n } = {},\n) {\n const query = stringify({\n limit: segmentListLimit,\n ...options,\n });\n\n const res = await request>({\n method: 'GET',\n url: `/api/customers?${query}`,\n cancelTokenId: listCustomersCancelTokenId,\n });\n return res.result;\n}\n\nexport async function getCustomer(customerId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/customers/${customerId}`,\n });\n return res.result;\n}\n\nexport async function createCustomer(data: CreateCustomerRequest) {\n const res = await request({\n method: 'POST',\n url: `/api/customers`,\n data,\n });\n return res.result;\n}\n\nexport async function updateCustomer(data: CreateCustomerRequest, customerId: string) {\n const res = await request({\n method: 'PATCH',\n url: `/api/customers/${customerId}`,\n data,\n });\n return res.result;\n}\n","import { request } from './utils';\nimport { stringify } from 'querystring';\nimport { ListSegment } from './response';\n\nexport interface PaymentSourceModel {\n id: string;\n type: 'bank';\n label: string;\n active: boolean;\n unique_hash: string;\n}\n\nexport async function listPaymentSources(options: { customerId?: string } = {}) {\n const query = stringify({\n ...options,\n });\n const res = await request>({\n method: 'GET',\n url: `/api/payment-sources?${query}`,\n });\n return res.result;\n}\n\nexport async function getPaymentSource(sourceId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/payment-sources/${sourceId}`,\n });\n return res.result;\n}\n\nexport async function deactivatePaymentSource(sourceId: string) {\n const res = await request({\n method: 'DELETE',\n url: `/api/payment-sources/${sourceId}`,\n });\n return res.result;\n}\n\nexport async function deactivateAllPaymentSources(customerId: string) {\n const res = await request({\n method: 'DELETE',\n url: `/api/payment-sources/all/${customerId}`,\n });\n return res.result;\n}\n","import { request } from './utils';\nimport { CustomizationModel } from './customization';\nimport { stringify } from 'querystring';\nimport { ApplicationRoleModel } from './users';\nexport interface StreetLocationModel {\n street1: string;\n city: string;\n postcode: string;\n country: string;\n state: string;\n}\n\nexport interface MerchantModel {\n id: string;\n legal_name: string;\n display_name: string;\n short_name: string;\n created_at: string;\n convenience_fee: string;\n customization: CustomizationModel;\n street_location: StreetLocationModel;\n timezone: string;\n email?: string;\n is_approved_live: boolean;\n image_url: string;\n roles: ApplicationRoleModel[];\n communication_safe_name: string;\n}\n\nexport async function getMerchants(withAssociations: boolean) {\n const query = stringify({\n withAssociations: withAssociations,\n });\n const res = await request({\n method: 'GET',\n url: `/api/merchants?${query}`,\n suppressMerchantHeader: true,\n });\n const the_result = res.result;\n return the_result;\n}\n\nexport async function getMerchant(merchantId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/merchants/${merchantId}`,\n });\n let the_result = res.result;\n // on local, the_result is a MerchantModel object, but on non-local it is an Array for some reason\n if (Array.isArray(the_result)) {\n the_result = the_result[0];\n }\n return the_result;\n}\n","import { request, segmentListLimit } from './utils';\nimport { stringify } from 'querystring';\nimport { ListSegment } from './response';\nimport { uniqueId } from 'lodash';\nimport { CustomerModel, IndividualModel } from './customers';\nimport { MerchantModel } from './merchant';\nimport { LinkType } from '../pages/Paylink/CreateStep2';\n\nexport enum PAY_LINK_STATUS {\n CREATED = 'created',\n USED = 'used',\n CANCELED = 'canceled',\n}\n\nexport interface PayLinkModel {\n id: string;\n created_at: string;\n expires_at: string;\n has_expired: boolean;\n charge_id: string;\n external_charge_id: string;\n merchant_id: string;\n customer_id: string;\n status: PAY_LINK_STATUS;\n url: string;\n environment: string;\n order: PayLinkOrderModel;\n}\n\nexport interface PayLinkOrderModel {\n total_amount: number;\n tax_amount?: number;\n sub_amount?: number;\n convenience_fee?: number;\n tip_amount?: number;\n documents?: PayLinkDocumentModel[];\n}\n\nexport interface PayLinkDocumentModel {\n url: string;\n file_name: string;\n file_size: number;\n}\n\nexport interface PayLinkTipModel {\n beneficiary_name: string;\n}\n\nexport interface StrongholdDirectRequestModel {\n customer?: CustomerModel;\n successScreenType?: LinkType;\n fileList?: FileList;\n externalId?: string;\n amount?: number;\n}\n\nexport interface CreatePayLinkRequest {\n type: string;\n customer_id: string;\n merchant: Partial;\n customer: Partial;\n tip: PayLinkTipModel;\n order: PayLinkOrderModel;\n stand_alone: boolean;\n charge?: {\n external_id?: string;\n };\n}\n\nexport interface CreatePayLinkEmailModel {\n pay_link_id: string;\n pay_link_url: string;\n customer: Partial;\n merchant_name?: string;\n}\n\nconst listPayLinksCancelTokenId = uniqueId();\nexport async function listPayLinks(\n options: {\n skip?: number;\n limit?: number;\n search?: string;\n status?: string[];\n from?: string;\n to?: string;\n } = {},\n) {\n const query = stringify({\n limit: segmentListLimit,\n ...options,\n });\n\n const res = await request>({\n method: 'GET',\n url: `/api/pay-links?${query}`,\n cancelTokenId: listPayLinksCancelTokenId,\n });\n return res.result;\n}\n\nexport async function createPayLink(data: CreatePayLinkRequest) {\n const res = await request({\n method: 'POST',\n url: `/api/pay-links`,\n data,\n });\n return res.result;\n}\n\nexport async function uploadPayLinkDocument(data: FormData) {\n const res = await request({\n method: 'POST',\n url: `/api/pay-links/upload-documents`,\n data,\n });\n return res.result;\n}\n\nexport async function getPayLink(payLinkId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/pay-links/${payLinkId}`,\n });\n return res.result;\n}\n\nexport async function sendPayLinkSms(payLinkId: string) {\n const res = await request({\n method: 'POST',\n url: `/api/pay-links/${payLinkId}/send-sms`,\n });\n return res.result;\n}\n\nexport async function sendPayLinkEmail(createPayLinkEmail: CreatePayLinkEmailModel) {\n const res = await request({\n method: 'POST',\n data: createPayLinkEmail,\n url: `/api/pay-links/send-email`,\n });\n return res.result;\n}\n\nexport async function cancelPayLink(payLinkId: string) {\n const res = await request({\n method: 'POST',\n url: `/api/pay-links/${payLinkId}/cancel`,\n });\n return res.result;\n}\n","import { request, segmentListLimit } from './utils';\nimport { ListSegment } from './response';\nimport { stringify } from 'querystring';\n\nexport enum PROMOTION_TYPE {\n CREDIT = 'credit',\n}\n\nexport enum BENEFIT_TYPE {\n FIXED = 'fixed',\n}\n\nexport enum TRIGGER_TYPE {\n PURCHASE = 'purchase',\n SOURCE_LINK = 'source_link',\n}\n\nexport interface PromotionModel {\n benefit_type: BENEFIT_TYPE;\n created_at: string;\n first_purchase_only?: boolean;\n fixed_amount: number;\n id: string;\n immediate_use?: boolean;\n merchant_id: string;\n name: string;\n promotion_type: PROMOTION_TYPE;\n single_use?: boolean;\n start_date: string;\n end_date?: string;\n external_id?: string;\n merchant_split?: number;\n min_charge_amount?: number;\n disabled_on?: string;\n trigger_type: TRIGGER_TYPE;\n relink_allowed?: boolean;\n}\n\nexport async function getPromotion(promotionId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/promotions/${promotionId}`,\n });\n return res.result;\n}\n\nexport async function listPromotions(skip?: number) {\n const query = stringify({\n limit: segmentListLimit,\n skip,\n });\n\n const res = await request>({\n method: 'GET',\n url: `/api/promotions?${query}`,\n });\n return res.result;\n}\n","import { ActionName } from '../types';\nimport {\n RESET_ACTION_RESPONSE_ERROR,\n RESET_ACTION_STATUS,\n SET_ACTION_REQUEST_STATUS,\n SET_ACTION_RESPONSE_ERROR,\n SET_CONFIGURATION,\n SET_ENVIRONMENT_DATA,\n SET_ENVIRONMENTS,\n SHOW_REQUEST_LIVE_DATA_MESSAGE,\n SHOW_SWITCHED_SANDBOX_MESSAGE,\n SWITCH_CONTEXT,\n} from '../constants';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction } from './index';\nimport { setApiEnvironment, setConfiguration } from '../../config';\nimport {\n ApiEnvironment,\n ConfigurationModel,\n EnvironmentsModel,\n getConfiguration,\n ResponseError,\n ResponseErrorCode,\n ResponseErrorType,\n} from '../../apis';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetActionRequestingAction {\n type: SET_ACTION_REQUEST_STATUS;\n payload: {\n name: ActionName;\n isRequesting: boolean;\n };\n}\n\nexport function setActionRequestingAction(name: ActionName, isRequesting: boolean): SetActionRequestingAction {\n return {\n type: SET_ACTION_REQUEST_STATUS,\n payload: {\n name,\n isRequesting,\n },\n };\n}\n\nexport interface SetActionResponseErrorAction {\n type: SET_ACTION_RESPONSE_ERROR;\n payload: {\n name: ActionName;\n error: ResponseError;\n };\n}\n\nexport function setActionResponseErrorAction(name: ActionName, error?: ResponseError): SetActionResponseErrorAction {\n error = error || new ResponseError(ResponseErrorType.Unknown, ResponseErrorCode.Unknown);\n return {\n type: SET_ACTION_RESPONSE_ERROR,\n payload: {\n name,\n error,\n },\n };\n}\n\nexport interface ResetActionResponseErrorAction {\n type: RESET_ACTION_RESPONSE_ERROR;\n payload: {\n name: ActionName;\n };\n}\n\nexport const resetActionResponseErrorAction = (name: ActionName): ResetActionResponseErrorAction => ({\n type: RESET_ACTION_RESPONSE_ERROR,\n payload: {\n name,\n },\n});\n\nexport interface ResetActionStatusAction {\n type: RESET_ACTION_STATUS;\n payload: {\n name: ActionName;\n };\n}\n\nexport function resetActionStatusAction(name: ActionName): ResetActionStatusAction {\n return {\n type: RESET_ACTION_STATUS,\n payload: {\n name,\n },\n };\n}\n\nexport interface SetConfigurationAction {\n type: SET_CONFIGURATION;\n payload: {\n configuration: ConfigurationModel;\n };\n}\n\nexport function setConfigurationAction(configuration: ConfigurationModel): SetConfigurationAction {\n return {\n type: SET_CONFIGURATION,\n payload: {\n configuration,\n },\n };\n}\n\ninterface SetEnvironmentsAction {\n type: SET_ENVIRONMENTS;\n payload: {\n environments: EnvironmentsModel;\n };\n}\n\nexport function setEnvironmentsAction(environments: EnvironmentsModel): SetEnvironmentsAction {\n return {\n type: SET_ENVIRONMENTS,\n payload: { environments },\n };\n}\n\nexport interface SetEnvironmentDataAction {\n type: SET_ENVIRONMENT_DATA;\n payload: {\n environmentData: ApiEnvironment;\n };\n}\n\nexport function setEnvironmentDataAction(environmentData: ApiEnvironment): SetEnvironmentDataAction {\n setApiEnvironment(environmentData);\n return {\n type: SET_ENVIRONMENT_DATA,\n payload: {\n environmentData,\n },\n };\n}\n\nexport interface ShowRequestLiveDataMessageAction {\n type: SHOW_REQUEST_LIVE_DATA_MESSAGE;\n payload: {\n show: boolean;\n };\n}\n\nexport function showRequestLiveDataMessageAction(show: boolean): ShowRequestLiveDataMessageAction {\n return {\n type: SHOW_REQUEST_LIVE_DATA_MESSAGE,\n payload: {\n show,\n },\n };\n}\n\nexport interface ShowSwitchedSandboxDataMessageAction {\n type: SHOW_SWITCHED_SANDBOX_MESSAGE;\n payload: {\n show: boolean;\n };\n}\n\nexport function showSwitchedSandboxDataMessageAction(show: boolean): ShowSwitchedSandboxDataMessageAction {\n return {\n type: SHOW_SWITCHED_SANDBOX_MESSAGE,\n payload: {\n show,\n },\n };\n}\n\nexport interface SwitchContextAction {\n type: SWITCH_CONTEXT;\n payload: {\n switching: boolean;\n };\n}\n\nexport function switchContextAction(switching: boolean): SwitchContextAction {\n return {\n type: SWITCH_CONTEXT,\n payload: { switching },\n };\n}\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type GlobalAction =\n | SetActionRequestingAction\n | ResetActionStatusAction\n | SetActionResponseErrorAction\n | ResetActionResponseErrorAction\n | SetConfigurationAction\n | SetEnvironmentsAction\n | SetEnvironmentDataAction\n | ShowRequestLiveDataMessageAction\n | ShowSwitchedSandboxDataMessageAction\n | SwitchContextAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\n\nexport function fetchConfiguration(): AppThunkAction {\n return async (dispatch) => {\n dispatch(setActionRequestingAction('fetch_configuration', true));\n try {\n const result = await getConfiguration();\n\n setConfiguration(result);\n dispatch(setConfigurationAction(result));\n\n dispatch(setActionRequestingAction('fetch_configuration', false));\n } catch (e) {\n // Error\n }\n };\n}\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nexport function toggleLiveDataAction(): AppThunkAction {\n return async (dispatch, getState) => {\n const hasLiveData = getState().merchant.selected ? getState().merchant.selected!.is_approved_live : false;\n const environmentData = getState().global.environmentData;\n dispatch(setActionRequestingAction('set_data', true));\n if (!hasLiveData) {\n dispatch(showRequestLiveDataMessageAction(true));\n dispatch(setActionRequestingAction('set_data', false));\n } else {\n const promise = switchingAction()(dispatch, getState);\n\n switch (environmentData) {\n case 'live':\n dispatch(setEnvironmentDataAction('sandbox'));\n break;\n case 'sandbox':\n dispatch(setEnvironmentDataAction('live'));\n break;\n default:\n throw new Error('Not implemented environment data');\n }\n\n await promise;\n dispatch(setActionRequestingAction('set_data', false));\n }\n };\n}\n\nexport function switchingAction(): AppThunkAction {\n return async (dispatch) => {\n dispatch(switchContextAction(true));\n\n // Timer to make the UX nice\n const wait = () => new Promise((resolve) => setTimeout(resolve, 500));\n await wait();\n\n dispatch(switchContextAction(false));\n };\n}\n","import { request } from './utils';\n\nexport interface ConfigurationModel {\n environment: string;\n sentry_dsn: string;\n launch_darkly: {\n client_id: string;\n };\n split: {\n api_key: string;\n };\n data_dog: {\n client_token: string;\n site: string;\n environment: string;\n };\n oidc: {\n authority: string;\n client_id: string;\n redirect_uri: string;\n post_logout_redirect_uri: string;\n };\n admin_uri: string;\n portal_url: string;\n}\n\nexport async function getConfiguration() {\n const res = await request({\n method: 'GET',\n url: '/api/configuration',\n });\n return res.result;\n}\n","import { ApiEnvironment, ConfigurationModel, EnvironmentsModel, ResponseError } from '../../apis';\n\n// -----------------\n// STATE - This defines the type of data maintained in the Redux store.\n\nexport type ActionName =\n | 'login'\n | 'fetch_configuration'\n | 'fetch_treatment'\n | 'fetch_settlement'\n | 'fetch_settlements'\n | 'fetch_balance_transfers'\n | 'fetch_balance_transfers_summary'\n | 'fetch_charges'\n | 'fetch_aggregated_charges'\n | 'fetch_charge'\n | 'refund_charge'\n | 'upsert_charge'\n | 'fetch_return'\n | 'fetch_tip'\n | 'fetch_customers'\n | 'fetch_customer'\n | 'create_customer'\n | 'update_customer'\n | 'fetch_payment_source'\n | 'fetch_payment_sources'\n | 'update_payment_source'\n | 'create_automated_mailing_report'\n | 'remove_automated_mailing_report'\n | 'fetch_automated_mailing_report'\n | 'fetch_transactions_report'\n | 'fetch_outstanding_returns_report'\n | 'fetch_dashboard_users'\n | 'fetch_pay_links'\n | 'fetch_pay_link'\n | 'create_pay_link'\n | 'cancel_pay_link'\n | 'send_sms'\n | 'send_email'\n | 'add_dashboard_user'\n | 'remove_dashboard_user'\n | 'update_dashboard_user_roles'\n | 'set_data'\n | 'set_merchant'\n | 'fetch_earned_points_ytd'\n | 'add_developer_user'\n | 'set_developer_sign_up'\n | 'reset_action_response_error'\n | 'deactivate_all_payment_sources'\n | 'fetch_promotion'\n | 'fetch_promotions'\n | 'fetch_credit'\n | 'fetch_credits'\n | 'fetch_promotion_report'\n | 'fetch_processing_fee_amount';\n\nexport interface ActionStatus {\n name: ActionName;\n isRequesting: boolean;\n responseError?: ResponseError;\n}\n\nexport interface GlobalState {\n actions: ActionStatus[];\n configuration: ConfigurationModel;\n environments: EnvironmentsModel;\n environmentData: ApiEnvironment;\n showRequestLiveDataMessage: boolean;\n showSwitchedToSandboxMessage: boolean;\n switchingContext: boolean;\n}\n\n// ================================\n// Split\nexport enum SPLIT_FLAG {\n NEW_DASHBOARD = 'New_Dashboard',\n REPORTS_TAB = 'Reports',\n TRANSACTIONS_REPORTS = 'Transaction_Reports',\n}\n\n// UserRoles\nexport enum USER_ROLE {\n STRONGHOLD_DIRECT = 'MERCHANT:STRONGHOLDDIRECT',\n NO_STRONGHOLD_DIRECT = 'MERCHANT:NOSTRONGHOLDDIRECT',\n STRONGHOLD_DIRECT_B2B = 'MERCHANT:STRONGHOLDDIRECTB2B',\n MERCHANT_REPORTING = 'MERCHANT:REPORTING',\n MERCHANT_TRANSACTIONS_EDIT = 'MERCHANT:TRANSACTIONSEDIT',\n MERCHANT_ALLUSERS = 'MERCHANT:ALLUSERS',\n MERCHANT_ALLADMIN = 'MERCHANT:ALLADMIN',\n}\n","import { AppThunkAction } from '../index';\nimport { ApplicationAction } from './index';\nimport { MerchantModel } from '../../apis';\nimport { initSplitSdk, selectTreatmentValue } from '@splitsoftware/splitio-redux';\nimport { getTreatments } from '@splitsoftware/splitio-redux';\nimport { SPLIT_FLAG } from '../types';\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\n\nexport function fetchSplitTreatmentAction(flag: string): AppThunkAction {\n return async (dispatch, getState) => {\n // If treatment already in the list, return directly\n if (selectTreatmentValue(getState().splitio, flag)) {\n return;\n }\n\n await getTreatments({ splitNames: [flag] });\n };\n}\n\nexport function fetchMerchantTreatmentsAction(merchant: MerchantModel): AppThunkAction {\n return async (dispatch, getState) => {\n // fetch splits\n const sdkBrowserConfig = {\n core: {\n authorizationKey: getState().global.configuration.split.api_key,\n key: merchant.id,\n },\n };\n\n dispatch(initSplitSdk({ config: sdkBrowserConfig }) as unknown as ApplicationAction);\n dispatch(getTreatments({ splitNames: Object.values(SPLIT_FLAG) }) as unknown as ApplicationAction);\n };\n}\n","import { LOGIN, SET_ROLES, READY } from '../constants';\nimport { UserState } from '../types';\nimport { AppThunkAction } from '../index';\nimport {\n ApplicationAction,\n resetActionStatusAction,\n setActionRequestingAction,\n setEnvironmentDataAction,\n setEnvironmentsAction,\n setMerchantAction,\n setMerchantsAction,\n} from './index';\nimport * as api from '../../apis';\nimport { getApiEnvironment, getMerchantId, setAccessToken, setApiEnvironment, setMerchantId } from '../../config';\nimport { fetchMerchantTreatmentsAction } from './splitio';\nimport { AuthState, OktaAuth } from '@okta/okta-auth-js';\nimport { ApplicationRoleModel, MerchantModel } from '../../apis';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\ninterface LoginAction {\n type: LOGIN;\n payload: {\n accessToken: string;\n tokenType: string;\n user: UserState;\n };\n}\n\nexport function loginAction(payload: { user: UserState; accessToken: string; tokenType: string }): LoginAction {\n setAccessToken(payload.accessToken);\n return {\n type: LOGIN,\n payload,\n };\n}\n\nexport interface SetUserRolesAction {\n type: SET_ROLES;\n payload: {\n user: {\n roles: ApplicationRoleModel[];\n };\n };\n}\n\nexport const setUserRolesAction = (roles: ApplicationRoleModel[]): SetUserRolesAction => ({\n type: SET_ROLES,\n payload: {\n user: {\n roles,\n },\n },\n});\n\nexport interface ReadyAction {\n type: READY;\n payload: {\n isReady: boolean;\n };\n}\n\nexport const setReadyAction = (isReady: boolean): ReadyAction => ({\n type: READY,\n payload: {\n isReady: isReady,\n },\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type AuthenticationAction = LoginAction | SetUserRolesAction | ReadyAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nexport function loginUser(oktaAuth: OktaAuth, authState: AuthState): AppThunkAction {\n return async (dispatch) => {\n dispatch(resetActionStatusAction('login'));\n dispatch(setActionRequestingAction('login', true));\n\n const user = await oktaAuth.getUser();\n dispatch(\n loginAction({\n accessToken: authState.accessToken!.accessToken,\n tokenType: authState.accessToken!.tokenType,\n user: {\n email: user.email || null,\n roles: null,\n },\n }),\n );\n\n // Save the previously cached merchantId before invalidating the cache, just in case.\n const cached_merchant_id = getMerchantId();\n setMerchantId('');\n\n // Reset api-environment to sandbox for default behavior\n setApiEnvironment('sandbox');\n\n let merchant_id: string | null = null;\n let merchants: MerchantModel[] | null = null;\n try {\n merchants = await api.getMerchants(false);\n if (!merchants || merchants.length == 0) {\n // no access\n throw new Error('No merchants found');\n }\n dispatch(setMerchantsAction(merchants));\n // if (!cached_merchant_id || cached_merchant_id === '') {\n if (\n !cached_merchant_id ||\n cached_merchant_id === '' ||\n !merchants.find((merchant) => merchant.id == cached_merchant_id)\n ) {\n // merchants array not empty, but did not find merchantId\n // update merchantId to the first element in the merchants array\n setMerchantId(merchants[0].id);\n } else {\n // set merchantId to the previously cached value since it is a valid one\n setMerchantId(cached_merchant_id);\n }\n const merchant = await api.getMerchant(getMerchantId());\n dispatch(setUserRolesAction(merchant.roles));\n\n const environments = await api.getEnvironments();\n dispatch(setEnvironmentsAction(environments));\n if (!environments.has_live_data || getApiEnvironment() === 'sandbox') {\n dispatch(setEnvironmentDataAction('sandbox'));\n }\n\n if (!merchant.is_approved_live) {\n dispatch(setEnvironmentDataAction('sandbox'));\n } else {\n dispatch(setEnvironmentDataAction('live'));\n }\n\n if (merchant) {\n merchant_id = merchant.id;\n dispatch(setMerchantAction(merchant));\n dispatch(fetchMerchantTreatmentsAction(merchant) as unknown as ApplicationAction);\n }\n } catch {\n // No merchants found. Setting default for RestrictedAccess workflow\n if (merchants && merchants.length > 0) {\n // by doing this we allow the SelectMerchantModal to successfully grab a merchant\n setMerchantId(merchants[0].id);\n }\n }\n\n dispatch(setReadyAction(true));\n dispatch(setActionRequestingAction('login', false));\n\n // notify segment of logged in user\n window.analytics.identify(user.sub, {\n name: user.sub,\n email: user.email,\n merchant: merchant_id,\n domain: window.location.hostname,\n });\n };\n}\n","import {\n setActionRequestingAction,\n setEnvironmentDataAction,\n setEnvironmentsAction,\n showSwitchedSandboxDataMessageAction,\n switchingAction,\n} from './global';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction, setUserRolesAction } from './index';\nimport { SET_MERCHANT, SET_MERCHANTS } from '../constants';\nimport * as api from '../../apis';\nimport { MerchantModel } from '../../apis';\nimport { setMerchantId } from '../../config';\nimport { fetchMerchantTreatmentsAction } from './splitio';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\ninterface SetMerchantsAction {\n type: SET_MERCHANTS;\n payload: {\n arr: MerchantModel[];\n };\n}\n\nexport function setMerchantsAction(arr: MerchantModel[]): SetMerchantsAction {\n return {\n type: SET_MERCHANTS,\n payload: { arr },\n };\n}\n\ninterface SetMerchantAction {\n type: SET_MERCHANT;\n payload: {\n merchant: MerchantModel;\n };\n}\n\nexport function setMerchantAction(merchant: MerchantModel): SetMerchantAction {\n setMerchantId(merchant.id);\n return {\n type: SET_MERCHANT,\n payload: { merchant },\n };\n}\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type MerchantAction = SetMerchantsAction | SetMerchantAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\nexport function setSelectedMerchantAction(merchant: MerchantModel): AppThunkAction {\n return async (dispatch, getState) => {\n await dispatch(setActionRequestingAction('set_merchant', true));\n const promise = switchingAction()(dispatch, getState);\n\n dispatch(setUserRolesAction(merchant.roles));\n if (!merchant.is_approved_live) {\n dispatch(setEnvironmentDataAction('sandbox'));\n dispatch(showSwitchedSandboxDataMessageAction(true));\n } else {\n dispatch(setEnvironmentDataAction('live'));\n dispatch(showSwitchedSandboxDataMessageAction(false));\n }\n\n dispatch(setMerchantAction(merchant));\n dispatch(fetchMerchantTreatmentsAction(merchant) as unknown as ApplicationAction);\n await dispatch(setActionRequestingAction('set_merchant', false));\n\n const environments = await api.getEnvironments();\n dispatch(setEnvironmentsAction(environments));\n\n await promise;\n };\n}\n","import * as api from '../../apis';\nimport { setActionRequestingAction, setActionResponseErrorAction } from './global';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction } from './index';\nimport { BalanceTransferModel, BalanceTransferSummary } from '../../apis';\nimport { ResponseError } from '../../apis';\nimport { ListSegment } from '../../apis';\nimport { SET_BALANCE_TRANSFERS, SET_BALANCE_TRANSFER_SUMMARY } from '../constants';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetBalanceTransfersAction {\n type: SET_BALANCE_TRANSFERS;\n payload: {\n list: ListSegment;\n };\n}\n\nexport const setBalanceTransfersAction = (list: ListSegment): SetBalanceTransfersAction => ({\n type: SET_BALANCE_TRANSFERS,\n payload: {\n list,\n },\n});\n\nexport interface SetBalanceTransferSummaryAction {\n type: SET_BALANCE_TRANSFER_SUMMARY;\n payload: {\n data: BalanceTransferSummary;\n };\n}\n\nexport const SetBalanceTransferSummaryAction = (data: BalanceTransferSummary): SetBalanceTransferSummaryAction => ({\n type: SET_BALANCE_TRANSFER_SUMMARY,\n payload: {\n data,\n },\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type BalanceTransferAction = SetBalanceTransfersAction | SetBalanceTransferSummaryAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\n\nexport function fetchBalanceTransfersAction(options: {\n settlementId: string;\n skip?: number;\n limit?: number;\n}): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('fetch_balance_transfers', true));\n try {\n const body = await api.listBalanceTransfers(options);\n await dispatch(setBalanceTransfersAction(body));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('fetch_balance_transfers', e));\n }\n } finally {\n await dispatch(setActionRequestingAction('fetch_balance_transfers', false));\n }\n };\n}\n\nexport function fetchBalanceTransferSummaryAction(options: {\n settlementId: string;\n}): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('fetch_balance_transfers_summary', true));\n try {\n const body = await api.getBalanceTransferSummary(options);\n await dispatch(SetBalanceTransferSummaryAction(body));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('fetch_balance_transfers_summary', e));\n }\n } finally {\n await dispatch(setActionRequestingAction('fetch_balance_transfers_summary', false));\n }\n };\n}\n","import { stringify } from 'querystring';\nimport { request, segmentListLimit } from './utils';\nimport { ListSegment } from './response';\n\nexport interface BalanceTransferModel {\n id: string;\n type:\n | 'charge_settlement'\n | 'charge_reversal'\n | 'adjustment'\n | 'tip_settlement'\n | 'tip_reversal'\n | 'charge_collection_settlement'\n | 'tip_collection_settlement'\n | 'merchant_financing_disbursement'\n | 'merchant_financing_repayment'\n | 'promotional_credit_deduction'\n | 'promotional_credit_stronghold_contribution'\n | 'platform_fee';\n gross_amount: number;\n net_amount: number;\n fee: number;\n associated_with: string;\n external_associated_with?: string;\n captured_at?: string;\n}\n\nexport interface GrossNetFeeAmount {\n gross: number;\n net: number;\n fee: number;\n}\n\nexport interface BalanceTransferSummary {\n total_amount: GrossNetFeeAmount;\n charge_settlement_amount: GrossNetFeeAmount;\n charge_reversal_amount: GrossNetFeeAmount;\n adjustment_amount: GrossNetFeeAmount;\n tip_settlement_amount: GrossNetFeeAmount;\n tip_reversal_amount: GrossNetFeeAmount;\n charge_collection_settlement_amount: GrossNetFeeAmount;\n tip_collection_settlement_amount: GrossNetFeeAmount;\n promotional_credit_settlement_amount: GrossNetFeeAmount;\n promotional_credit_reversal_amount: GrossNetFeeAmount;\n}\n\nexport async function listBalanceTransfers(options: { skip?: number; limit?: number; settlementId: string }) {\n const query = stringify({\n limit: segmentListLimit,\n ...options,\n });\n\n const res = await request>({\n method: 'GET',\n url: `/api/balance-transfers?${query}`,\n });\n return res.result;\n}\n\nexport async function getBalanceTransferSummary(options: { settlementId: string }) {\n const query = stringify({\n limit: segmentListLimit,\n ...options,\n });\n\n const res = await request({\n method: 'GET',\n url: `/api/balance-transfers/summary?${query}`,\n });\n return res.result;\n}\n","import * as api from '../../apis';\nimport { ChargeModel, ListSegment, ResponseError, TipModel, UpdateAmountPosted } from '../../apis';\nimport { CLEAN_CHARGES, SET_CHARGES, UPSERT_CHARGE, SET_CHARGE_TIP } from '../constants';\nimport { setActionRequestingAction, setActionResponseErrorAction } from './global';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction, call } from './index';\nimport { ChargeActionType } from '../../components/charge/ChargeActions';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetChargesAction {\n type: SET_CHARGES;\n payload: {\n list: ListSegment;\n };\n}\n\nexport const setChargesAction = (list: ListSegment): SetChargesAction => ({\n type: SET_CHARGES,\n payload: {\n list,\n },\n});\n\nexport interface CleanChargesAction {\n type: CLEAN_CHARGES;\n}\n\nexport const cleanChargesAction = (): CleanChargesAction => ({\n type: CLEAN_CHARGES,\n});\n\nexport interface UpsertChargeAction {\n type: UPSERT_CHARGE;\n payload: {\n charge: ChargeModel;\n };\n}\n\nexport const upsertChargeAction = (charge: ChargeModel): UpsertChargeAction => ({\n type: UPSERT_CHARGE,\n payload: {\n charge,\n },\n});\n\nexport interface SetChargeTipAction {\n type: SET_CHARGE_TIP;\n payload: {\n tip_model: TipModel;\n };\n}\n\nexport const setChargeTipAction = (tip_model: TipModel): SetChargeTipAction => ({\n type: SET_CHARGE_TIP,\n payload: {\n tip_model,\n },\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type ChargeAction = SetChargesAction | CleanChargesAction | UpsertChargeAction | SetChargeTipAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\nexport interface FetchChargesActionOptions {\n search?: string;\n customerId?: string;\n settlementId?: string;\n skip?: number;\n limit?: number;\n status?: string[];\n from?: string;\n to?: string;\n paymentSourceId?: string;\n}\n\nexport function fetchChargesAction(options: FetchChargesActionOptions = {}): AppThunkAction {\n return async (dispatch, getState) => {\n if (getState().merchant.selected === null) return;\n\n await call({\n actionName: 'fetch_charges',\n call: () => api.listCharges(options),\n dispatch,\n onSuccess: (body) => {\n dispatch(setChargesAction(body));\n },\n });\n };\n}\n\nexport function fetchChargeAction(chargeId: string): AppThunkAction {\n return async (dispatch, getState) => {\n // If customer already in the list, return directly\n if (getState().charge.list.items.find((value) => value.id === chargeId)) {\n return;\n }\n\n await call({\n actionName: 'fetch_charge',\n call: () => api.getCharge(chargeId),\n dispatch,\n onSuccess: (body) => dispatch(upsertChargeAction(body)),\n });\n };\n}\n\nexport function fetchTipAction(chargeId: string): AppThunkAction {\n return async (dispatch) => {\n await call({\n actionName: 'fetch_tip',\n call: () => api.getTipForCharge(chargeId),\n dispatch,\n onSuccess: (result) => {\n dispatch(setChargeTipAction(result));\n },\n });\n };\n}\n\nexport function upsertTransactionAction(\n chargeId: string,\n action: ChargeActionType,\n formData: UpdateAmountPosted | null,\n): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('upsert_charge', true));\n try {\n let body;\n switch (action) {\n case 'refund':\n body = await api.refundCharge(chargeId);\n break;\n case 'capture':\n body = await api.captureCharge(chargeId);\n break;\n case 'update-amount':\n if (formData) {\n body = await api.updateChargeAmount(chargeId, formData);\n }\n break;\n case 'cancel':\n body = await api.cancelCharge(chargeId);\n break;\n default:\n break;\n }\n if (body) dispatch(upsertChargeAction(body));\n await dispatch(setActionRequestingAction('upsert_charge', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('upsert_charge', e));\n }\n await dispatch(setActionRequestingAction('upsert_charge', false));\n throw e;\n }\n };\n}\n","import * as api from '../../apis';\nimport { setActionRequestingAction, setActionResponseErrorAction } from './global';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction } from './index';\nimport { SettlementModel } from '../../apis';\nimport { ResponseError } from '../../apis';\nimport { ListSegment } from '../../apis';\nimport { ADD_SETTLEMENT, SET_SETTLEMENTS } from '../constants';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetSettlementsAction {\n type: SET_SETTLEMENTS;\n payload: {\n list: ListSegment;\n };\n}\n\nexport const setSettlementsAction = (list: ListSegment): SetSettlementsAction => ({\n type: SET_SETTLEMENTS,\n payload: {\n list,\n },\n});\n\nexport interface AddSettlementAction {\n type: ADD_SETTLEMENT;\n payload: {\n settlement: SettlementModel;\n };\n}\n\nexport const addSettlementAction = (settlement: SettlementModel): AddSettlementAction => ({\n type: ADD_SETTLEMENT,\n payload: {\n settlement: settlement,\n },\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type SettlementAction = SetSettlementsAction | AddSettlementAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\nexport interface FetchSettlementsActionOptions {\n skip?: number;\n limit?: number;\n from?: string;\n to?: string;\n}\n\nexport function fetchSettlementsAction(options: FetchSettlementsActionOptions = {}): AppThunkAction {\n return async (dispatch, getState) => {\n if (getState().merchant.selected === null) return;\n\n await dispatch(setActionRequestingAction('fetch_settlements', true));\n try {\n const body = await api.listSettlements(options);\n await dispatch(setSettlementsAction(body));\n await dispatch(setActionRequestingAction('fetch_settlements', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('fetch_settlements', e));\n }\n await dispatch(setActionRequestingAction('fetch_settlements', false));\n throw e;\n }\n };\n}\n\nexport function fetchSettlementAction(settlementId: string): AppThunkAction {\n return async (dispatch, getState) => {\n // If settlement already in the list, return directly\n if (getState().settlement.list.items.find((value) => value.id === settlementId)) {\n return;\n }\n\n await dispatch(setActionRequestingAction('fetch_settlement', true));\n try {\n const result = await api.getSettlement(settlementId);\n await dispatch(addSettlementAction(result));\n await dispatch(setActionRequestingAction('fetch_settlement', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('fetch_settlement', e));\n }\n await dispatch(setActionRequestingAction('fetch_settlement', false));\n throw e;\n }\n };\n}\n","import { ListSegment } from './response';\nimport { stringify } from 'querystring';\nimport { request, segmentListLimit } from './utils';\n\nexport interface SettlementModel {\n id: string;\n gross_amount: number;\n net_amount: number;\n fee: number;\n currency: string;\n description: string;\n date: string;\n}\n\nexport async function listSettlements(\n options: {\n skip?: number;\n limit?: number;\n from?: string;\n to?: string;\n } = {},\n) {\n const query = stringify({\n limit: segmentListLimit,\n ...options,\n });\n const res = await request>({\n method: 'GET',\n url: `/api/settlements?${query}`,\n });\n return res.result;\n}\n\nexport async function getSettlement(settlementId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/settlements/${settlementId}`,\n });\n return res.result;\n}\n","import * as api from '../../apis';\nimport { CreateCustomerRequest, CustomerModel, ListSegment, ResponseError } from '../../apis';\nimport { ADD_CUSTOMER, CLEAN_CUSTOMERS, SET_CUSTOMERS, UPDATE_CUSTOMER } from '../constants';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction, call, setActionRequestingAction, setActionResponseErrorAction } from './index';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetCustomersAction {\n type: SET_CUSTOMERS;\n payload: {\n list: ListSegment;\n };\n}\n\nexport const setCustomersAction = (list: ListSegment): SetCustomersAction => ({\n type: SET_CUSTOMERS,\n payload: {\n list,\n },\n});\n\nexport interface AddCustomerAction {\n type: ADD_CUSTOMER;\n payload: {\n customer: CustomerModel;\n };\n}\n\nexport const addCustomerAction = (customer: CustomerModel): AddCustomerAction => ({\n type: ADD_CUSTOMER,\n payload: {\n customer,\n },\n});\n\nexport interface CleanCustomersAction {\n type: CLEAN_CUSTOMERS;\n}\n\nexport const cleanCustomersAction = (): CleanCustomersAction => ({\n type: CLEAN_CUSTOMERS,\n});\n\nexport interface UpdateCustomerAction {\n type: UPDATE_CUSTOMER;\n payload: {\n data: CustomerModel;\n };\n}\n\nexport const updateCustomersAction = (data: CustomerModel): UpdateCustomerAction => ({\n type: UPDATE_CUSTOMER,\n payload: {\n data,\n },\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type CustomerAction = SetCustomersAction | AddCustomerAction | CleanCustomersAction | UpdateCustomerAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\nexport interface FetchCustomersActionOptions {\n firstName?: string;\n lastName?: string;\n email?: string;\n mobile?: string;\n skip?: number;\n limit?: number;\n}\n\nexport function fetchCustomersAction(options: FetchCustomersActionOptions = {}): AppThunkAction {\n return async (dispatch, getState) => {\n if (getState().merchant.selected === null) return;\n\n await call({\n actionName: 'fetch_customers',\n call: () => api.listCustomers(options),\n dispatch,\n onSuccess: async (body) => {\n await dispatch(setCustomersAction(body));\n },\n });\n };\n}\n\nexport function createCustomerAction(data: CreateCustomerRequest): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('create_customer', true));\n\n try {\n const result = await api.createCustomer(data);\n await dispatch(addCustomerAction(result));\n await dispatch(setActionRequestingAction('create_customer', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('create_customer', e));\n }\n await dispatch(setActionRequestingAction('create_customer', false));\n }\n };\n}\n\nexport function fetchCustomerAction(customerId: string): AppThunkAction {\n return async (dispatch, getState) => {\n // If customer already in the list, return directly\n if (getState().customer.list.items.find((value) => value.id === customerId)) {\n return;\n }\n\n await call({\n actionName: 'fetch_customer',\n call: () => api.getCustomer(customerId),\n dispatch,\n onSuccess: (result) => {\n dispatch(addCustomerAction(result));\n },\n });\n };\n}\n\nexport function patchCustomersAction(\n customerId: string,\n data: CreateCustomerRequest,\n): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('update_customer', true));\n try {\n const result = await api.updateCustomer(data, customerId);\n await dispatch(updateCustomersAction(result));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('update_customer', e));\n }\n } finally {\n await dispatch(setActionRequestingAction('update_customer', false));\n }\n };\n}\n","import * as api from '../../apis';\nimport { CLEAN_PAYMENT_SOURCE, SET_PAYMENT_SOURCE, SET_PAYMENT_SOURCES, UPDATE_PAYMENT_SOURCE } from '../constants';\nimport { setActionRequestingAction, setActionResponseErrorAction } from './global';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction, call } from './index';\nimport { PaymentSourceModel, ResponseError } from '../../apis';\nimport { ListSegment } from '../../apis';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetPaymentSourceAction {\n type: SET_PAYMENT_SOURCE;\n payload: {\n data: PaymentSourceModel;\n };\n}\n\nexport const setPaymentSourceAction = (data: PaymentSourceModel): SetPaymentSourceAction => ({\n type: SET_PAYMENT_SOURCE,\n payload: {\n data,\n },\n});\n\nexport interface SetPaymentSourcesAction {\n type: SET_PAYMENT_SOURCES;\n payload: {\n list: ListSegment;\n };\n}\n\nexport const setPaymentSourcesAction = (list: ListSegment): SetPaymentSourcesAction => ({\n type: SET_PAYMENT_SOURCES,\n payload: {\n list,\n },\n});\n\nexport interface CleanPaymentSourceAction {\n type: CLEAN_PAYMENT_SOURCE;\n}\n\nexport const cleanPaymentSourceAction = (): CleanPaymentSourceAction => ({\n type: CLEAN_PAYMENT_SOURCE,\n});\n\nexport interface UpdatePaymentSourceAction {\n type: UPDATE_PAYMENT_SOURCE;\n payload: {\n data: PaymentSourceModel;\n };\n}\n\nexport const updatePaymentSourceAction = (data: PaymentSourceModel): UpdatePaymentSourceAction => ({\n type: UPDATE_PAYMENT_SOURCE,\n payload: {\n data,\n },\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type PaymentSourcesAction =\n | SetPaymentSourceAction\n | CleanPaymentSourceAction\n | UpdatePaymentSourceAction\n | SetPaymentSourcesAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\n\nexport interface FetchPaymentSourcesActionOptions {\n customerId?: string;\n}\n\nexport function fetchPaymentSourceAction(paymentSourceId: string): AppThunkAction {\n return async (dispatch) => {\n await call({\n actionName: 'fetch_payment_source',\n call: () => api.getPaymentSource(paymentSourceId),\n dispatch,\n onSuccess: (result) => {\n dispatch(setPaymentSourceAction(result));\n },\n });\n };\n}\n\nexport function fetchPaymentSourcesAction(\n options: FetchPaymentSourcesActionOptions,\n): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('fetch_payment_sources', true));\n try {\n const result = await api.listPaymentSources(options);\n await dispatch(setPaymentSourcesAction(result));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('fetch_payment_sources', e));\n }\n } finally {\n await dispatch(setActionRequestingAction('fetch_payment_sources', false));\n }\n };\n}\n\nexport function deactivatePaymentSourceAction(paymentSource: PaymentSourceModel): AppThunkAction {\n return async (dispatch, getState) => {\n await dispatch(setActionRequestingAction('update_payment_source', true));\n try {\n const paymentSources = getState().paymentSources.list.items.filter(\n (el) => el.unique_hash === paymentSource.unique_hash,\n );\n\n for (const el of paymentSources) {\n const result = await api.deactivatePaymentSource(el.id);\n await dispatch(updatePaymentSourceAction(result));\n }\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('update_payment_source', e));\n }\n throw e;\n } finally {\n await dispatch(setActionRequestingAction('update_payment_source', false));\n }\n };\n}\n\nexport function deactivateAllPaymentSourcesAction(customerId: string): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('deactivate_all_payment_sources', true));\n try {\n const result = await api.deactivateAllPaymentSources(customerId);\n for (const source of result) {\n source.active = false;\n await dispatch(updatePaymentSourceAction(source));\n }\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('deactivate_all_payment_sources', e));\n }\n } finally {\n await dispatch(setActionRequestingAction('deactivate_all_payment_sources', false));\n }\n };\n}\n","import * as api from '../../apis';\nimport {\n AutomatedMailingReportModel,\n AutomatedMailingReportPosted,\n PromotionReportModel,\n ResponseError,\n TransactionsReportModel,\n} from '../../apis';\nimport {\n ADD_AUTOMATED_MAILING_REPORT,\n REMOVE_AUTOMATED_MAILING_REPORT,\n SET_AUTOMATED_MAILING_REPORTS,\n SET_PROMOTION_REPORT,\n SET_TRANSACTIONS_REPORT,\n} from '../constants';\nimport { setActionRequestingAction, setActionResponseErrorAction } from './global';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction } from './index';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetTransactionsReportAction {\n type: SET_TRANSACTIONS_REPORT;\n payload: {\n transactions: TransactionsReportModel;\n };\n}\n\nexport const setTransactionsReportAction = (transactions: TransactionsReportModel): SetTransactionsReportAction => ({\n type: SET_TRANSACTIONS_REPORT,\n payload: {\n transactions,\n },\n});\n\nexport interface SetAutomatedMailingReportAction {\n type: SET_AUTOMATED_MAILING_REPORTS;\n payload: {\n automatedMailingReports: AutomatedMailingReportModel[];\n };\n}\n\nexport const setAutomatedMailingReportsAction = (\n automatedMailingReports: AutomatedMailingReportModel[],\n): SetAutomatedMailingReportAction => ({\n type: SET_AUTOMATED_MAILING_REPORTS,\n payload: {\n automatedMailingReports,\n },\n});\n\nexport interface CreateAutomatedMailingReportAction {\n type: ADD_AUTOMATED_MAILING_REPORT;\n payload: {\n automatedMailingReport: AutomatedMailingReportModel;\n };\n}\n\nexport const createAutomatedMailingReportAction = (\n automatedMailingReport: AutomatedMailingReportModel,\n): CreateAutomatedMailingReportAction => ({\n type: ADD_AUTOMATED_MAILING_REPORT,\n payload: {\n automatedMailingReport,\n },\n});\n\nexport interface RemoveAutomatedMailingReportAction {\n type: REMOVE_AUTOMATED_MAILING_REPORT;\n payload: {\n automatedMailingReportId: string;\n };\n}\n\nexport const removeAutomatedMailingReportAction = (\n automatedMailingReportId: string,\n): RemoveAutomatedMailingReportAction => ({\n type: REMOVE_AUTOMATED_MAILING_REPORT,\n payload: {\n automatedMailingReportId,\n },\n});\n\nexport interface SetPromotionReportAction {\n type: SET_PROMOTION_REPORT;\n payload: {\n promotionReport: PromotionReportModel;\n };\n}\n\nexport const setPromotionReportAction = (promotionReport: PromotionReportModel): SetPromotionReportAction => ({\n type: SET_PROMOTION_REPORT,\n payload: {\n promotionReport: promotionReport,\n },\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type ReportsAction =\n | SetTransactionsReportAction\n | SetAutomatedMailingReportAction\n | CreateAutomatedMailingReportAction\n | RemoveAutomatedMailingReportAction\n | SetPromotionReportAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\nexport interface FetchTransactionsReportActionOptions {\n from?: string;\n to?: string;\n}\n\nexport interface FetchOutstandingReturnsReportActionOptions {\n from?: string;\n to?: string;\n}\n\nexport function fetchTransactionsReportAction(\n options: FetchTransactionsReportActionOptions = {},\n): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('fetch_transactions_report', true));\n\n try {\n const body = await api.getTransactionsReport(options);\n await dispatch(setTransactionsReportAction(body));\n await dispatch(setActionRequestingAction('fetch_transactions_report', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('fetch_transactions_report', e));\n }\n await dispatch(setActionRequestingAction('fetch_transactions_report', false));\n throw e;\n }\n };\n}\n\nexport function fetchAutomatedMailingReportsAction(): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('fetch_automated_mailing_report', true));\n try {\n const body = await api.fetchAutomatedMailingReports();\n await dispatch(setAutomatedMailingReportsAction(body));\n await dispatch(setActionRequestingAction('fetch_automated_mailing_report', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('fetch_automated_mailing_report', e));\n }\n await dispatch(setActionRequestingAction('fetch_automated_mailing_report', false));\n throw e;\n }\n };\n}\n\nexport function addAutomatedMailingReportAction(data: AutomatedMailingReportPosted): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('create_automated_mailing_report', true));\n\n try {\n const body = await api.createAutomatedMailingReport(data);\n await dispatch(createAutomatedMailingReportAction(body));\n await dispatch(setActionRequestingAction('create_automated_mailing_report', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('create_automated_mailing_report', e));\n }\n await dispatch(setActionRequestingAction('create_automated_mailing_report', false));\n throw e;\n }\n };\n}\n\nexport function deleteAutomatedMailingReportAction(id: string): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('remove_automated_mailing_report', true));\n\n try {\n await api.removeAutomatedMailingReport(id);\n await dispatch(removeAutomatedMailingReportAction(id));\n await dispatch(setActionRequestingAction('remove_automated_mailing_report', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('remove_automated_mailing_report', e));\n }\n await dispatch(setActionRequestingAction('remove_automated_mailing_report', false));\n throw e;\n }\n };\n}\n\nexport function fetchPromotionReportAction(promotionId: string): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('fetch_promotion_report', true));\n\n try {\n const body = await api.fetchPromotionReport(promotionId);\n await dispatch(setPromotionReportAction(body));\n await dispatch(setActionRequestingAction('fetch_promotion_report', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('fetch_promotion_report', e));\n }\n await dispatch(setActionRequestingAction('fetch_promotion_report', false));\n throw e;\n }\n };\n}\n","import { download, request, segmentListLimit } from './utils';\nimport { stringify } from 'querystring';\n\nexport interface SummaryModel {\n total: string;\n convenience: string;\n gross: string;\n fees: string;\n net: string;\n}\n\nexport interface TransactionsReportModel {\n date: string;\n charges: SummaryModel;\n refunds: SummaryModel;\n returns_credit: SummaryModel;\n returns_debit: SummaryModel;\n adjustments_credit: SummaryModel;\n adjustments_debit: SummaryModel;\n total: string;\n net: string;\n gross: string;\n}\n\nexport interface PromotionReportModel {\n name: string;\n start_date: string;\n end_date?: string;\n promo_transactions_earned_count: string;\n promo_transactions_earned_value: string;\n promo_transactions_redeemed_count: string;\n promo_transactions_redeemed_value: string;\n transactions_in_promo_period_count: string;\n transactions_in_promo_period_value: string;\n average_transactions_in_promo_period_count: string;\n average_transaction_in_promo_period_value: string;\n average_transactions_by_day_prior30_count: string;\n average_transaction_by_day_prior30_value: string;\n average_transactions_by_day_prior90_count: string;\n average_transaction_by_day_prior90_value: string;\n}\n\nexport interface AutomatedMailingReportPosted {\n type: string;\n email: string;\n interval: string;\n}\n\nexport interface AutomatedMailingReportModel extends AutomatedMailingReportPosted {\n id: string;\n}\n\nexport async function downloadOutstandingReturnsReport(options: { from: string; to: string; filterType: string }) {\n const query = stringify({\n ...options,\n });\n\n await download({\n method: 'GET',\n url: `/api/reports/returns/download?${query}`,\n });\n}\n\nexport async function getTransactionsReport(options: { from?: string; to?: string } = {}) {\n const query = stringify({\n ...options,\n });\n\n const res = await request({\n method: 'GET',\n url: `/api/reports/transactions?${query}`,\n });\n\n return res.result;\n}\n\nexport async function downloadTransactionsReport(options: { from?: string; to?: string; format: string }) {\n const query = stringify({\n ...options,\n });\n\n await download({\n method: 'GET',\n url: `/api/reports/transactions/download?${query}`,\n });\n}\n\nexport async function downloadChargesReport(options: { status?: string[]; from?: string; to?: string } = {}) {\n const query = stringify({\n limit: segmentListLimit,\n ...options,\n });\n\n await download({\n method: 'GET',\n url: `/api/reports/charges?${query}`,\n });\n}\n\nexport async function downloadSettlementsReport(options: { from?: string; to?: string } = {}) {\n const query = stringify({\n ...options,\n });\n\n await download({\n method: 'GET',\n url: `/api/reports/settlements?${query}`,\n });\n}\n\nexport async function downloadSettlementDetailsReport(options: { from?: string; to?: string } = {}) {\n const query = stringify({\n ...options,\n });\n\n await download({\n method: 'GET',\n url: `/api/reports/settlement-details?${query}`,\n });\n}\n\nexport async function downloadSettlementDetailsReportById(settlementId: string) {\n await download({\n method: 'GET',\n url: `/api/reports/settlements/${settlementId}`,\n });\n}\n\nexport async function downloadActivityDetailsReport(options: { from?: string; to?: string } = {}) {\n const query = stringify({\n ...options,\n });\n\n await download({\n method: 'GET',\n url: `/api/reports/activity-details?${query}`,\n });\n}\n\nexport async function createAutomatedMailingReport(details: AutomatedMailingReportPosted) {\n const res = await request({\n method: 'POST',\n url: `/api/reports/automated-mailing`,\n data: details,\n });\n\n return res.result;\n}\n\nexport async function removeAutomatedMailingReport(reportId: string) {\n const res = await request({\n method: 'DELETE',\n url: `/api/reports/automated-mailing/${reportId}/delete`,\n });\n return res.result;\n}\n\nexport async function fetchAutomatedMailingReports() {\n const res = await request({\n method: 'GET',\n url: `/api/reports/automated-mailing`,\n });\n\n return res.result;\n}\n\nexport async function fetchPromotionReport(promotionId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/reports/promotions/${promotionId}`,\n });\n return res.result;\n}\n","import * as api from '../../apis';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction, setActionRequestingAction, setActionResponseErrorAction } from './index';\nimport { DashboardUserModel, DashboardUserWithId } from '../../apis';\nimport { ADD_USER, SET_USERS, UPDATE_USER_ROLES, REMOVE_USER } from '../constants';\nimport { DashboardUser, DashboardUserUpdated, ResponseError } from '../../apis';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetUsersAction {\n type: SET_USERS;\n payload: {\n arr: DashboardUserModel[];\n };\n}\n\nexport const setUsersAction = (arr: DashboardUserModel[]): SetUsersAction => ({\n type: SET_USERS,\n payload: {\n arr,\n },\n});\n\nexport interface AddUserAction {\n type: ADD_USER;\n payload: {\n user: DashboardUserModel;\n };\n}\n\nexport const addUserAction = (user: DashboardUserModel): AddUserAction => ({\n type: ADD_USER,\n payload: {\n user,\n },\n});\n\nexport interface RemoveUserAction {\n type: REMOVE_USER;\n payload: {\n email: string;\n };\n}\n\nexport const removeUserAction = (email: string): RemoveUserAction => ({\n type: REMOVE_USER,\n payload: {\n email,\n },\n});\n\nexport interface UpdateUserRoleAction {\n type: UPDATE_USER_ROLES;\n payload: {\n user: DashboardUserModel;\n };\n}\n\nexport const updateUserRoleAction = (user: DashboardUserModel): UpdateUserRoleAction => ({\n type: UPDATE_USER_ROLES,\n payload: {\n user,\n },\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type UsersAction = SetUsersAction | AddUserAction | RemoveUserAction | UpdateUserRoleAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\n\nexport function fetchDashboardUsersAction(): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('fetch_dashboard_users', true));\n\n try {\n const body = await api.getDashboardUsers();\n await dispatch(setUsersAction(body));\n await dispatch(setActionRequestingAction('fetch_dashboard_users', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('fetch_dashboard_users', e));\n }\n await dispatch(setActionRequestingAction('fetch_dashboard_users', false));\n throw e;\n }\n };\n}\n\nexport function addDashboardUserAction(user: DashboardUser): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('add_dashboard_user', true));\n\n try {\n const result = await api.addDashboardUser(user);\n await dispatch(addUserAction(result));\n await dispatch(setActionRequestingAction('add_dashboard_user', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('add_dashboard_user', e));\n }\n await dispatch(setActionRequestingAction('add_dashboard_user', false));\n throw e;\n }\n };\n}\n\nexport function removeDashboardUserAction(user: DashboardUserWithId): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('remove_dashboard_user', true));\n try {\n await api.removeDashboardRoles(user);\n await dispatch(removeUserAction(user.email));\n await dispatch(setActionRequestingAction('remove_dashboard_user', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('remove_dashboard_user', e));\n }\n await dispatch(setActionRequestingAction('remove_dashboard_user', false));\n throw e;\n }\n };\n}\n\nexport function updateDashboardUserRoleAction(user: DashboardUserUpdated): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('update_dashboard_user_roles', true));\n\n try {\n const result = await api.updateDashboardUserRole(user);\n await dispatch(updateUserRoleAction(result));\n await dispatch(setActionRequestingAction('update_dashboard_user_roles', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('update_dashboard_user_roles', e));\n }\n await dispatch(setActionRequestingAction('update_dashboard_user_roles', false));\n throw e;\n }\n };\n}\n","import { request } from './utils';\n\nexport interface DashboardUser {\n first_name: string;\n last_name: string;\n email: string;\n title: string;\n}\n\nexport interface DashboardUserPosted extends DashboardUser {\n roles: string;\n user_type: string;\n}\n\nexport interface DashboardUserUpdated extends DashboardUser {\n roles: string;\n owner_id: string;\n}\n\nexport interface DashboardUserModel extends DashboardUser {\n mobile: string;\n id: string;\n user_type: string;\n}\n\nexport interface DashboardUserWithId extends DashboardUser {\n owner_id: string;\n}\n\nexport interface ApplicationRoleModel {\n scope: string;\n user_id: string;\n name: string;\n normalized_name: string;\n type: string;\n}\n\nexport async function getDashboardUsers() {\n const res = await request({\n method: 'GET',\n url: `/api/users`,\n });\n return res.result;\n}\n\nexport async function getRoles(userId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/users/${userId}/roles`,\n });\n return res.result;\n}\nexport async function addDashboardUser(user: DashboardUser) {\n const res = await request({\n method: 'POST',\n url: `/api/users`,\n data: user,\n });\n return res.result;\n}\n\nexport async function removeDashboardRoles(user: DashboardUser) {\n const res = await request({\n method: 'DELETE',\n url: `/api/users/roles`,\n data: user,\n });\n return res.result;\n}\n\nexport async function updateDashboardUserRole(user: DashboardUserUpdated) {\n const res = await request({\n method: 'PUT',\n url: `/api/users/roles`,\n data: user,\n });\n return res.result;\n}\n","import * as api from '../../apis';\nimport { AppThunkAction } from '../index';\nimport {\n ApplicationAction,\n call,\n setActionRequestingAction,\n setActionResponseErrorAction,\n resetActionResponseErrorAction,\n} from './index';\nimport { ADD_PAYLINK, CLEAN_PAYLINK, SET_PAYLINK, SET_PAYLINKS, UPSERT_PAYLINK } from '../constants';\nimport { CreatePayLinkEmailModel, CreatePayLinkRequest, ResponseError } from '../../apis';\nimport { PayLinkModel } from '../../apis/payLinks';\nimport { ListSegment } from '../../apis';\nimport { LinkType } from '../../pages/Paylink/CreateStep2';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetPayLinksAction {\n type: SET_PAYLINKS;\n payload: {\n list: ListSegment;\n };\n}\n\nexport const setPayLinksAction = (list: ListSegment): SetPayLinksAction => ({\n type: SET_PAYLINKS,\n payload: {\n list,\n },\n});\n\nexport interface AddPayLinkAction {\n type: ADD_PAYLINK;\n payload: {\n payLink: PayLinkModel;\n };\n}\n\nexport const addPayLinkAction = (payLink: PayLinkModel): AddPayLinkAction => ({\n type: ADD_PAYLINK,\n payload: {\n payLink,\n },\n});\n\nexport interface SetPayLinkAction {\n type: SET_PAYLINK;\n payload: {\n payLink: PayLinkModel;\n };\n}\n\nexport const setPayLinkAction = (payLink: PayLinkModel): SetPayLinkAction => ({\n type: SET_PAYLINK,\n payload: {\n payLink,\n },\n});\n\nexport interface UpsertPayLinkAction {\n type: UPSERT_PAYLINK;\n payload: {\n payLink: PayLinkModel;\n };\n}\n\nexport const upsertPayLinkAction = (payLink: PayLinkModel): UpsertPayLinkAction => ({\n type: UPSERT_PAYLINK,\n payload: {\n payLink,\n },\n});\n\nexport interface CleanPayLinkAction {\n type: CLEAN_PAYLINK;\n}\n\nexport const cleanPayLinkAction = (): CleanPayLinkAction => ({\n type: CLEAN_PAYLINK,\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type PayLinksAction =\n | SetPayLinksAction\n | AddPayLinkAction\n | SetPayLinkAction\n | CleanPayLinkAction\n | UpsertPayLinkAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\nexport interface FetchPayLinkActionOptions {\n skip?: number;\n limit?: number;\n status?: string[];\n from?: string;\n to?: string;\n email?: string;\n mobile?: string;\n search?: string;\n}\n\nexport function fetchPayLinksAction(options: FetchPayLinkActionOptions = {}): AppThunkAction {\n return async (dispatch, getState) => {\n if (getState().merchant.selected === null) return;\n\n await call({\n actionName: 'fetch_pay_links',\n call: () => api.listPayLinks(options),\n dispatch,\n onSuccess: (body) => {\n dispatch(setPayLinksAction(body));\n },\n });\n };\n}\n\nexport function fetchPayLinkAction(payLinkId: string): AppThunkAction {\n return async (dispatch, getState) => {\n // If pay link already in the list, return directly\n if (getState().payLinks.list.items.find((value) => value.id === payLinkId)) {\n return;\n }\n\n await call({\n actionName: 'fetch_pay_link',\n call: () => api.getPayLink(payLinkId),\n dispatch,\n onSuccess: (body) => {\n dispatch(addPayLinkAction(body));\n },\n });\n };\n}\n\nexport function createPayLinkAction(\n data: CreatePayLinkRequest,\n type: LinkType,\n formData: FormData | null,\n): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('create_pay_link', true));\n await dispatch(resetActionResponseErrorAction('send_email'));\n await dispatch(resetActionResponseErrorAction('send_sms'));\n let result: PayLinkModel | undefined;\n try {\n if (formData) {\n const documents = await api.uploadPayLinkDocument(formData);\n data.order.documents = documents;\n }\n result = await api.createPayLink(data);\n await dispatch(setPayLinkAction(result));\n await dispatch(setActionRequestingAction('create_pay_link', false));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('create_pay_link', e));\n throw e;\n }\n await dispatch(setActionRequestingAction('create_pay_link', false));\n }\n\n if (result) {\n try {\n switch (type) {\n case 'email':\n await dispatch(setActionRequestingAction('send_email', true));\n const createEmailModel = {\n customer: {\n email: data.customer.email,\n first_name: data.customer.first_name,\n last_name: data.customer.last_name,\n },\n merchant_name: data.merchant.communication_safe_name ?? data.merchant.display_name,\n pay_link_id: result.id,\n pay_link_url: result.url,\n };\n await api.sendPayLinkEmail(createEmailModel);\n await dispatch(setActionRequestingAction('send_email', false));\n break;\n case 'sms':\n await dispatch(setActionRequestingAction('send_sms', true));\n await api.sendPayLinkSms(result.id);\n await dispatch(setActionRequestingAction('send_sms', false));\n break;\n }\n } catch (e) {\n switch (type) {\n case 'email':\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('send_email', e));\n } else {\n await dispatch(setActionRequestingAction('send_email', false));\n }\n break;\n case 'sms':\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('send_sms', e));\n } else {\n await dispatch(setActionRequestingAction('send_sms', false));\n }\n break;\n }\n }\n }\n };\n}\n\nexport function sendSmsAction(id: string): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('send_sms', true));\n\n try {\n await api.sendPayLinkSms(id);\n await dispatch(setActionRequestingAction('send_sms', false));\n await dispatch(resetActionResponseErrorAction('send_sms'));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('send_sms', e));\n throw e;\n }\n await dispatch(setActionRequestingAction('send_sms', false));\n }\n };\n}\n\nexport function sendEmailAction(createEmailModel: CreatePayLinkEmailModel): AppThunkAction {\n return async (dispatch) => {\n await dispatch(setActionRequestingAction('send_email', true));\n try {\n await api.sendPayLinkEmail(createEmailModel);\n await dispatch(setActionRequestingAction('send_email', false));\n await dispatch(resetActionResponseErrorAction('send_email'));\n } catch (e) {\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction('send_email', e));\n throw e;\n }\n await dispatch(setActionRequestingAction('send_email', false));\n }\n };\n}\n\nexport function cancelPayLinkAction(payLinkId: string): AppThunkAction {\n return async (dispatch) => {\n await call({\n actionName: 'cancel_pay_link',\n call: () => api.cancelPayLink(payLinkId),\n dispatch,\n onSuccess: (body) => {\n dispatch(upsertPayLinkAction(body));\n },\n });\n };\n}\n","import * as api from '../../apis';\nimport { ReturnModel } from '../../apis';\nimport { CLEAN_RETURNS, SET_RETURN } from '../constants';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction, call } from './index';\n\n// -----------------\n// ACTIONS - These are serializable (hence replayable) descriptions of state transitions.\n// They do not themselves have any side-effects; they just describe something that is going to happen.\n\nexport interface SetReturnAction {\n type: SET_RETURN;\n payload: {\n return: ReturnModel;\n };\n}\n\nexport const setReturnAction = (data: ReturnModel): SetReturnAction => ({\n type: SET_RETURN,\n payload: {\n return: data,\n },\n});\n\nexport interface CleanReturnsAction {\n type: CLEAN_RETURNS;\n}\n\nexport const cleanReturnsAction = (): CleanReturnsAction => ({\n type: CLEAN_RETURNS,\n});\n\n// Declare a 'discriminated union' type. This guarantees that all references to 'type' properties contain one of the\n// declared type strings (and not any other arbitrary string).\nexport type ReturnsAction = SetReturnAction | CleanReturnsAction;\n\n// ----------------\n// ACTION CREATORS - These are functions exposed to UI components that will trigger a state transition.\n// They don't directly mutate state, but they can have external side-effects (such as loading data).\n\nexport function fetchReturnAction(chargeId: string): AppThunkAction {\n return async (dispatch, getState) => {\n // If return already in the list, return directly\n const chargeReturn = getState().returns.arr.find((value) => value.charge_id === chargeId);\n if (chargeReturn) {\n return chargeReturn;\n }\n\n await call({\n actionName: 'fetch_return',\n call: () => api.getReturn(chargeId),\n dispatch,\n onSuccess: (result) => {\n dispatch(setReturnAction(result));\n },\n });\n };\n}\n","import { SET_PROMOTION, SET_PROMOTIONS } from '../constants';\nimport { ListSegment, PromotionModel } from '../../apis';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction, call } from './index';\nimport * as api from '../../apis';\n\nexport interface SetPromotionAction {\n type: SET_PROMOTION;\n payload: {\n selectedPromotion: PromotionModel;\n };\n}\n\nexport const setPromotionAction = (selectedPromotion: PromotionModel): SetPromotionAction => ({\n type: SET_PROMOTION,\n payload: {\n selectedPromotion,\n },\n});\n\nexport interface SetPromotionsAction {\n type: SET_PROMOTIONS;\n payload: {\n list: ListSegment;\n };\n}\n\nexport const setPromotionsAction = (list: ListSegment): SetPromotionsAction => ({\n type: SET_PROMOTIONS,\n payload: {\n list,\n },\n});\n\nexport function fetchPromotionAction(promotionId: string): AppThunkAction {\n return async (dispatch) => {\n await call({\n actionName: 'fetch_promotion',\n call: () => api.getPromotion(promotionId),\n dispatch,\n onSuccess: async (body) => {\n await dispatch(setPromotionAction(body));\n },\n });\n };\n}\n\nexport function fetchPromotionsAction(skip?: number): AppThunkAction {\n return async (dispatch) => {\n await call({\n actionName: 'fetch_promotions',\n call: () => api.listPromotions(skip),\n dispatch,\n onSuccess: async (body) => {\n await dispatch(setPromotionsAction(body));\n },\n });\n };\n}\n\nexport type PromotionsAction = SetPromotionAction | SetPromotionsAction;\n","import { SET_CREDIT, SET_CREDITS } from '../constants';\nimport { CreditModel, ListSegment } from '../../apis';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction, call } from './index';\nimport * as api from '../../apis';\n\nexport interface SetCreditAction {\n type: SET_CREDIT;\n payload: {\n selectedCredit: CreditModel;\n };\n}\n\nexport const setCreditAction = (selectedCredit: CreditModel): SetCreditAction => ({\n type: SET_CREDIT,\n payload: {\n selectedCredit: selectedCredit,\n },\n});\n\nexport interface SetCreditsAction {\n type: SET_CREDITS;\n payload: {\n list: ListSegment;\n };\n}\n\nexport const setCreditsAction = (list: ListSegment): SetCreditsAction => ({\n type: SET_CREDITS,\n payload: {\n list,\n },\n});\n\nexport interface FetchCreditsActionOptions {\n skip?: number;\n limit?: number;\n customerId?: string;\n promotionId?: string;\n originatedFromChargeId?: string[];\n redeemedChargeId?: string;\n}\n\nexport function fetchCreditAction(creditId: string): AppThunkAction {\n return async (dispatch) => {\n await call({\n actionName: 'fetch_credit',\n call: () => api.getCredit(creditId),\n dispatch,\n onSuccess: async (body) => {\n await dispatch(setCreditAction(body));\n },\n });\n };\n}\n\nexport function fetchCreditsAction(options: FetchCreditsActionOptions = {}): AppThunkAction {\n return async (dispatch) => {\n await call({\n actionName: 'fetch_credits',\n call: () => api.listCredits(options),\n dispatch,\n onSuccess: async (body) => {\n await dispatch(setCreditsAction(body));\n },\n });\n };\n}\n\nexport type CreditsAction = SetCreditAction | SetCreditsAction;\n","import { request, segmentListLimit } from './utils';\nimport { stringify } from 'querystring';\nimport { ListSegment } from './response';\nimport { CustomerModel } from './customers';\n\nexport interface CreditModel {\n id: string;\n merchant_id: string;\n promotion_id: string;\n customer: CustomerModel;\n redeemed: boolean;\n amount: number;\n originated_from_charge_id: string;\n redeemed_with_charge_id?: string;\n created_at: string;\n updated_at?: string;\n}\n\nexport async function getCredit(creditId: string) {\n const res = await request({\n method: 'GET',\n url: `/api/credits/${creditId}`,\n });\n return res.result;\n}\n\nexport async function listCredits(\n options: {\n skip?: number;\n originatedFromChargeId?: string[];\n redeemedWithChargeId?: string;\n promotionId?: string;\n customerId?: string;\n } = {},\n) {\n const query = stringify({\n limit: segmentListLimit,\n ...options,\n });\n\n const res = await request>({\n method: 'GET',\n url: `/api/credits?${query}`,\n });\n return res.result;\n}\n","import { SET_PROCESSING_FEE_AMOUNT } from '../constants';\nimport { AppThunkAction } from '../index';\nimport { ApplicationAction, call } from './index';\nimport * as api from '../../apis';\n\nexport interface SetProcessingFeeAmount {\n type: SET_PROCESSING_FEE_AMOUNT;\n payload: {\n processing_fee_amount: number;\n };\n}\n\nexport const setProcessingFeeAmount = (processing_fee_amount: number): SetProcessingFeeAmount => ({\n type: SET_PROCESSING_FEE_AMOUNT,\n payload: {\n processing_fee_amount,\n },\n});\n\nexport function fetchProcessingFeeAmountAction(chargeAmount: number): AppThunkAction {\n return async (dispatch) => {\n await call({\n actionName: 'fetch_processing_fee_amount',\n call: () => api.calculateProcessingFee(chargeAmount),\n dispatch,\n onSuccess: (body) => dispatch(setProcessingFeeAmount(body.payment_processing_fee)),\n });\n };\n}\n\nexport type ProcessingFeeAction = SetProcessingFeeAmount;\n","import { request } from './utils';\n\nexport interface ProcessingFeeAmountModel {\n payment_processing_fee: number;\n}\n\nexport interface ProcessingFeeModel {\n id: string;\n charge_id: string;\n config_id: string;\n amount: number;\n}\n\nexport async function calculateProcessingFee(chargeAmount: number) {\n const res = await request({\n method: 'GET',\n url: `/api/processing-fees?charge_amount=${chargeAmount}`,\n });\n return res.result;\n}\n","import { AuthenticationAction } from './authentication';\nimport { BalanceTransferAction } from './balanceTransfer';\nimport { GlobalAction, setActionRequestingAction, setActionResponseErrorAction } from './global';\nimport { ChargeAction } from './charge';\nimport { SettlementAction } from './settlement';\nimport { CustomerAction } from './customer';\nimport { PaymentSourcesAction } from './paymentSources';\nimport { MerchantAction } from './merchant';\nimport { ReportsAction } from './reports';\nimport { ActionName } from '../types';\nimport { UsersAction } from './users';\nimport axios from 'axios';\nimport { ResponseError } from '../../apis';\nimport { PayLinksAction } from './payLinks';\nimport { ReturnsAction } from './returns';\nimport { RewardsAction } from './rewards';\nimport { PromotionsAction } from './promotions';\nimport { CreditsAction } from './credits';\nimport { ProcessingFeeAction } from './processingFees';\n\nexport * from './authentication';\nexport * from './balanceTransfer';\nexport * from './global';\nexport * from './charge';\nexport * from './settlement';\nexport * from './customer';\nexport * from './paymentSources';\nexport * from './merchant';\nexport * from './reports';\nexport * from './splitio';\nexport * from './users';\nexport * from './payLinks';\nexport * from './returns';\nexport * from './rewards';\nexport * from './promotions';\nexport * from './credits';\nexport * from './processingFees';\n\nexport type ApplicationAction =\n | AuthenticationAction\n | BalanceTransferAction\n | GlobalAction\n | ChargeAction\n | SettlementAction\n | CustomerAction\n | PaymentSourcesAction\n | MerchantAction\n | ReportsAction\n | UsersAction\n | PayLinksAction\n | ReturnsAction\n | RewardsAction\n | PromotionsAction\n | CreditsAction\n | ProcessingFeeAction;\n\n/**\n * Helper method allowing to do an asynchronous API call.\n * It allows to generically handle cancelation, errors and redux dispatch.\n */\nexport async function call(options: {\n actionName: ActionName;\n dispatch: (action: ApplicationAction) => void;\n call: () => Promise;\n onSuccess: (data: T) => void;\n onCancel?: (err: Error) => void;\n onError?: (err: Error) => void;\n}) {\n const { actionName, call, dispatch, onSuccess, onCancel, onError } = options;\n await dispatch(setActionRequestingAction(actionName, true));\n\n try {\n const body = await call();\n onSuccess(body);\n await dispatch(setActionRequestingAction(actionName, false));\n } catch (e) {\n // If request canceled, we return directly\n if (axios.isCancel(e)) {\n if (onCancel) {\n onCancel(e);\n }\n return;\n }\n\n // If an error happened, we try to dispatch it to the store\n if (e instanceof ResponseError) {\n dispatch(setActionResponseErrorAction(actionName, e));\n }\n await dispatch(setActionRequestingAction(actionName, false));\n\n // If the error call back is provided, we call the callback with the error\n if (onError) {\n onError(e);\n }\n }\n}\n","import { ActionName, ActionStatus, SPLIT_FLAG } from '../types';\nimport { ROUTE } from '../../config';\nimport { ISplitTreatmentsProps } from '@splitsoftware/splitio-react/types/types';\n\nexport function numberRange(start: number, end: number, step = 1): number[] {\n const output = [];\n if (typeof end === 'undefined') {\n end = start;\n start = 0;\n }\n for (let i = start; i < end + 1; i += step) {\n output.push(i);\n }\n return output;\n}\n\nexport function isActionRequesting(requests: ActionStatus[], name: ActionName): boolean {\n const status = requests.find((el) => el.name === name);\n if (!status) return false;\n return status.isRequesting;\n}\n\nexport function getActionStatus(statuses: ActionStatus[], name: ActionName) {\n return statuses.find((el) => el.name === name);\n}\n\nexport function getResponseError(statuses: ActionStatus[], name: ActionName) {\n const status = getActionStatus(statuses, name);\n if (!status) return null;\n return status.responseError || null;\n}\n\nexport const customerRoute = (customerId: string) => ROUTE.CUSTOMER.replace(':customerId', customerId);\nexport const payLinkRoute = (payLinkId: string) => ROUTE.PAYLINK.replace(':payLinkId', payLinkId);\nexport const transactionRoute = (chargeId: string) => ROUTE.TRANSACTION.replace(':transactionId', chargeId);\nexport const transactionsPaymentFilterRoute = (paymentSourceId: string) =>\n ROUTE.TRANSACTIONS + `?paymentSourceId=${paymentSourceId}`;\nexport const settlementRoute = (settlementId: string) => ROUTE.SETTLEMENT.replace(':settlementId', settlementId);\nexport const promotionRoute = (promotionId: string) => ROUTE.PROMOTION.replace(':promotionId', promotionId);\nexport const outstandingReportsRoute = (filterType: string) =>\n ROUTE.REPORTS_OUTSTANDING_REPORTS.replace(':filterType', filterType);\n\n/**\n * This function set the default value for the flag\n * TODO: See if the return type is something else than a boolean, we could type the flags directly\n * @param name\n * @param flags\n */\nexport function getSplitFlagValue(name: SPLIT_FLAG, flags: ISplitTreatmentsProps['names']): boolean {\n flags = flags || {};\n switch (name) {\n case SPLIT_FLAG.REPORTS_TAB:\n return flags.includes(name) || false;\n case SPLIT_FLAG.TRANSACTIONS_REPORTS:\n return flags.includes(name) || false;\n default:\n throw new Error('Not implemented flag value');\n }\n}\n","import { DateTime } from 'luxon';\nimport { CustomerModel } from '../../apis';\n\n// Date\n// formateDateIso ignores timezones and should only be used when generating local dates for URLs/API requests.\nconst toLowerCaseLastTwoChars = (value: string) => value.slice(0, -2) + value.slice(-2).toLowerCase();\n\nexport const formatDateIso = (value: DateTime | undefined) => (value ? value.toFormat('yyyy-MM-dd') : null);\nexport const formatDate = (value: string | null, tz: string | null) =>\n value ? (tz ? DateTime.fromISO(value).setZone(tz) : DateTime.fromISO(value)).toFormat('MMM dd, yyyy') : null;\nexport const formatDateTimeMinutesWithYear = (value: string | null, tz: string | null) =>\n value\n ? toLowerCaseLastTwoChars(\n (tz ? DateTime.fromISO(value).setZone(tz) : DateTime.fromISO(value)).toFormat('MMM dd, yyyy h:mm a'),\n )\n : null;\nexport const formatDateTimeSecondsWithYear = (value: string | null, tz: string | null) =>\n value\n ? toLowerCaseLastTwoChars(\n (tz ? DateTime.fromISO(value).setZone(tz) : DateTime.fromISO(value)).toFormat('MMM dd, yyyy h:mm:ss a'),\n )\n : null;\n\n// Currency\nexport function formatAmount(amount: number | string, withoutSign = false) {\n const num = typeof amount === 'string' ? parseInt(amount) : amount;\n const value = ((num || 0) / 100).toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n if (withoutSign) {\n return `${value}`;\n }\n return `$${value}`;\n}\n\nexport function formatTipAmount(tipAmount: number | string, withoutSign = false) {\n const num = typeof tipAmount === 'string' ? parseInt(tipAmount) : tipAmount;\n const value = ((num || 0) / 100).toLocaleString('en-US', { minimumFractionDigits: 2, maximumFractionDigits: 2 });\n if (withoutSign) {\n return `${value}`;\n }\n return `$${value}`;\n}\n\n// Number\nexport function formatNumberNoDecimal(amount: number | string) {\n const num = typeof amount === 'string' ? parseInt(amount) : amount;\n const value = (num || 0).toLocaleString('en-US', { minimumFractionDigits: 0, maximumFractionDigits: 0 });\n return `${value}`;\n}\n\n// Customer\nexport function formatCustomerName(customer: CustomerModel) {\n return `${customer.individual.first_name} ${customer.individual.last_name}`;\n}\n\nexport function formatMobile(mobile: string, isSearch = false) {\n // Remove spaces and special chars\n mobile = mobile\n .replace(/[^\\w\\s +]/gi, '')\n .replace(/ /g, '')\n .replace(/_/g, '');\n if (mobile === '') {\n return '';\n }\n // Add country code if not search because we do not to pass in the E168 format for fuzzy searches\n if (!isSearch && mobile.charAt(0) !== '+') {\n mobile = ['+1', mobile].join('');\n }\n return mobile;\n}\n\nconst domesticUsRegex = /^1?\\d{10}$/;\n\nexport function formatMobilePhoneNumberReadable(mobile?: string): string {\n if (!mobile) {\n return '';\n }\n\n if (domesticUsRegex.test(mobile)) {\n // domestic US phone number\n const formatted = mobile.length == 11 ? mobile.substr(1) : mobile;\n return `(${formatted.substr(0, 3)}) ${formatted.substr(3, 3)}-${formatted.substr(6)}`;\n } else {\n const formatted = mobile.replace(/[+]/g, '');\n return `(${formatted.substr(1, 3)}) ${formatted.substr(4, 3)}-${formatted.substr(7)}`;\n }\n}\n\n// strings\nexport function formatHypenated(hyphenatedString: string) {\n return hyphenatedString.replace('-', ' ');\n}\n\nexport function formatUnderscored(hyphenatedString: string) {\n return hyphenatedString.replace(/\\_/g, ' ');\n}\n\nexport function formatCapitalizeFirstLetter(text: string) {\n return text[0].toUpperCase() + text.slice(1);\n}\n\n// Bytes\nexport function formatKB(size: number) {\n return Math.round(size / 1024).toFixed(2);\n}\n","import { CHARGE_STATUS } from '../../apis';\nimport { upperFirst } from 'lodash';\n\nexport function formatStatus(status: CHARGE_STATUS) {\n return upperFirst(status.replace('_', ' '));\n}\n","import { ApplicationState } from '../index';\nimport { CustomizationType } from '../../apis';\n\nexport function getCustomization(state: ApplicationState, type: CustomizationType): string {\n const merchant = state.merchant.selected;\n let result = '';\n switch (type) {\n case CustomizationType.CustomerName:\n result = 'Customer';\n break;\n case CustomizationType.ProviderName:\n result = '';\n break;\n }\n result = merchant?.customization?.items.find((value) => value.type === type)?.data.toLowerCase() || result;\n return result.toLowerCase();\n}\n\nexport function pluralize(customization: string | null) {\n if (!customization) return null;\n return `${customization}s`;\n}\n","import { CustomerModel } from '../../apis';\n\nexport function getCustomerName(customer: CustomerModel): string {\n return `${customer.individual.first_name} ${customer.individual.last_name}`;\n}\n","import { PAY_LINK_STATUS, ResponseError } from '../../apis';\nimport { upperFirst } from 'lodash';\n\nexport function formatStatus(status: PAY_LINK_STATUS) {\n return upperFirst(status.replace('_', ' '));\n}\n\nexport function formatErrorMessage(error: ResponseError) {\n switch (error.code.toString()) {\n case 'pay_link_canceled':\n return 'The pay link was canceled.';\n case 'pay_link_expired':\n return 'The pay link has expired.';\n case 'customer_required':\n return 'The pay link is missing a customer.';\n case 'paylink_missing_delivery_info':\n return \"The pay link's customer does not have either one of mobile phone number or email specified.\";\n case 'paylink_send_error':\n return error.message;\n case 'pay_link_send_customer_blocked':\n return error.message + \" Updating the customer's mobile or email will remove the block.\";\n case 'pay_link_send_success_threshold':\n return error.message;\n case 'pay_link_send_failure_threshold':\n return error.message;\n case 'paylink_send_sms_carrier_blocked':\n return error.message;\n default:\n return 'An error has occured during the action.';\n }\n}\n","import { ApplicationRoleModel, MerchantModel } from '../../apis';\nimport { RolesType, USER_ROLE } from '../types';\n/* eslint-disable */\n\nexport function isAdmin(roles: ApplicationRoleModel[] | null) {\n if (!roles) {\n return false;\n }\n return !!roles.find((el) => el.normalized_name === USER_ROLE.MERCHANT_ALLADMIN);\n}\n\nexport function isRegularUser(roles: ApplicationRoleModel[] | null) {\n if (!roles) {\n return false;\n }\n return !!roles.find((el) => el.normalized_name === USER_ROLE.MERCHANT_ALLUSERS);\n}\n\nexport function noAccessStrongholdDirect(roles: ApplicationRoleModel[] | null, merchant: MerchantModel | null) {\n if (!roles || !merchant) {\n return false;\n }\n return roles.find((el) => el.normalized_name === USER_ROLE.NO_STRONGHOLD_DIRECT);\n}\n\nexport function canCreatePayLinkSD(roles: ApplicationRoleModel[] | null, merchant: MerchantModel | null) {\n if (!roles || !merchant) {\n return false;\n }\n return (\n !roles.find((el) => el.normalized_name === USER_ROLE.STRONGHOLD_DIRECT_B2B) &&\n !roles.find((el) => el.normalized_name === USER_ROLE.NO_STRONGHOLD_DIRECT)\n );\n}\n\nexport function canCreatePayLinkB2B(roles: ApplicationRoleModel[] | null, merchant: MerchantModel | null) {\n if (!roles || !merchant) {\n return false;\n }\n return !!roles.find((el) => el.normalized_name === USER_ROLE.STRONGHOLD_DIRECT_B2B);\n}\n\nexport function canCreateReports(roles: ApplicationRoleModel[] | null) {\n if (!roles) {\n return false;\n }\n return !!roles.find(\n (el) =>\n el.normalized_name === USER_ROLE.MERCHANT_REPORTING || el.normalized_name === USER_ROLE.MERCHANT_ALLADMIN,\n );\n}\nexport function canUpdateAmount(roles: ApplicationRoleModel[] | null) {\n if (!roles) {\n return false;\n }\n return !!roles.find((el) => el.normalized_name === USER_ROLE.MERCHANT_TRANSACTIONS_EDIT);\n}\n\nexport function formatRoleType(role: RolesType) {\n let formattedRole;\n switch (role) {\n case 'AllAdmin':\n formattedRole = 'Admin';\n break;\n case 'AllUsers':\n formattedRole = 'Default';\n break;\n case 'StrongholdDirect':\n formattedRole = 'Stronghold Direct';\n break;\n case 'StrongholdDirectB2B':\n formattedRole = 'Stronghold Direct B2B';\n break;\n case 'AllReporting':\n formattedRole = 'Reporting';\n break;\n }\n return formattedRole;\n}\n\nexport function formatRoleTypeFromString(roleType: string) {\n let formattedRole;\n switch (roleType) {\n case 'Admin':\n formattedRole = 'AllAdmin';\n break;\n case 'Default':\n formattedRole = 'AllUsers';\n break;\n case 'Stronghold Direct':\n formattedRole = 'StrongholdDirect';\n break;\n case 'Stronghold Direct B2B':\n formattedRole = 'StrongholdDirectB2B';\n break;\n case 'Reporting':\n formattedRole = 'AllReporting';\n break;\n }\n return formattedRole as RolesType;\n}\n\nexport function toolTipMessage(role: RolesType) {\n let message;\n switch (role) {\n case 'AllAdmin':\n message = 'User can create new users.';\n break;\n case 'AllUsers':\n message = 'User with full access to the dashboard.';\n break;\n case 'StrongholdDirect':\n message = 'User with full access and can create Paylinks.';\n break;\n case 'StrongholdDirectB2B':\n message = 'User with full access and can create B2B Paylinks.';\n break;\n case 'AllReporting':\n message = 'User can view customers and reporting.';\n break;\n }\n return message;\n}\n","import { ApplicationState } from '../index';\n\nexport function getPortalUrl(state: ApplicationState): string {\n if (state.merchant.selected == null || state.global.configuration.portal_url == '') return '';\n\n return (\n state.merchant.selected.short_name +\n (state.global.environmentData != 'live' ? '-sandbox.' : '.') +\n state.global.configuration.portal_url\n );\n}\n","import * as global from './global';\nimport * as format from './format';\nimport * as charge from './charge';\nimport * as customizations from './customizations';\nimport * as customer from './customer';\nimport * as paylink from './paylink';\nimport * as user from './user';\nimport * as merchant from './merchant';\n\nconst selectors = {\n global,\n format,\n charge,\n customer,\n customizations,\n paylink,\n user,\n merchant,\n};\n\nexport default selectors;\n","import * as React from 'react';\nimport { SPLIT_FLAG } from '../../store/types';\nimport { PropsWithChildren, ReactNode } from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { selectTreatmentValue } from '@splitsoftware/splitio-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchSplitTreatmentAction } from '../../store/actions';\n\ntype OwnProps = PropsWithChildren<{\n flag: SPLIT_FLAG;\n unactiveComponent?: ReactNode;\n}>;\n\ninterface StateProps {\n treatment: string | null;\n}\n\ninterface DispatchProps {\n fetchSplitTreatmentAction: typeof fetchSplitTreatmentAction;\n}\n\ntype Props = OwnProps & StateProps & DispatchProps;\n\nclass ToggleSplit extends React.Component {\n componentDidMount = async () => {\n const { flag } = this.props;\n await this.props.fetchSplitTreatmentAction(flag);\n };\n\n render() {\n const { treatment, unactiveComponent, children } = this.props;\n\n if (treatment === 'on') {\n return children;\n }\n\n return unactiveComponent || null;\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state, props: OwnProps) => ({\n treatment: selectTreatmentValue(\n state.splitio,\n props.flag,\n state.merchant.selected ? state.merchant.selected.id : '',\n ),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchSplitTreatmentAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ToggleSplit);\n","import * as React from 'react';\n\nexport interface Props {\n type: 'developers' | 'support';\n subject?: string;\n}\n\nexport default function LinkContact(props: Props) {\n let mailto, subject;\n switch (props.type) {\n case 'developers':\n mailto = 'developers@stronghold.co';\n subject = 'Stronghold Pay Developers';\n break;\n case 'support':\n mailto = 'support@stronghold.co';\n subject = 'Stronghold Pay Support';\n break;\n default:\n mailto = 'support@stronghold.co';\n subject = 'Stronghold Pay Support';\n }\n\n return (\n \n {mailto}\n \n );\n}\n","import * as React from 'react';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter } from 'reactstrap';\nimport LinkContact from '../LinkContact';\n\ntype Props = {\n switchedToSandbox?: boolean;\n showModal: boolean;\n toggle: () => void;\n};\n\nexport default class RequestLiveModal extends React.Component {\n render() {\n const { showModal, switchedToSandbox } = this.props;\n\n return (\n \n Request live access\n \n {switchedToSandbox && (\n

\n Sandbox data is being show as this merchant is not live.\n

\n )}\n

\n Please contact to request live environment access and to\n generate live API keys.\n

\n
\n \n \n \n
\n );\n }\n}\n","import * as React from 'react';\nimport Spinner, { SpinnerProps } from 'reactstrap/lib/Spinner';\n\nexport type Props = SpinnerProps;\n\nexport default function Loader(props: Props) {\n const style = { ...props.style, borderWidth: 1 };\n return ;\n}\n","import * as React from 'react';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Input } from 'reactstrap';\nimport { MerchantModel } from '../../apis';\nimport * as api from '../../apis';\nimport Loader from '../Loader';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faSearch } from '@fortawesome/free-solid-svg-icons';\n\ntype Props = {\n showModal: boolean;\n toggle: () => void;\n onSubmit: (merchant: MerchantModel) => void;\n merchants: MerchantModel[];\n selectedMerchant: MerchantModel;\n};\n\ntype State = {\n selectedMerchant: MerchantModel;\n searchQuery: string;\n isLoading: boolean;\n};\n\nexport default class SelectMerchantModal extends React.Component {\n state: State = {\n selectedMerchant: this.props.selectedMerchant,\n searchQuery: '',\n isLoading: false,\n };\n\n componentDidUpdate(prevProps: Readonly) {\n if (this.props.selectedMerchant !== prevProps.selectedMerchant) {\n this.setState({ selectedMerchant: this.props.selectedMerchant });\n }\n }\n\n onSelectMerchant = async (merchant: MerchantModel) => {\n this.setState({ isLoading: true });\n const selectedMerchant = await api.getMerchant(merchant.id);\n this.setState({ selectedMerchant: selectedMerchant });\n this.setState({ isLoading: false });\n };\n\n onInputChange = (value: string) => {\n this.setState({ searchQuery: value });\n };\n\n filteredMerchants = (): MerchantModel[] => {\n const { searchQuery } = this.state;\n const { merchants } = this.props;\n\n return merchants.filter((merchant) => merchant.display_name.toLowerCase().includes(searchQuery.toLowerCase()));\n };\n\n render() {\n const { showModal } = this.props;\n const { selectedMerchant, isLoading, searchQuery } = this.state;\n\n return (\n \n \n
\n
Select Merchant
\n
\n \n this.onInputChange(e.target.value)}\n placeholder={'Search by Name'}\n />\n
\n
\n
\n \n
\n {this.filteredMerchants().map((el) => {\n const style = ['my-1 btn', selectedMerchant?.id === el.id && 'active'].join(' ');\n return (\n this.onSelectMerchant(el)}\n >\n {el.display_name}\n \n );\n })}\n
\n
\n\n \n this.props.onSubmit(selectedMerchant)}\n >\n {isLoading ? : `Switch Merchant`}\n \n \n
\n );\n }\n}\n","import * as React from 'react';\nimport { NavLink, RouteComponentProps, withRouter } from 'react-router-dom';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { isActionRequesting } from '../store/selectors/global';\nimport { ApplicationState } from '../store';\nimport { ROUTE } from '../config';\nimport RequestLiveModal from '../components/developers/RequestLiveModal';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport {\n setSelectedMerchantAction,\n showRequestLiveDataMessageAction,\n toggleLiveDataAction,\n showSwitchedSandboxDataMessageAction,\n} from '../store/actions';\nimport {\n Collapse,\n Container,\n CustomInput,\n Dropdown,\n DropdownItem,\n DropdownMenu,\n DropdownToggle,\n Form,\n Label,\n Nav,\n Navbar,\n NavbarBrand,\n NavbarToggler,\n NavItem,\n} from 'reactstrap';\nimport { CustomizationType, MerchantModel, ApplicationRoleModel } from '../apis';\nimport SelectMerchantModal from './modals/SelectMerchantModal';\nimport selectors from '../store/selectors';\nimport Loader from './Loader';\nconst cogs = '/settings-2.svg';\nconst internalAdmin = '/Admin-3.svg';\nconst logout = '/log-out.svg';\nconst lightProfile = '/Profile-Simple---White.svg';\nconst profile = '/Profile-Simple.svg';\nconst shLogo = '/Stronghold-Logo-Type-White_1.svg';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { SignoutOptions } from '@okta/okta-auth-js';\nimport { OktaStateProps } from '../config';\n\ninterface StateProps {\n email: string | null;\n showLiveData: boolean;\n showRequestLiveDataMessage: boolean;\n showSwitchedSandboxDataMessage: boolean;\n selectedMerchant: MerchantModel | null;\n merchants: MerchantModel[];\n customCustomerName: string | null;\n manageAccountUri: string;\n postLogoutRedirectUri: string;\n adminUri: string;\n roles: ApplicationRoleModel[] | null;\n isRequesting: boolean;\n switching: boolean;\n}\n\ninterface DispatchProps {\n toggleLiveDataAction: typeof toggleLiveDataAction;\n setSelectedMerchantAction: typeof setSelectedMerchantAction;\n showRequestLiveDataMessageAction: typeof showRequestLiveDataMessageAction;\n showSwitchedSandboxDataMessageAction: typeof showSwitchedSandboxDataMessageAction;\n}\n\ntype OwnProps = RouteComponentProps & {\n fromRestricted?: boolean;\n};\n\ntype Props = StateProps & DispatchProps & OwnProps & OktaStateProps;\n\ntype State = {\n isOpen: boolean;\n showModal: boolean;\n dropdownOpen: boolean;\n};\n\nconst NavMenuWrapped = withOktaAuth(\n class NavMenu extends React.Component {\n constructor(props: Props) {\n super(props);\n }\n\n public state: State = {\n isOpen: false,\n showModal: false,\n dropdownOpen: false,\n };\n\n toggleModal = () => this.setState({ showModal: !this.state.showModal });\n\n onMouseEnter = () => {\n this.setState({ dropdownOpen: true });\n };\n\n onMouseLeave = () => {\n this.setState({ dropdownOpen: false });\n };\n\n onSubmit = async (merchant: MerchantModel) => {\n this.toggleModal();\n try {\n // Switch Stores\n if (merchant) {\n // Ensuring merchant was actually passed in\n this.props.setSelectedMerchantAction(merchant);\n }\n } catch {\n // Error\n }\n };\n\n signOut = async () => {\n const { postLogoutRedirectUri } = this.props;\n const signOutOptions: SignoutOptions = {\n postLogoutRedirectUri: postLogoutRedirectUri,\n };\n await this.props.oktaAuth.signOut(signOutOptions);\n };\n\n renderMerchantSelector = () => {\n const { merchants, selectedMerchant, isRequesting, fromRestricted } = this.props;\n\n if (merchants.length === 0 || (!fromRestricted && !selectedMerchant)) return null;\n\n if (fromRestricted) {\n // Returning altered NavItem for fromRestricted flow\n return (\n (merchants.length >= 1 ? this.toggleModal() : null)}>\n
= 1 && 'hover-pointer'} my-0 py-0`}>\n {'Select Merchant'}\n
\n
\n );\n }\n const currentMerchant = (\n <>\n {isRequesting ? (\n \n ) : (\n <>\n \n {selectedMerchant.display_name}\n \n )}\n \n );\n\n return (\n (merchants.length > 1 && !isRequesting ? this.toggleModal() : null)}>\n
1 && 'hover-pointer'} my-0 py-0`}>{currentMerchant}
\n
\n );\n };\n\n canCreateReports = () => {\n const { selectedMerchant, roles } = this.props;\n if (!selectedMerchant || !roles) {\n return false;\n }\n return selectors.user.canCreateReports(roles);\n };\n\n canCreatePaylinks = () => {\n const { selectedMerchant, roles } = this.props;\n if (!selectedMerchant || !roles) {\n return false;\n }\n return selectors.user.canCreatePayLinkSD(roles, selectedMerchant);\n };\n\n isAdmin = () => {\n const { selectedMerchant, roles } = this.props;\n if (!selectedMerchant || !roles) {\n return false;\n }\n return selectors.user.isAdmin(roles);\n };\n\n isRegularUser = () => {\n const { selectedMerchant, roles } = this.props;\n if (!selectedMerchant || !roles) {\n return;\n }\n return selectors.user.isRegularUser(roles);\n };\n\n toggleRequestLiveModal = () => {\n this.props.showSwitchedSandboxDataMessageAction(false);\n this.props.showRequestLiveDataMessageAction(false);\n };\n\n renderUserProfile = (color?: string) => {\n // todo manage, and change below\n const { authState, manageAccountUri, email, adminUri } = this.props;\n const isInternalUser = email && email.includes('@stronghold.co');\n const isLight = color === 'light';\n const isAuthenticated = authState?.isAuthenticated ?? false;\n\n if (isAuthenticated) {\n return (\n \n \n \n \n \n \n \n Account\n \n {isInternalUser && (\n \n \n Internal Admin\n \n )}\n \n \n Logout\n \n \n \n );\n }\n };\n\n renderNavBar = () => {\n const { authState, merchants, customCustomerName, showLiveData, fromRestricted } = this.props;\n const customCustomerNamePlural = selectors.customizations.pluralize(customCustomerName);\n const isAuthenticated = (authState?.isAuthenticated && !fromRestricted) ?? false;\n\n return (\n <>\n \n\n \n \n );\n };\n\n public render() {\n const { showModal } = this.state;\n const {\n showRequestLiveDataMessage,\n merchants,\n selectedMerchant,\n showSwitchedSandboxDataMessage,\n switching,\n fromRestricted,\n } = this.props;\n\n return (\n
\n \n \n
\n {this.renderMerchantSelector()}\n {(selectedMerchant || fromRestricted) && (\n \n )}\n
\n
\n \n \"loader\"\n \n
\n
\n {this.renderUserProfile('light')} {/*Light*/}\n
\n
\n
\n \n \n \n Stronghold\n \n this.setState({ isOpen: !this.state.isOpen })}\n />\n \n \n \n \n {this.renderNavBar()}\n \n \n \n \n \n {this.renderMerchantSelector()}\n {(selectedMerchant || fromRestricted) && (\n \n )}\n \n {this.renderUserProfile('dark')} {/*Dark*/}{' '}\n {/*todo Nesting this here fires an error notification in console.*/}\n \n {this.renderNavBar()}\n \n \n \n this.toggleRequestLiveModal()}\n />\n
\n );\n }\n },\n);\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n roles: state.authentication.user.roles || null,\n manageAccountUri: getManageActionUri(state.global.configuration.oidc.authority),\n postLogoutRedirectUri: state.global.configuration.oidc.post_logout_redirect_uri,\n email: state.authentication.user.email,\n merchants: state.merchant.arr,\n selectedMerchant: state.merchant.selected,\n showLiveData: state.global.environmentData === 'live',\n showRequestLiveDataMessage: state.global.showRequestLiveDataMessage,\n showSwitchedSandboxDataMessage: state.global.showSwitchedToSandboxMessage,\n customCustomerName: selectors.customizations.getCustomization(state, CustomizationType.CustomerName),\n adminUri: state.global.configuration.admin_uri,\n switching: state.global.switchingContext,\n isRequesting: isActionRequesting(state.global.actions, 'set_merchant'),\n});\n\nfunction getManageActionUri(authority: string): string {\n if (authority.includes('.com')) {\n return `${authority.split('.com')[0]}.com/enduser/settings`;\n }\n return `${authority.split('.co')[0]}.co/enduser/settings`;\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n showRequestLiveDataMessageAction,\n showSwitchedSandboxDataMessageAction,\n setSelectedMerchantAction,\n toggleLiveDataAction,\n },\n dispatch,\n );\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(NavMenuWrapped));\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../store';\nimport { isActionRequesting } from '../store/selectors/global';\nimport { RouteComponentProps } from 'react-router';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { OktaStateProps } from '../config';\n\ninterface StateProps {\n isSandbox: boolean;\n isRequesting: boolean;\n}\n\ntype Props = OktaStateProps & StateProps & RouteComponentProps;\n\ninterface State {\n hasSwitched: boolean;\n}\n\nconst SandboxBannerWrapped = withOktaAuth(\n class SandboxBanner extends React.PureComponent {\n public state: State = {\n hasSwitched: false,\n };\n\n componentDidUpdate(prevProps: Readonly) {\n if (this.props.location === prevProps.location) {\n this.setState({ hasSwitched: true });\n }\n }\n\n public render() {\n const { isSandbox, isRequesting } = this.props;\n const { hasSwitched } = this.state;\n\n const isAuthenticated = this.props.authState?.isAuthenticated ?? false;\n const showBanner = !isRequesting && isSandbox && isAuthenticated;\n if (showBanner) {\n return (\n
\n \n Test data\n
\n \n );\n }\n return null;\n }\n },\n);\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n isSandbox: state.global.environmentData === 'sandbox',\n isRequesting: isActionRequesting(state.global.actions, 'set_data'),\n});\n\nexport default connect(mapStateToProps, {})(SandboxBannerWrapped);\n","import * as React from 'react';\nimport NavMenu from './NavMenu';\nimport Breadcrumb from 'reactstrap/lib/Breadcrumb';\nimport BreadcrumbItem from 'reactstrap/lib/BreadcrumbItem';\nimport { Link } from 'react-router-dom';\nimport SandboxBanner from './SandboxBanner';\n\nexport interface LayoutBreadcrumbItem {\n href: string;\n title: string | JSX.Element;\n isId?: boolean;\n}\n\ninterface Props {\n navbar?: boolean;\n className?: string;\n children: JSX.Element | JSX.Element[];\n breadcrumbItems?: LayoutBreadcrumbItem[];\n isId?: boolean;\n hideSandboxBanner?: boolean;\n fromRestricted?: boolean;\n}\n\nexport function LayoutBreadcrumbs(props: { items?: LayoutBreadcrumbItem[] }) {\n const { items = [] } = props;\n\n if (items.length === 0) return null;\n\n const isLastItem = (index: number) => index + 1 === items.length;\n\n return (\n
\n \n
\n {items.map((value, key) => (\n \n {isLastItem(key) ? (\n value.title\n ) : (\n \n {value.title}\n \n )}\n \n ))}\n
\n
\n
\n );\n}\n\nexport default function Layout(props: Props) {\n const { hideSandboxBanner, children, navbar = true, className = '', breadcrumbItems = [], fromRestricted } = props;\n return (\n <>\n {navbar && }\n {!hideSandboxBanner && }\n \n
{children}
\n \n );\n}\n","import * as React from 'react';\nimport Layout from '../components/Layout';\nimport { Alert } from 'reactstrap';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport LinkContact from '../components/LinkContact';\nimport { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { ApplicationState } from '../store';\n\ninterface StateProps {\n hasMerchants: boolean;\n}\n\ntype Props = StateProps;\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n hasMerchants: state.merchant.arr && state.merchant.arr.length > 0,\n});\n\nclass RestrictedAccess extends React.Component {\n render() {\n const hasMerchants = this.props.hasMerchants ?? false;\n return (\n \n
\n \n

\n No Access\n

\n
\n

\n {hasMerchants\n ? `Your account does not currently have access to this merchant. Click on the Select Merchant text to switch merchants.`\n : `Your account does not currently have access to the dashboard.`}\n

\n

\n Please contact your administrator for assistance, or email us at{' '}\n .\n

\n
\n
\n
\n );\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch) => bindActionCreators({}, dispatch);\n\nexport default connect(mapStateToProps, mapDispatchToProps)(RestrictedAccess);\n","import * as React from 'react';\nimport { PropsWithChildren, ReactNode } from 'react';\nimport { USER_ROLE } from '../../store/types';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { ApplicationRoleModel } from '../../apis';\nimport selectors from '../../store/selectors';\n\ntype OwnProps = PropsWithChildren<{\n role: USER_ROLE;\n unactiveComponent?: ReactNode;\n}>;\n\ninterface StateProps {\n roles: ApplicationRoleModel[] | null;\n}\n\ntype Props = OwnProps & StateProps;\n\nclass ToggleRole extends React.Component {\n render() {\n const { role, roles, unactiveComponent, children } = this.props;\n let hasAccess;\n switch (role as USER_ROLE) {\n case USER_ROLE.MERCHANT_ALLADMIN:\n hasAccess = selectors.user.isAdmin(roles);\n break;\n case USER_ROLE.MERCHANT_ALLUSERS:\n hasAccess = selectors.user.isAdmin(roles) || selectors.user.isRegularUser(roles);\n break;\n }\n if (hasAccess === true) {\n return children;\n }\n\n return unactiveComponent || null;\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n roles: state.authentication.user.roles,\n});\n\nexport default connect(mapStateToProps, {})(ToggleRole);\n","import * as React from 'react';\nimport BarLoader from 'react-spinners/BarLoader';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { OktaStateProps } from '../config';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { loginUser } from '../store/actions';\nimport { ApplicationState } from '../store';\nimport { RouteProps } from 'react-router-dom';\nimport selectors from '../store/selectors';\nconst strongholdLogo = '/Stronghold-Logo-Mark-Blue.png';\n\ninterface StateProps {\n isInitialized: boolean;\n isAuthenticating: boolean;\n}\n\ninterface DispatchProps {\n loginUser: typeof loginUser;\n}\n\ntype OwnProps = RouteProps;\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n isInitialized: state.authentication.isInitialized,\n isAuthenticating: selectors.global.isActionRequesting(state.global.actions, 'login'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n loginUser,\n },\n dispatch,\n );\n\ntype Props = StateProps & DispatchProps & OktaStateProps;\n\nconst AppLoaderWrapped = withOktaAuth(\n class AppLoader extends React.Component {\n async componentDidMount() {\n const { isInitialized, isAuthenticating } = this.props;\n const isAuthenticated = this.props.authState?.isAuthenticated ?? false;\n if (isAuthenticated && !isInitialized && !isAuthenticating) {\n await this.props.loginUser(this.props.oktaAuth, this.props.authState);\n }\n }\n\n render() {\n return (\n
\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n
\n
\n );\n }\n },\n);\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AppLoaderWrapped);\n","import * as React from 'react';\nimport { Link } from 'react-router-dom';\nconst chevronRight = '/Text-Link-Arrow.svg';\nconst chevronRightLight = '/white-arrow.svg';\nconst newImageUrl = '/Rewards-Pattern-small-display.svg';\n\ntype Props = React.PropsWithChildren<{\n size: TileSize;\n bgColor: BgColor;\n link?: string;\n externalLink?: string;\n title: string;\n subTitle?: string;\n newTile?: boolean;\n fullHeight?: boolean;\n disabled?: boolean;\n}>;\n\ntype TileSize = 's' | 'm' | 'l' | 'xl';\ntype BgColor = 'primary' | 'grey-100' | 'grey-150' | 'cyan' | 'teal' | 'sh-blue';\n\nfunction getBgColor(bgColor: BgColor) {\n switch (bgColor) {\n case 'primary':\n return 'bg-primary';\n break;\n case 'grey-100':\n return 'bg-grey-100';\n break;\n case 'grey-150':\n return 'bg-grey-150';\n break;\n case 'cyan':\n return 'bg-secondary-2';\n break;\n case 'teal':\n return 'bg-secondary-1';\n break;\n case 'sh-blue':\n return 'bg-primary-2';\n break;\n default:\n return 'bg-grey';\n }\n}\n\nfunction getHeight(size: TileSize) {\n switch (size) {\n case 's':\n return 'px-2 py-1';\n break;\n case 'm':\n return 'px-2 py-3';\n break;\n case 'l':\n return 'px-4 py-4';\n break;\n case 'xl':\n return 'px-4 py-3 h-100';\n break;\n default:\n return 'p-2';\n }\n}\n\nfunction getTitleSize(size: TileSize) {\n switch (size) {\n case 's':\n return 'p';\n break;\n case 'm':\n return 'h3 mt-3';\n break;\n case 'l':\n return 'h2 mt-3 w-50';\n case 'xl':\n return 'h2 mt-3 w-75';\n break;\n default:\n return 'h-5';\n }\n}\n\nfunction renderLink(bgColor: BgColor, subTitle: string, textColor: string) {\n return (\n
\n
\n \n {subTitle}\n {' '}\n \n {textColor !== 'dark' ? (\n \n ) : (\n \n )}\n \n
\n
\n );\n}\n\nexport default function TileLink(props: Props) {\n const { size, link, subTitle, title, bgColor, newTile, fullHeight, externalLink, children } = props;\n const textColor = bgColor === 'grey-100' || bgColor === 'grey-150' ? 'dark' : 'white';\n return externalLink ? (\n \n
\n {newTile && (\n
\n

\n New\n

\n \n
\n )}\n
\n
{title}
\n
{title}
\n {children}\n {subTitle && (\n <>\n
{renderLink(bgColor, subTitle, textColor)}
\n
\n {renderLink(bgColor, subTitle, textColor)}\n
\n \n )}\n
\n
\n
\n ) : (\n \n
\n {newTile && (\n
\n

\n New\n

\n \n
\n )}\n
\n
{title}
\n
{title}
\n {children}\n {subTitle && (\n <>\n
{renderLink(bgColor, subTitle, textColor)}
\n
\n {renderLink(bgColor, subTitle, textColor)}\n
\n \n )}\n
\n
\n \n );\n}\n","import * as React from 'react';\nimport QRCodeCanvas from 'qrcode.react';\n\ntype Props = {\n url: string | null;\n imgUrl?: string;\n size?: number;\n height?: number;\n width?: number;\n};\n\nconst defaultImgUrl = 'https://tutorials.strongholdpay.com/images/stronghold-icon.png';\n\nexport default class SHQRCode extends React.Component {\n render() {\n const { url, imgUrl = defaultImgUrl, size = 325, height = 48, width = 48 } = this.props;\n\n if (!url) {\n return null;\n }\n\n return (\n <>\n \n \n );\n }\n}\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { OktaStateProps, ROUTE } from '../config';\nimport { ApplicationState } from '../store';\nimport Layout from '../components/Layout';\nimport TileLink from '../components/launchpad/TileLink';\nimport { Button, Row } from 'reactstrap';\nimport { withOktaAuth } from '@okta/okta-react';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport selectors from '../store/selectors';\nimport SHQRCode from '../components/SHQRCode';\nimport Col from 'reactstrap/lib/Col';\n\ninterface StateProps {\n isAuthenticated: boolean;\n // isLoading: boolean;\n // earnedPointsYTD: number;\n portalUrl: string;\n}\n\n// interface DispatchProps {\n// fetchEarnedPointsYTDAction: typeof fetchEarnedPointsYTDAction;\n// }\n\ntype Props = StateProps & OktaStateProps;\n\nconst HomeWrapped = withOktaAuth(\n class Home extends React.Component {\n constructor(props: Props) {\n super(props);\n }\n\n signIn = async () => {\n await this.props.oktaAuth.signInWithRedirect();\n };\n // componentDidMount = async () => {\n // this.props.fetchEarnedPointsYTDAction();\n // };\n\n render() {\n const { portalUrl } = this.props;\n const isAuthenticated = this.props.authState?.isAuthenticated ?? false;\n if (isAuthenticated) {\n return (\n \n

Welcome to the Stronghold merchant dashboard

\n \n \n
\n \n
\n
\n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n \n \n \n
\n \n Get all the benefits of digital payments with Stronghold for customers\n shopping in your store.\n
\n
\n Avoid the pitfalls of cash and unreliable card solutions.\n
\n
\n
\n \n
\n
\n
\n \n \n
\n {/**/}\n {/**/}\n
\n \n
\n\n {/**/}\n {/**/}\n {/* */}\n {/*
*/}\n {/* */}\n {/* {this.props.earnedPointsYTD !== -1*/}\n {/* ? 'You have a total of ' +*/}\n {/* selectors.format.formatNumberNoDecimal(this.props.earnedPointsYTD) +*/}\n {/* ' points!'*/}\n {/* : 'Sign up for our rewards program to start earning points per transaction!'}*/}\n {/* */}\n {/*
*/}\n {/* */}\n {/**/}\n {/*
*/}\n
\n );\n }\n\n return (\n \n
\n
\n
\n

Merchant Dashboard

\n
Please login to continue.
\n \n
\n
\n
\n
\n );\n }\n },\n);\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n isAuthenticated: state.authentication.isInitialized,\n // isLoading: selectors.global.isActionRequesting(state.global.actions, 'fetch_earned_points_ytd'),\n // earnedPointsYTD: state.rewards.earnedPointsYTD,\n portalUrl: selectors.merchant.getPortalUrl(state),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n // fetchEarnedPointsYTDAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(HomeWrapped);\n","import * as React from 'react';\nimport { Redirect, RouteProps, Route } from 'react-router-dom';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../store';\nimport { loginUser } from '../store/actions';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { OktaStateProps, ROUTE } from '../config';\nimport { SPLIT_FLAG, USER_ROLE } from '../store/types';\nimport selectors from '../store/selectors';\nimport ToggleSplit from './split/ToggleSplit';\nimport { MerchantModel } from '../apis';\nimport { withOktaAuth } from '@okta/okta-react';\nimport RestrictedAccess from './RestrictedAccess';\nimport ToggleRole from './roles/ToggleRole';\nimport AppLoader from './AppLoader';\nimport HomeWrapped from '../pages/Home';\n\ninterface StateProps {\n isInitialized: boolean;\n isAuthenticating: boolean;\n hasMerchants: boolean;\n merchant: MerchantModel | null;\n isReady: boolean;\n}\n\ninterface DispatchProps {\n loginUser: typeof loginUser;\n}\n\ntype OwnProps = RouteProps & {\n loginIfNotAuthenticated?: boolean;\n featureFlag?: SPLIT_FLAG;\n userRole?: USER_ROLE;\n};\n\ntype Props = StateProps & DispatchProps & OwnProps & OktaStateProps;\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n hasMerchants: state.merchant.arr && state.merchant.arr.length > 0,\n merchant: state.merchant.selected,\n isAuthenticating: selectors.global.isActionRequesting(state.global.actions, 'login'),\n isInitialized: state.authentication.isInitialized,\n isReady: state.authentication.isReady,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n loginUser,\n },\n dispatch,\n );\n\nconst AuthorizeRouteWrapped = withOktaAuth(\n class AuthorizeRoute extends React.Component {\n static defaultProps: OwnProps = {\n loginIfNotAuthenticated: true,\n };\n\n signIn = async () => {\n await this.props.oktaAuth.signInWithRedirect();\n };\n\n render() {\n const {\n loginIfNotAuthenticated,\n featureFlag,\n isAuthenticating,\n // hasMerchants,\n merchant,\n userRole,\n isInitialized,\n isReady,\n } = this.props;\n\n const isAuthenticated = this.props.authState?.isAuthenticated ?? false;\n\n if (!isAuthenticated && !isAuthenticating) {\n return ;\n }\n\n if (isAuthenticating || (isAuthenticated && !isInitialized)) {\n return ;\n }\n\n if (!merchant && isAuthenticated && !loginIfNotAuthenticated) {\n return ;\n }\n\n const redirectUrl = ROUTE.HOME;\n if (isReady && !isAuthenticated && loginIfNotAuthenticated) {\n return ;\n }\n\n if (isReady) {\n if (featureFlag) {\n return (\n }>\n \n \n );\n }\n\n if (userRole) {\n return (\n }>\n \n \n );\n }\n }\n\n return ;\n }\n },\n);\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AuthorizeRouteWrapped);\n","import * as React from 'react';\nimport { Button } from 'reactstrap';\n\ntype Props = React.PropsWithChildren<{\n show: boolean;\n onShow: () => void;\n}>;\n\nexport default class Hidden extends React.Component {\n render() {\n const { children, show } = this.props;\n\n if (show) {\n return children;\n }\n\n return (\n
\n \n \n
\n
{children}
\n \n );\n }\n}\n","import * as React from 'react';\n\nexport interface Props {\n isLoading: boolean;\n width?: string;\n margin?: string;\n children?: React.ReactNode;\n}\n\nexport default class PlaceholderLoader extends React.Component {\n render() {\n const { isLoading, children, width, margin } = this.props;\n\n if (!isLoading) {\n return children || null;\n }\n\n return (\n \n -\n \n );\n }\n}\n","import * as React from 'react';\nimport PlaceholderLoader from './PlaceholderLoader';\n\nexport type Props = React.PropsWithChildren<{\n isLoading: boolean;\n rows: number;\n columns: number;\n loaderWidth?: string;\n}>;\n\nexport default function TableBody(props: Props) {\n if (!props.isLoading) {\n return {props.children};\n }\n\n const rows: JSX.Element[] = [];\n\n for (let row = 0; row < props.rows; row++) {\n const columns: JSX.Element[] = [];\n for (let col = 0; col < props.columns; col++) {\n columns.push(\n \n \n ,\n );\n }\n rows.push({columns});\n }\n\n return {rows};\n}\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../store';\nimport { CardBody, Table } from 'reactstrap';\nimport { ApiKeyModel } from '../apis';\nimport Hidden from '../components/Hidden';\nimport Layout from '../components/Layout';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faMinusCircle, faCheckCircle } from '@fortawesome/free-solid-svg-icons';\nimport selectors from '../store/selectors';\nimport LinkContact from '../components/LinkContact';\nimport TableBody from '../components/TableBody';\nconst chevronRight = '/Text-Link-Arrow.svg';\n\ninterface StateProps {\n sandboxKeys: ApiKeyModel[];\n liveKeys: ApiKeyModel[];\n showLiveData: boolean;\n isRequesting: boolean;\n timezone: string | null;\n}\n\ninterface State {\n showSecretKey: boolean;\n}\n\ntype Props = StateProps;\n\nclass Developers extends React.Component {\n state: State = {\n showSecretKey: false,\n };\n\n componentDidUpdate(prevProps: Readonly): void {\n if (prevProps.showLiveData !== this.props.showLiveData) {\n this.setState({ showSecretKey: false });\n }\n }\n\n renderKey = (apiKey: ApiKeyModel) => {\n const keyValue = apiKey.key;\n\n const key =
{keyValue}
;\n\n return (\n this.setState({ showSecretKey: true })}\n >\n {key}\n \n );\n };\n\n renderTable = () => {\n const { isRequesting, showLiveData } = this.props;\n const sandboxKeys = this.props.sandboxKeys;\n const liveKeys = this.props.liveKeys;\n const keys = showLiveData ? liveKeys : sandboxKeys;\n let tableBody = <>;\n let noKeysText = <>;\n\n // If keys are requesting\n if (isRequesting) {\n // We show the loading table\n tableBody = ;\n }\n // If no keys present\n else if (keys.length === 0) {\n // We show a description why\n noKeysText = (\n \n {showLiveData ? (\n <>\n Please contact to request live environment access and to\n generate live API keys.\n \n ) : (\n <>\n Please contact in order to enrol as a developer.\n \n )}\n \n );\n }\n // If there are keys, we show them\n else {\n tableBody = (\n \n {keys.map((el, key) => (\n \n {this.renderKey(el)}\n \n \n \n \n {selectors.format.formatDate(el.last_used_at, this.props.timezone) || '—'}\n \n \n {selectors.format.formatDate(el.created_at, this.props.timezone) || '—'}\n \n \n ))}\n \n );\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n {tableBody}\n
KeyPublishableLast usedCreated At
\n {noKeysText}\n \n );\n };\n\n render() {\n return (\n \n
\n

Developers

\n
\n
\n

API

\n
\n \n Learn more about our API \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
VersionLast usedLast 7 DaysUsage
2020-03-12———
\n
\n
\n
\n
\n
\n

Keys

\n
{this.props.showLiveData ? 'Live' : 'Sandbox'}
\n
\n
\n {this.renderTable()}\n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n sandboxKeys: state.global.environments.sandbox_keys,\n liveKeys: state.global.environments.live_keys,\n showLiveData: state.global.environmentData === 'live',\n isRequesting: selectors.global.isActionRequesting(state.global.actions, 'login'),\n timezone: state.merchant.selected?.timezone || null,\n});\n\n// tslint:disable-next-line:variable-name\nexport default connect(mapStateToProps)(Developers);\n","import * as React from 'react';\nimport Paginator, { PaginationInformation } from 'paginator';\nimport PaginationBS from 'reactstrap/lib/Pagination';\nimport PaginationItem from 'reactstrap/lib/PaginationItem';\nimport PaginationLink from 'reactstrap/lib/PaginationLink';\n\nexport interface Props {\n total: number;\n skipped: number;\n limit: number;\n length?: number;\n onClick: (skip: number) => void;\n disabled?: boolean;\n}\n\nconst bigStep = 10;\n\nexport function getPaginationInfo(total: number, limit: number, length: number, currentPage: number) {\n const paginator = new Paginator(limit, length);\n return paginator.build(total, currentPage);\n}\n\nexport const getCurrentPage = (skipped: number, limit: number) => Math.floor(skipped / limit) + 1;\nexport const getPageSkip = (page: number, limit: number) => (page - 1) * limit;\nexport const getPreviousBigStep = (paginationInfo: PaginationInformation, limit: number) => {\n const page = paginationInfo.current_page - bigStep;\n const has = page > 1;\n const hasPagesLeft = paginationInfo.first_page > 2;\n const skip = getPageSkip(page, limit);\n return { page, has, hasPagesLeft, skip };\n};\nexport const getNextBigStep = (paginationInfo: PaginationInformation, limit: number) => {\n const page = paginationInfo.current_page + bigStep;\n const has = page < paginationInfo.total_pages;\n const hasPagesLeft = paginationInfo.last_page < paginationInfo.total_pages - 1;\n const skip = getPageSkip(page, limit);\n return { page, has, hasPagesLeft, skip };\n};\n\nexport default function Pagination(props: Props) {\n const { limit, length = 7, skipped, total, onClick, disabled = false } = props;\n\n if (total === 0) {\n return null;\n }\n\n const currentPage = getCurrentPage(skipped, limit);\n const paginationInfo = getPaginationInfo(total, limit, length, currentPage);\n\n const firstPageSkip = 0;\n const lastPageSkip = getPageSkip(paginationInfo.total_pages, limit);\n\n const previousBigStep = getPreviousBigStep(paginationInfo, limit);\n const nextBigStep = getNextBigStep(paginationInfo, limit);\n\n const pages: JSX.Element[] = [];\n for (let i = paginationInfo.first_page; i < paginationInfo.last_page + 1; i++) {\n pages.push(\n \n onClick(getPageSkip(i, limit)) : undefined}\n >\n {i}\n \n ,\n );\n }\n\n return (\n \n {paginationInfo.first_page > 1 ? (\n \n onClick(firstPageSkip)}>1\n \n ) : null}\n {previousBigStep.has ? (\n \n onClick(previousBigStep.skip)} />\n \n ) : null}\n {!previousBigStep.has && previousBigStep.hasPagesLeft ? (\n \n ...\n \n ) : null}\n {pages}\n {!nextBigStep.has && nextBigStep.hasPagesLeft ? (\n \n ...\n \n ) : null}\n {nextBigStep.has ? (\n \n onClick(nextBigStep.skip)} />\n \n ) : null}\n {paginationInfo.last_page < paginationInfo.total_pages ? (\n \n onClick(lastPageSkip)}>{paginationInfo.total_pages}\n \n ) : null}\n \n );\n}\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchSettlementsAction } from '../../store/actions';\nimport { ApplicationState } from '../../store';\nimport { SettlementModel } from '../../apis';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport Table from 'reactstrap/lib/Table';\nimport selectors from '../../store/selectors';\nimport Pagination from '../../components/Pagination';\nimport TableBody from '../TableBody';\nimport Alert from 'reactstrap/lib/Alert';\nconst chevronRight = '/Text-Link-Arrow.svg';\n\ninterface StateProps {\n settlements: SettlementModel[];\n settlementsTotal: number;\n settlementsSkipped: number;\n settlementsLimit: number;\n isRequesting: boolean;\n timezone: string | null;\n}\n\ninterface OwnerProps {\n settlementId?: string;\n isLoading?: boolean;\n onRowClick: (settlement: SettlementModel) => void;\n onGoTo: (page: number, skip: number) => void;\n noRowsComponent?: () => React.ReactNode;\n}\n\ninterface DispatchProps {\n fetchSettlementsAction: typeof fetchSettlementsAction;\n}\n\ntype Props = StateProps & OwnerProps & DispatchProps;\n\nclass SettlementsTable extends React.Component {\n hasNoRows = () => this.props.settlements.length === 0 && !this.props.isRequesting;\n renderNoRows = () => {\n if (!this.hasNoRows()) return null;\n return (\n \n {this.props.noRowsComponent ? this.props.noRowsComponent() : 'There are no settlements to display'}\n \n );\n };\n\n render() {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n {this.props.settlements.map((settlement, index) => (\n this.props.onRowClick(settlement)} key={index}>\n \n \n \n \n \n \n \n ))}\n \n
DateGross AmountNet AmountFeeDescription
{selectors.format.formatDate(settlement.date, this.props.timezone)}{selectors.format.formatAmount(settlement.gross_amount)}{selectors.format.formatAmount(settlement.net_amount)}{selectors.format.formatAmount(settlement.fee)}{settlement.description}\n View\n \n \n \n
\n {this.renderNoRows()}\n this.props.onGoTo(skip / this.props.settlementsLimit + 1, skip)}\n disabled={this.props.isRequesting}\n />\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (\n state,\n { isLoading = false },\n) => ({\n settlements: state.settlement.list.items,\n settlementsSkipped: state.settlement.list.skipped,\n settlementsTotal: state.settlement.list.total,\n settlementsLimit: state.settlement.list.limit,\n isRequesting: isActionRequesting(state.global.actions, 'fetch_settlements') || isLoading,\n timezone: state.merchant.selected?.timezone || null,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchSettlementsAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(SettlementsTable);\n","import * as React from 'react';\nimport ReactDatePicker, { ReactDatePickerProps } from 'react-datepicker';\nimport { Input, InputGroup, InputGroupAddon, InputGroupText } from 'reactstrap';\n\nexport interface Props extends ReactDatePickerProps {\n label: string | JSX.Element;\n}\n\n// Need to be in a proper class, it throw a ref exception if not\nclass CustomInput extends React.Component<{\n label: string | JSX.Element;\n}> {\n render() {\n const { label, ...props } = this.props;\n return (\n \n \n \n {label}\n \n \n );\n }\n}\n\nexport default class DatePicker extends React.Component {\n render() {\n const { onChange, selected, label, ...p } = this.props;\n\n return (\n onChange(date, e)}\n showYearDropdown\n scrollableYearDropdown\n yearDropdownItemNumber={5}\n customInput={}\n wrapperClassName=\"w-100\"\n {...p}\n />\n );\n }\n}\n","import * as React from 'react';\nimport { Button, ButtonGroup, Col, Input, InputGroup, InputGroupAddon, InputGroupText, Row } from 'reactstrap';\nimport Select, { OptionTypeBase } from 'react-select';\nimport DatePicker from './DatePicker';\nimport { CHARGE_STATUS } from '../apis';\nimport { map, xor } from 'lodash';\nimport selectors from '../store/selectors';\nimport { DateTime } from 'luxon';\nconst searchIcon = '/Search-Icon.svg';\nconst calendarIcon = '/Calander---Grey.svg';\n\nexport interface DatePickerPlaceholders {\n from: string;\n to: string;\n}\n\nexport interface Props {\n from?: DateTime;\n to?: DateTime;\n paymentSourceId?: string;\n onPaymentSourceChange?: (search: string) => void;\n chargeStatuses?: CHARGE_STATUS[];\n onDateFromChange: (date: DateTime | null) => void;\n onDateToChange: (date: DateTime | null) => void;\n onChargeStatusChange?: (statuses: CHARGE_STATUS[]) => void;\n datePickerPlaceholders?: DatePickerPlaceholders;\n}\n\ninterface StatusOptionType extends OptionTypeBase {\n value: CHARGE_STATUS;\n label: string;\n}\n\nconst fromChargeStatusToOption = (status: CHARGE_STATUS): StatusOptionType => ({\n label: selectors.charge.formatStatus(status),\n value: status,\n});\n\nconst defaultDatePickerPlaceholders: DatePickerPlaceholders = {\n from: 'FROM - Select from date',\n to: 'TO - Select to date',\n};\n\nexport default class ListFilters extends React.Component {\n notCaptured = (): CHARGE_STATUS[] => [\n CHARGE_STATUS.AUTHORIZED,\n CHARGE_STATUS.ATTEMPTING_COLLECTION,\n CHARGE_STATUS.STOPPED_COLLECTION,\n CHARGE_STATUS.CANCELED,\n CHARGE_STATUS.CAPTURE_FAILED,\n CHARGE_STATUS.CREATED,\n CHARGE_STATUS.DISPUTED,\n CHARGE_STATUS.REFUND_PENDING,\n CHARGE_STATUS.REFUNDED,\n ];\n\n onStatusChange = (statuses: CHARGE_STATUS[]) => {\n if (this.props.onChargeStatusChange) {\n this.props.onChargeStatusChange(statuses);\n }\n };\n\n onPaymentSourceChange = (search: string) => {\n if (this.props.onPaymentSourceChange) {\n this.props.onPaymentSourceChange(search);\n }\n };\n\n render() {\n const { from, to, paymentSourceId, chargeStatuses } = this.props;\n const dateIcon = ;\n const noChargeCaptured = xor(chargeStatuses, [CHARGE_STATUS.CAPTURED]).length === 0;\n const captured = xor(chargeStatuses, this.notCaptured()).length === 0;\n const noStatus = chargeStatuses && chargeStatuses.length === 0;\n const datePickerPlaceholders = this.props.datePickerPlaceholders || defaultDatePickerPlaceholders;\n\n return (\n <>\n \n \n this.props.onDateFromChange(date ? DateTime.fromJSDate(date) : null)}\n maxDate={to?.toJSDate() || DateTime.now().toJSDate()}\n label={dateIcon}\n placeholderText={datePickerPlaceholders.from}\n className=\"form-control-lg\"\n />\n \n \n this.props.onDateToChange(date ? DateTime.fromJSDate(date) : null)}\n minDate={from?.toJSDate()}\n maxDate={DateTime.now().toJSDate()}\n label={dateIcon}\n placeholderText={datePickerPlaceholders.to}\n className=\"form-control-lg\"\n />\n \n {this.props.onChargeStatusChange && this.props.chargeStatuses && (\n <>\n \n \n this.onStatusChange([CHARGE_STATUS.CAPTURED])}\n className={`${!captured ? 'btn-dark' : 'btn-gray-150'}`}\n size=\"lg\"\n >\n Captured\n \n this.onStatusChange(this.notCaptured())}\n className={`${!noChargeCaptured ? 'btn-dark' : 'btn-gray-150'}`}\n size=\"lg\"\n >\n Uncaptured\n \n this.onStatusChange([])}\n className={`${noStatus ? 'btn-dark' : 'btn-gray-150'}`}\n size=\"lg\"\n >\n All\n \n \n \n \n \n fromChargeStatusToOption(value),\n )}\n value={this.props.chargeStatuses.map(fromChargeStatusToOption)}\n isMulti={true}\n components={{ IndicatorSeparator: () => null }}\n className=\"react-select-custom\"\n onChange={(data) =>\n this.onStatusChange(map(data as StatusOptionType[], (el) => el.value))\n }\n />\n \n \n \n )}\n \n {this.props.onPaymentSourceChange && this.props.paymentSourceId && (\n \n \n \n \n \n \n \n \n this.onPaymentSourceChange(e.target.value)}\n placeholder={'Search by Payment Source ID'}\n bsSize=\"lg\"\n />\n \n \n \n )}\n \n );\n }\n}\n","import * as React from 'react';\nimport { history } from '../index';\nimport Layout from '../components/Layout';\nimport { RouteComponentProps } from 'react-router';\nimport { SettlementModel } from '../apis';\nimport SettlementsTable from '../components/settlement/SettlementsTable';\nimport selectors from '../store/selectors';\nimport ListFilters from '../components/ListFilters';\nimport { fetchSettlementsAction, FetchSettlementsActionOptions } from '../store/actions';\nimport { debounce } from 'lodash';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { connect } from 'react-redux';\nimport querystring from 'querystring';\nimport { DateTime } from 'luxon';\n\ninterface StateProps {\n settlements: SettlementModel[];\n}\n\ninterface DispatchProps {\n fetchSettlementsAction: typeof fetchSettlementsAction;\n}\n\ntype OwnProps = RouteComponentProps<{\n settlementId: string;\n}>;\n\ntype Props = StateProps & OwnProps & DispatchProps;\n\ninterface State {\n from?: DateTime;\n to?: DateTime;\n}\n\nclass Settlements extends React.Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n from: undefined,\n to: undefined,\n };\n }\n\n componentDidMount = async () => {\n const search = querystring.parse(this.props.history.location.search.replace('?', ''));\n\n if (search.from) {\n await this.setState({\n from: DateTime.fromISO(search.from as string),\n });\n }\n if (search.to) {\n await this.setState({\n to: DateTime.fromISO(search.to as string),\n });\n }\n\n this.fetchSettlements();\n };\n\n updateUrl = () => {\n const { from, to } = this.state;\n\n const query = querystring.stringify({\n from: from ? selectors.format.formatDateIso(from) : undefined,\n to: to ? selectors.format.formatDateIso(to) : undefined,\n });\n\n if (from || to) {\n this.props.history.push({\n pathname: this.props.history.location.pathname,\n search: `?${query}`,\n });\n }\n };\n\n fetchSettlements = (skip?: number) => {\n const { from, to } = this.state;\n this.updateUrl();\n\n let options: FetchSettlementsActionOptions = {\n skip,\n };\n\n options = {\n ...options,\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n };\n\n this.props.fetchSettlementsAction(options);\n };\n\n onRowClicked = (data: SettlementModel) => {\n history.push(selectors.global.settlementRoute(data.id));\n };\n\n handleDateFromChange = async (date: DateTime | null) => {\n await this.setState({ from: date || undefined });\n this.fetchSettlementsDebounced();\n };\n\n handleDateToChange = (date: DateTime | null) => {\n this.setState({ to: date || undefined });\n this.fetchSettlementsDebounced();\n };\n\n fetchSettlementsDebounced = debounce(this.fetchSettlements, 500);\n\n renderAdvancedSearch = () => {\n return (\n \n );\n };\n\n render() {\n return (\n \n
\n

Settlements

\n
\n
Pick a date range to filter settlements
\n {this.renderAdvancedSearch()}\n
\n this.fetchSettlements(skip)}\n />\n
\n
\n );\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchSettlementsAction,\n },\n dispatch,\n );\n\nexport default connect(null, mapDispatchToProps)(Settlements);\n","import * as React from 'react';\nimport { PAY_LINK_STATUS } from '../../apis';\n\nexport interface Props {\n status: PAY_LINK_STATUS;\n size: 'sm' | 'lg';\n}\n\nexport default function PayLinkStatusBadge(props: Props) {\n const classes = ['text-capitalize', 'id-badge', 'py-1', 'text-dark'];\n if (props.size === 'sm') {\n classes.push('text-small');\n }\n let formattedStatus;\n formattedStatus = props.status;\n if (props.status === PAY_LINK_STATUS.USED) {\n formattedStatus = 'paid';\n }\n\n return {formattedStatus.replace('_', ' ')};\n}\n","import * as React from 'react';\nimport { Modal, ModalBody, Row } from 'reactstrap';\nimport SHQRCode from '../SHQRCode';\n\ntype Props = {\n showModal: boolean;\n toggle: () => void;\n url: string | null;\n};\n\nexport default class PaylinkQRModal extends React.Component {\n renderSuccess = () => {\n const { url } = this.props;\n return (\n <>\n {url && (\n <>\n \n \n \n \n
\n Link: {url}\n
\n
\n \n )}\n \n );\n };\n\n render() {\n const { showModal, url } = this.props;\n\n if (!url) {\n return null;\n }\n\n return (\n \n \n
{this.renderSuccess()}
\n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { Tooltip as BSTooltip } from 'reactstrap';\nimport { useState } from 'react';\nimport { uniqueId } from 'lodash';\nimport { Placement } from 'popper.js';\n\nexport type Props = React.PropsWithChildren<{\n className?: string;\n tooltip: string | JSX.Element;\n placement?: Placement;\n}>;\n\nexport default function Tooltip(props: Props) {\n const { className, children, tooltip, placement = 'top' } = props;\n\n const [tooltipOpen, setTooltipOpen] = useState(false);\n const [id] = useState(`tooltip-id-${uniqueId()}`);\n const toggle = () => setTooltipOpen(!tooltipOpen);\n\n return (\n <>\n
\n {children}\n
\n \n {tooltip}\n \n \n );\n}\n","import * as React from 'react';\nimport { Button, Modal, ModalHeader, ModalBody, Row, Col, ModalFooter } from 'reactstrap';\nimport { CreateCustomerRequest, CustomerModel, ResponseError } from '../../apis';\nimport { patchCustomersAction, resetActionStatusAction } from '../../store/actions';\nimport selectors from '../../store/selectors';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport InputMask from 'react-input-mask';\nimport Input from 'reactstrap/lib/Input';\nimport Loader from '../Loader';\n\ninterface OwnProps {\n customer: CustomerModel | null;\n showModal: boolean;\n toggle: () => void;\n isLoading: boolean;\n showMobileOnly?: boolean;\n showEmailOnly?: boolean;\n callback?: () => void;\n setCustomer?: (customer: CustomerModel) => void;\n}\n\ninterface DispatchProps {\n patchCustomersAction: typeof patchCustomersAction;\n resetActionStatusAction: typeof resetActionStatusAction;\n}\n\ninterface StateProps {\n isLoading: boolean;\n errorMessage: ResponseError | null;\n}\n\ntype Props = OwnProps & DispatchProps & StateProps;\n\ninterface State {\n first_name: string;\n last_name: string;\n date_of_birth?: string;\n email: string;\n mobile: string;\n}\n\ntype Field = 'first_name' | 'last_name' | 'email' | 'mobile' | 'date_of_birth';\n\nclass CustomersProfileEditModal extends React.Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n first_name: '',\n last_name: '',\n email: '',\n mobile: '',\n date_of_birth: '',\n };\n }\n\n componentDidMount = async () => {\n const { customer } = this.props;\n await this.props.resetActionStatusAction('update_customer');\n if (customer) {\n this.setState({\n first_name: customer.individual.first_name,\n last_name: customer.individual.last_name,\n });\n\n if (customer.individual.date_of_birth) {\n this.setState({ date_of_birth: customer.individual.date_of_birth });\n }\n\n if (customer.individual.email) {\n this.setState({ email: customer.individual.email });\n }\n\n if (customer.individual.mobile) {\n this.setState({ mobile: selectors.format.formatMobilePhoneNumberReadable(customer.individual.mobile) });\n }\n }\n };\n\n handleChange = (value: string, label: Field) => {\n this.setState({ [label]: value } as Pick);\n };\n\n onSubmit = async () => {\n const { mobile, first_name, last_name, email, date_of_birth } = this.state;\n const { customer } = this.props;\n await this.props.resetActionStatusAction('update_customer');\n if (customer) {\n const formData: CreateCustomerRequest = {\n state: customer.state,\n country: customer.country,\n external_id: customer.external_id,\n individual: {\n first_name,\n last_name,\n },\n };\n\n if (date_of_birth) {\n formData.individual.date_of_birth = date_of_birth;\n }\n\n if (email) {\n formData.individual.email = email;\n }\n\n if (mobile) {\n formData.individual.mobile = selectors.format.formatMobile(mobile);\n }\n\n try {\n await this.props.patchCustomersAction(customer.id, formData);\n if (!this.props.errorMessage) {\n this.props.toggle();\n if (this.props.callback) {\n this.props.callback();\n }\n if (this.props.setCustomer) {\n const updatedCustomer = {\n ...customer,\n };\n if (email) {\n updatedCustomer.individual.email = email;\n }\n\n if (mobile) {\n updatedCustomer.individual.mobile = selectors.format.formatMobile(mobile);\n }\n this.props.setCustomer(updatedCustomer);\n }\n }\n } catch {\n // handle silently\n }\n }\n };\n\n render() {\n const { showModal, isLoading, errorMessage, customer, showMobileOnly, showEmailOnly } = this.props;\n const { email, mobile, last_name, first_name, date_of_birth } = this.state;\n const disabled = (!mobile && !email) || !first_name || !last_name;\n const editForm = (\n \n \n this.onSubmit()}\n color=\"primary\"\n className=\"w-100\"\n data-sh=\"customer-profile-edit-confirm\"\n disabled={disabled}\n >\n
{isLoading ? : `Update`}
\n \n \n \n \n
{`Cancel`}
\n \n \n
\n );\n let headerTitle = 'Edit customer details';\n if (this.props.showEmailOnly) {\n headerTitle = 'Add customer email';\n }\n if (this.props.showMobileOnly) {\n headerTitle = 'Add mobile email';\n }\n\n return (\n \n {headerTitle}\n \n
\n {!showMobileOnly && !showEmailOnly && (\n <>\n \n \n
\n
First Name
\n
*
\n
\n \n \n this.handleChange(e.target.value, 'first_name')}\n data-sh=\"new-customer-first-name-input\"\n />\n {errorMessage && errorMessage.property === 'individual.first_name' && (\n <>\n
{errorMessage.message}
\n \n )}\n \n
\n\n \n \n
\n
Last Name
\n
*
\n
\n \n \n this.handleChange(e.target.value, 'last_name')}\n data-sh=\"new-customer-last-name-input\"\n />\n {errorMessage && errorMessage.property === 'individual.last_name' && (\n <>\n
{errorMessage.message}
\n \n )}\n \n
\n\n \n \n
\n
DOB
{' '}\n
\n \n \n this.handleChange(e.target.value, 'date_of_birth')}\n data-sh=\"new-customer-dob-input\"\n placeholder=\"yyyy-mm-dd\"\n className={`form-control ${\n errorMessage && errorMessage.property === 'individual.date_of_birth'\n ? 'is-invalid'\n : ''\n }`}\n mask=\"9999-99-99\"\n />\n {errorMessage && errorMessage.property === 'individual.date_of_birth' && (\n <>\n
{errorMessage.message}
\n \n )}\n \n
\n \n )}\n {customer && !showMobileOnly && (\n \n \n
\n
Email
\n
\n \n \n this.handleChange(e.target.value, 'email')}\n data-sh=\"new-customer-email-input\"\n />\n {errorMessage && errorMessage.property === 'individual.email' && (\n <>\n
{errorMessage.message}
\n \n )}\n \n
\n )}\n {customer && !showEmailOnly && (\n \n \n
\n
Mobile
\n
\n \n \n this.handleChange(e.target.value, 'mobile')}\n data-sh=\"new-customer-mobile-input\"\n />\n {errorMessage && errorMessage.property === 'individual.mobile' && (\n <>\n
{errorMessage.message}
\n \n )}\n \n
\n )}\n
\n
\n {editForm}\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n isLoading: selectors.global.isActionRequesting(state.global.actions, 'update_customer'),\n errorMessage: selectors.global.getResponseError(state.global.actions, 'update_customer'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n patchCustomersAction,\n resetActionStatusAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CustomersProfileEditModal);\n","import * as React from 'react';\nimport { CustomerModel } from '../../apis';\nimport PlaceholderLoader from '../PlaceholderLoader';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faUserSlash } from '@fortawesome/free-solid-svg-icons';\nimport { Link } from 'react-router-dom';\nimport selectors from '../../store/selectors';\nimport Tooltip from '../Tooltip';\nimport CustomersProfileEditModal from '../modals/CustomersProfileEditModal';\nimport Table from 'reactstrap/lib/Table';\nconst pencilIcon = '/edit.svg';\nconst chevronRight = '/Text-Link-Arrow.svg';\nexport type LinkType = 'qr' | 'sms' | 'email' | 'edit';\n\ninterface OwnProps {\n customer: CustomerModel | null;\n customCustomerName: string | null;\n canEditDetails?: boolean;\n customerDetailsPage?: boolean;\n timezone: string | null;\n}\n\ninterface State {\n customer: CustomerModel | null;\n showEditForm: boolean;\n successScreenType: LinkType;\n dob: string;\n}\n\ntype Props = OwnProps;\n\nexport default class CustomerDetails extends React.Component {\n toggleEditForm = () => this.setState({ showEditForm: !this.state.showEditForm });\n state: State = {\n customer: null,\n showEditForm: false,\n successScreenType: 'edit',\n dob: '',\n };\n\n deliveryBlocked = (dateString: string | null): boolean => {\n if (!dateString) {\n return false;\n }\n\n const expiration = new Date(dateString);\n const timeNow = new Date();\n\n return timeNow < expiration;\n };\n\n render() {\n const { customer, customCustomerName, canEditDetails, customerDetailsPage, timezone } = this.props;\n const { showEditForm } = this.state;\n const isLoading = !customer;\n\n const emailBlocked = this.deliveryBlocked(customer && customer.email_block_expires_at);\n const smsBlocked = this.deliveryBlocked(customer && customer.sms_block_expires_at);\n\n return (\n
\n {customerDetailsPage && (\n
\n \n

\n {customer && `${customer.individual.first_name} ${customer.individual.last_name}`}\n

\n
\n {customer && customer.external_id ? (\n
\n \n
{customer.external_id}
\n
\n
\n ) : null}\n
\n )}\n\n
\n {customer && customer.is_blocked && (\n \n \n \n )}\n {!canEditDetails ? (\n \n

\n {customCustomerName} details\n

\n \n ) : (\n

\n {customCustomerName} details\n

\n )}\n\n {canEditDetails && !isLoading && (\n \n this.toggleEditForm()}\n data-sh=\"customer-profile-edit\"\n className=\"edit-circle-link ml-2\"\n >\n {'Edit'}\n
\n \n )}\n
{customer && customer.is_blocked && [BLOCKED]}
\n
\n\n
\n
\n \n \n \n \n \n {emailBlocked && (\n \n \n \n )}\n \n {smsBlocked && (\n \n \n \n )}\n \n \n \n \n \n \n {emailBlocked && (\n \n )}\n \n {smsBlocked && (\n \n )}\n \n \n
NameEmail\n Email Blocked Until\n Mobile\n Mobile Blocked Until\n
\n \n {customer &&\n `${customer.individual.first_name} ${customer.individual.last_name}`}\n \n \n \n {customer && customer.individual.email}{' '}\n \n \n \n {customer?.email_block_expires_at &&\n selectors.format.formatDateTimeSecondsWithYear(\n customer?.email_block_expires_at,\n timezone,\n )}\n \n \n \n {customer && customer.individual.mobile ? customer.individual.mobile : '—'}\n \n \n \n {customer?.sms_block_expires_at &&\n selectors.format.formatDateTimeSecondsWithYear(\n customer?.sms_block_expires_at,\n timezone,\n )}\n \n
\n
\n\n \n \n {customer && customer.id}\n \n \n\n {customerDetailsPage && (\n
\n
\n
Need help with this customer?
\n \n Contact support\n \n \n \n \n
\n
\n )}\n
\n\n {customer && (\n \n )}\n \n );\n }\n}\n","import * as React from 'react';\nimport { Table } from 'reactstrap';\nimport { PayLinkDocumentModel } from '../../apis';\nimport TableBody from '../TableBody';\nimport selectors from '../../store/selectors';\n\ninterface Props {\n documents: PayLinkDocumentModel[] | undefined;\n}\n\nexport default function PayLinkDocuments(props: Props) {\n const { documents } = props;\n const isLoading = !documents;\n\n if (!documents || documents.length === 0) {\n return null;\n }\n\n return (\n
\n
\n

Documents

\n
\n
\n \n \n \n \n \n \n \n \n \n {documents.map((document, index) => (\n \n \n \n \n \n ))}\n \n
File name/typeSizeLink
{document.file_name}{`${selectors.format.formatKB(document.file_size)} KB`}\n \n Download\n \n
\n
\n
\n );\n}\n","import * as React from 'react';\nimport { Button, Modal, ModalHeader, ModalBody, ModalFooter, Spinner } from 'reactstrap';\n\ntype Props = {\n showModal: boolean;\n type: string;\n title: string;\n isLoading: boolean;\n toggle: () => void;\n onSubmit: () => void;\n};\n\nexport default class SimpleConfirmationModal extends React.Component {\n render() {\n const { showModal, isLoading, type, title } = this.props;\n const spinner = ;\n\n return (\n \n {`${type} ${title}`}\n \n
\n Are you sure you want to {type} the {title}?\n
\n
\n \n \n \n \n
\n );\n }\n}\n","import * as React from 'react';\nimport { Button, Modal, ModalBody, ModalFooter, ModalHeader } from 'reactstrap';\nimport { ResponseError } from '../../apis';\nimport { formatErrorMessage } from '../../store/selectors/paylink';\n\ntype Props = {\n showModal: boolean;\n toggle: () => void;\n error: ResponseError | null;\n onCreate?: boolean;\n};\n\nexport default class PayLinkSendErrorModal extends React.Component {\n render() {\n const { showModal, error, onCreate } = this.props;\n\n if (!error) {\n return null;\n }\n\n return (\n \n \n Unable to send pay link\n \n \n
\n {formatErrorMessage(error)}\n {onCreate && ' Please visit the Details page to attempt to send the pay link again.'}\n
\n
\n \n \n \n
\n );\n }\n}\n","import * as React from 'react';\nimport { ButtonProps, DropdownItem, DropdownMenu, DropdownToggle, Spinner, UncontrolledDropdown } from 'reactstrap';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { ApplicationState } from '../../store';\nimport { CustomerModel, MerchantModel, PAY_LINK_STATUS, PayLinkModel, ResponseError } from '../../apis';\nimport selectors from '../../store/selectors';\nimport { sendEmailAction, sendSmsAction, cancelPayLinkAction } from '../../store/actions';\nimport { LinkType } from '../../pages/Paylink/CreateStep2';\nimport Loader from '../Loader';\nimport SimpleConfirmationModal from '../modals/SimpleConfirmationModal';\nimport PayLinkSendErrorModal from '../modals/PayLinkSendErrorModal';\n\ninterface StateProps {\n smsErrorMessage: ResponseError | null;\n emailErrorMessage: ResponseError | null;\n merchant: MerchantModel | null;\n timezone: string | null;\n userEmail: string | null;\n isLoading: boolean;\n}\n\ninterface OwnProps extends ButtonProps {\n customer: CustomerModel | null;\n payLink: PayLinkModel | null;\n setLink: (link: LinkType) => void;\n toggleModal: () => void;\n}\n\ninterface DispatchProps {\n sendEmailAction: typeof sendEmailAction;\n sendSmsAction: typeof sendSmsAction;\n cancelPayLinkAction: typeof cancelPayLinkAction;\n}\n\ntype Props = StateProps & OwnProps & DispatchProps;\nexport type PayLinkActionType = 'resend-sms' | 'resend-email' | 'cancel';\n\ninterface State {\n ready: boolean;\n showModal: boolean;\n action: PayLinkActionType | null;\n smsDisabled: boolean;\n emailDisabled: boolean;\n showCancelModal: boolean;\n showSmsSendErrorModal: boolean;\n showEmailSendErrorModal: boolean;\n}\n\nclass PayLinkActions extends React.Component {\n private DELAY_ACTION_DURATION = 10000;\n public state: State = {\n ready: true,\n showModal: false,\n action: null,\n smsDisabled: false,\n emailDisabled: false,\n showCancelModal: false,\n showSmsSendErrorModal: false,\n showEmailSendErrorModal: false,\n };\n\n onSmsResend = () => {\n this.setState({ smsDisabled: true });\n setTimeout(() => this.setState({ smsDisabled: false }), this.DELAY_ACTION_DURATION);\n };\n\n onEmailResend = () => {\n this.setState({ emailDisabled: true });\n setTimeout(() => this.setState({ emailDisabled: false }), this.DELAY_ACTION_DURATION);\n };\n\n onCancel = async () => {\n if (this.props.payLink) {\n await this.props.cancelPayLinkAction(this.props.payLink.id);\n this.toggleCancelModal();\n }\n };\n\n toggleCancelModal = () => this.setState({ showCancelModal: !this.state.showCancelModal });\n togglePayLinkSmsSendErrorModal = () => this.setState({ showSmsSendErrorModal: !this.state.showSmsSendErrorModal });\n togglePayLinkEmailSendErrorModal = () =>\n this.setState({ showEmailSendErrorModal: !this.state.showEmailSendErrorModal });\n\n onActionClick = async (action: PayLinkActionType) => {\n const { payLink, customer, merchant } = this.props;\n if (action === null || !payLink || !customer) return;\n this.setState({ ready: false });\n switch (action) {\n case 'resend-sms':\n if (!customer.sms_block_expires_at) {\n try {\n await this.props.sendSmsAction(payLink.id);\n await this.props.setLink('sms');\n this.onSmsResend();\n this.props.toggleModal();\n } catch {\n this.togglePayLinkSmsSendErrorModal();\n }\n }\n break;\n case 'resend-email':\n if (merchant && !customer.email_block_expires_at) {\n const createEmailModel = {\n pay_link_id: payLink.id,\n pay_link_url: payLink.url,\n customer: {\n email: customer.individual.email,\n first_name: customer.individual.first_name,\n last_name: customer.individual.last_name,\n },\n merchant_name: merchant.communication_safe_name ?? merchant.display_name,\n };\n\n try {\n await this.props.sendEmailAction(createEmailModel);\n await this.props.setLink('email');\n this.onEmailResend();\n this.props.toggleModal();\n } catch {\n this.togglePayLinkEmailSendErrorModal();\n }\n }\n break;\n case 'cancel':\n this.toggleCancelModal();\n break;\n default:\n break;\n }\n this.setState({ ready: true });\n };\n\n renderDropdownItem = (\n action: PayLinkActionType,\n isDisabled?: boolean,\n isBlocked?: boolean,\n blockedReason?: string,\n ) => {\n return (\n
\n this.onActionClick(action)} disabled={isDisabled || isBlocked}>\n \n {selectors.format.formatHypenated(action)} paylink\n \n {blockedReason &&
{blockedReason}
}\n {isDisabled && }\n
\n
\n );\n };\n\n render() {\n const spinner = ;\n const { smsDisabled, emailDisabled, ready } = this.state;\n const isLoading = !ready || this.props.isLoading;\n const isDisabled = !this.props.payLink || isLoading || this.props.payLink.status === PAY_LINK_STATUS.CANCELED;\n const { showCancelModal, showSmsSendErrorModal, showEmailSendErrorModal } = this.state;\n const { smsErrorMessage, emailErrorMessage, customer, timezone } = this.props;\n const smsBlocked = customer?.sms_block_expires_at !== undefined;\n const smsBlockedReason =\n 'SMS send is blocked' +\n (customer?.sms_block_expires_at\n ? ' until ' + selectors.format.formatDateTimeSecondsWithYear(customer?.sms_block_expires_at, timezone)\n : '') +\n \". Updating the customer's mobile will remove the block.\";\n const emailBlocked = customer?.email_block_expires_at !== undefined;\n const emailBlockedReason =\n 'Email send is blocked' +\n (customer?.email_block_expires_at\n ? ' until ' + selectors.format.formatDateTimeSecondsWithYear(customer?.email_block_expires_at, timezone)\n : '') +\n \". Updating the customer's email will remove the block.\";\n return (\n <>\n \n \n Select action {isLoading && spinner}\n \n \n {this.renderDropdownItem(\n 'resend-sms',\n smsDisabled,\n smsBlocked,\n smsBlocked ? smsBlockedReason : undefined,\n )}\n {this.renderDropdownItem(\n 'resend-email',\n emailDisabled,\n emailBlocked,\n emailBlocked ? emailBlockedReason : undefined,\n )}\n {this.renderDropdownItem('cancel')}\n \n \n this.onCancel()}\n />\n \n \n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n isLoading: selectors.global.isActionRequesting(state.global.actions, 'cancel_pay_link'),\n smsErrorMessage: selectors.global.getResponseError(state.global.actions, 'send_sms'),\n emailErrorMessage: selectors.global.getResponseError(state.global.actions, 'send_email'),\n merchant: state.merchant.selected,\n timezone: state.merchant.selected?.timezone || null,\n userEmail: state.authentication.user.email,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n sendSmsAction,\n sendEmailAction,\n cancelPayLinkAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PayLinkActions);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport Layout, { LayoutBreadcrumbItem } from '../../components/Layout';\nimport { Button, Row } from 'reactstrap';\nimport { ROUTE } from '../../config';\nimport { RouteComponentProps } from 'react-router-dom';\nimport Col from 'reactstrap/lib/Col';\nimport PlaceholderLoader from '../../components/PlaceholderLoader';\nimport selectors from '../../store/selectors';\nimport { CustomerModel, CustomizationType, PayLinkModel } from '../../apis';\nimport { fetchPayLinkAction, fetchCustomerAction, cleanCustomersAction } from '../../store/actions';\nimport { ApplicationState } from '../../store';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport PayLinkStatusBadge from '../../components/payLinks/PayLinkStatusBadge';\nimport PaylinkQRModal from '../../components/modals/PaylinkQRModal';\nimport Tooltip from '../../components/Tooltip';\nimport CustomerDetails from '../../components/customer/CustomerDetails';\nimport { LinkType } from './CreateStep2';\nimport PayLinkDocuments from '../../components/payLinks/PayLinkDocuments';\nimport PayLinkActions from '../../components/payLinks/PayLinkActions';\nconst chevronRight = '/Text-Link-Arrow.svg';\n\ninterface StateProps {\n payLink: PayLinkModel | null;\n customer: CustomerModel | null;\n isRequesting: boolean;\n timezone: string | null;\n customCustomerName: string | null;\n}\n\ntype OwnProps = RouteComponentProps<{\n payLinkId: string;\n}>;\n\ninterface DispatchProps {\n fetchPayLinkAction: typeof fetchPayLinkAction;\n fetchCustomerAction: typeof fetchCustomerAction;\n cleanCustomersAction: typeof cleanCustomersAction;\n}\n\ntype Props = StateProps & DispatchProps & OwnProps;\n\ninterface State {\n showModal: boolean;\n payLinkType: LinkType;\n}\n\nexport class PayLink extends React.Component {\n state: State = {\n showModal: false,\n payLinkType: 'sms',\n };\n componentDidMount = async () => {\n // Enable loading placeholders again by cleaning\n await this.props.cleanCustomersAction();\n\n try {\n await this.props.fetchPayLinkAction(this.props.match.params.payLinkId);\n } catch {\n // Error happen, redirect\n this.props.history.push(ROUTE.PAYLINKS);\n return;\n }\n\n if (this.props.payLink) {\n this.props.fetchCustomerAction(this.props.payLink.customer_id);\n }\n };\n\n toggleModal = () => this.setState({ showModal: !this.state.showModal });\n\n showQRCode = () => {\n this.setState({ payLinkType: 'qr' });\n this.toggleModal();\n };\n\n setPayLinkType = (link: LinkType) => {\n this.setState({ payLinkType: link });\n };\n\n render() {\n const { payLink, customer, isRequesting, timezone, customCustomerName } = this.props;\n\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.PAYLINKS,\n title: 'Paylinks',\n },\n ];\n\n if (payLink) {\n layoutBreadcrumbItems.push({\n href: selectors.global.payLinkRoute(payLink.id),\n title: payLink.id,\n isId: true,\n });\n }\n\n const { showModal } = this.state;\n return (\n \n
\n
\n
\n \n

{payLink && `${payLink.id}`}

\n
\n
\n
\n\n
\n

Paylink details

\n {payLink && payLink.external_charge_id ? (\n \n

{payLink.external_charge_id}

\n
\n ) : null}\n
\n\n \n \n
\n

Amount

\n

\n \n {payLink && payLink.order && (\n <>\n {payLink.order &&\n selectors.format.formatAmount(payLink.order.total_amount)}\n \n )}\n \n

\n
\n \n {payLink && payLink.order && (\n \n
\n
\n

Convenience fee

\n \n {payLink.order.convenience_fee && payLink.order.convenience_fee > 0\n ? selectors.format.formatAmount(payLink.order.convenience_fee)\n : '—'}\n \n
\n
\n \n )}\n
\n \n \n
\n
\n

Created at

\n \n {(payLink &&\n payLink.created_at &&\n selectors.format.formatDateTimeSecondsWithYear(\n payLink?.created_at,\n timezone,\n )) ||\n '—'}\n \n
\n
\n \n \n
\n
\n

Expires at

\n \n {(payLink &&\n payLink.expires_at &&\n selectors.format.formatDateTimeSecondsWithYear(\n payLink?.expires_at,\n timezone,\n )) ||\n '—'}\n \n
\n
\n \n \n {payLink && (\n
\n

Status

\n \n {payLink.status && }\n \n
\n )}\n \n
\n \n \n
\n

QR

\n
\n \n \n Show QR Code\n \n \n
\n
\n \n \n
\n

URL

\n \n
\n \n \n
\n

Action

\n
\n \n \n \n
\n
\n \n
\n\n
\n
\n
Need help with this paylink?
\n \n Contact support\n \n \n \n \n
\n
\n
\n\n {payLink && }\n\n \n\n \n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state, ownProps) => {\n const payLink = state.payLinks.list.items.find((el) => el.id === ownProps.match.params.payLinkId) || null;\n const customer = state.customer.list.items.find((el) => el.id === (payLink && payLink.customer_id)) || null;\n return {\n payLink,\n customer,\n isRequesting: isActionRequesting(state.global.actions, 'fetch_pay_link'),\n timezone: state.merchant.selected?.timezone || null,\n customCustomerName: selectors.customizations.getCustomization(state, CustomizationType.CustomerName),\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchPayLinkAction,\n fetchCustomerAction,\n cleanCustomersAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PayLink);\n","import { Button, Col, Row } from 'reactstrap';\nimport Input from 'reactstrap/lib/Input';\nimport InputMask from 'react-input-mask';\nimport Loader from '../Loader';\nimport * as React from 'react';\nimport { CreateCustomerRequest, CustomerModel, MerchantModel, ResponseError } from '../../apis';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport selectors from '../../store/selectors';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { createCustomerAction, resetActionStatusAction } from '../../store/actions';\n\ninterface StateProps {\n customers: CustomerModel[];\n isLoading: boolean;\n merchant: MerchantModel | null;\n error: ResponseError | null;\n customerError: ResponseError | null;\n}\n\ninterface DispatchProps {\n createCustomerAction: typeof createCustomerAction;\n resetActionStatusAction: typeof resetActionStatusAction;\n}\n\ninterface OwnerProps {\n onSubmitCallback?: (customer: CustomerModel) => void;\n}\n\ntype Props = StateProps & DispatchProps & OwnerProps;\n\ninterface State {\n firstName: string;\n lastName: string;\n mobile: string;\n email: string;\n externalId: string;\n dob: string;\n}\n\ntype Field = 'firstName' | 'lastName' | 'mobile' | 'email' | 'externalId' | 'dob';\n\nclass CustomerForm extends React.Component {\n state: State = {\n firstName: '',\n lastName: '',\n mobile: '',\n email: '',\n externalId: '',\n dob: '',\n };\n\n onInputChange = async (field: string, label: Field) => {\n await this.setState({ [label]: field } as Pick);\n };\n\n onSubmit = async () => {\n const { merchant } = this.props;\n const { mobile, email, firstName, lastName, dob } = this.state;\n await this.props.resetActionStatusAction('create_customer');\n\n const formData: CreateCustomerRequest = {\n country: merchant ? merchant.street_location.country : '',\n state: merchant ? merchant.street_location.state : '',\n individual: {\n first_name: firstName,\n last_name: lastName,\n mobile: selectors.format.formatMobile(mobile) || undefined,\n email: email || undefined,\n date_of_birth: dob ? dob : undefined,\n },\n };\n try {\n await this.props.createCustomerAction(formData);\n const customer = this.props.customers.find(\n (customer) =>\n customer.individual.email === formData.individual.email &&\n customer.individual.first_name === formData.individual.first_name &&\n customer.individual.last_name === formData.individual.last_name &&\n customer.individual.date_of_birth === formData.individual.date_of_birth &&\n customer.individual.mobile === formData.individual.mobile,\n );\n if (this.props.onSubmitCallback && customer) {\n await this.props.onSubmitCallback(customer);\n }\n } catch {\n // handle silently\n }\n };\n\n render() {\n const { isLoading, customerError } = this.props;\n const { mobile, email, firstName, lastName, dob } = this.state;\n const missingFields = !firstName || !lastName;\n\n const noDob = !dob;\n const disabled = noDob || missingFields;\n\n return (\n
\n
Add a new customer
\n\n \n \n
First name *
\n this.onInputChange(e.target.value, 'firstName')}\n data-sh=\"new-customer-first-name-input\"\n />\n \n \n
Last name *
\n this.onInputChange(e.target.value, 'lastName')}\n data-sh=\"new-customer-last-name-input\"\n />\n \n
\n\n \n \n
Date of Birth
\n this.onInputChange(e.target.value, 'dob')}\n data-sh=\"new-customer-dob-input\"\n placeholder=\"yyyy-mm-dd\"\n className={`form-control form-control-lg bg-light border-2 border-dark${\n customerError && customerError.property === 'individual.date_of_birth'\n ? 'is-invalid'\n : ''\n }`}\n mask=\"9999-99-99\"\n />\n {customerError && customerError.property === 'individual.date_of_birth' && (\n <>\n
{customerError.message}
\n \n )}\n \n \n
Mobile
\n this.onInputChange(e.target.value, 'mobile')}\n data-sh=\"new-customer-mobile-input\"\n />\n {customerError && customerError.property === 'individual.mobile' && (\n <>\n
{customerError.message}
\n \n )}\n \n
\n \n \n
Email
\n this.onInputChange(e.target.value, 'email')}\n data-sh=\"new-customer-email-input\"\n />\n {customerError && customerError.property === 'individual.email' && (\n <>\n
{customerError.message}
\n \n )}\n \n
\n \n \n \n
{isLoading ? : `Create new customer`}
\n \n \n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => {\n return {\n customers: state.customer.list.items,\n merchant: state.merchant.selected,\n customerError: selectors.global.getResponseError(state.global.actions, 'create_customer'),\n error: selectors.global.getResponseError(state.global.actions, 'create_customer'),\n isLoading: selectors.global.isActionRequesting(state.global.actions, 'create_customer'),\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n createCustomerAction,\n resetActionStatusAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CustomerForm);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { CustomerModel } from '../../apis';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport Table from 'reactstrap/lib/Table';\nimport Pagination from '../../components/Pagination';\nimport TableBody from '../TableBody';\nimport Alert from 'reactstrap/lib/Alert';\nimport selectors from '../../store/selectors';\nconst chevronRight = '/Text-Link-Arrow.svg';\ninterface StateProps {\n customers: CustomerModel[];\n customersTotal: number;\n customersSkipped: number;\n customersLimit: number;\n isLoading: boolean;\n}\n\ninterface OwnerProps {\n isLoading?: boolean;\n onRowClick: (customer: CustomerModel) => void;\n onGoTo: (page: number, skip: number) => void;\n noRowsComponent?: () => React.ReactNode;\n strongholdDirectPage?: boolean;\n}\n\ntype Props = StateProps & OwnerProps;\n\nclass CustomersTable extends React.Component {\n hasNoRows = () => this.props.customers.length === 0 && !this.props.isLoading;\n\n renderNoRows = () => {\n if (!this.hasNoRows()) return null;\n return (\n \n {this.props.noRowsComponent ? this.props.noRowsComponent() : 'There are no customers to display'}\n \n );\n };\n\n render() {\n const { strongholdDirectPage } = this.props;\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n {this.props.customers.map((customer, index) => (\n this.props.onRowClick(customer)} key={index}>\n \n \n \n \n \n \n ))}\n \n
NameEmailMobileExternal ID
{selectors.customer.getCustomerName(customer)}{customer.individual.email}{selectors.format.formatMobilePhoneNumberReadable(customer.individual.mobile)}{customer.external_id}\n {strongholdDirectPage ? 'Select' : 'View'}\n \n \n \n
\n {this.renderNoRows()}\n this.props.onGoTo(skip / this.props.customersLimit + 1, skip)}\n disabled={this.props.isLoading}\n />\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (\n state,\n { isLoading = false },\n) => ({\n customers: state.customer.list.items,\n customersSkipped: state.customer.list.skipped,\n customersTotal: state.customer.list.total,\n customersLimit: state.customer.list.limit,\n isLoading: isActionRequesting(state.global.actions, 'fetch_customers') || isLoading,\n});\n\nexport default connect(mapStateToProps)(CustomersTable);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { Button, Col, InputGroup, InputGroupAddon, InputGroupText, Row, TabContent, TabPane } from 'reactstrap';\nimport { ApplicationState } from '../../store';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faMinusCircle, faPlusCircle } from '@fortawesome/free-solid-svg-icons';\nimport Input from 'reactstrap/lib/Input';\nimport { fetchCustomersAction, FetchCustomersActionOptions, cleanCustomersAction } from '../../store/actions';\nimport { debounce } from 'lodash';\nimport { CustomerModel, ResponseError } from '../../apis';\nimport selectors from '../../store/selectors';\nimport InputMask from 'react-input-mask';\nimport CustomerForm from '../../components/forms/Customer';\nimport Alert from 'reactstrap/lib/Alert';\nimport CustomersTable from '../../components/customer/CustomersTable';\nconst searchIcon = '/Search-Icon.svg';\n\ninterface OwnProps {\n setCustomer: (customer: CustomerModel) => void;\n}\n\ninterface StateProps {\n customers: CustomerModel[];\n isRequesting: boolean;\n error: ResponseError | null;\n}\n\ninterface DispatchProps {\n fetchCustomersAction: typeof fetchCustomersAction;\n cleanCustomersAction: typeof cleanCustomersAction;\n}\n\ntype Props = StateProps & DispatchProps & OwnProps;\n\ninterface State {\n mobile: string;\n email: string;\n activeTab: number;\n}\n\ntype Field = 'mobile' | 'email';\n\nexport class CreateStep1 extends React.Component {\n state: State = {\n mobile: '',\n email: '',\n activeTab: 1,\n };\n\n componentDidMount = async () => {\n await this.props.cleanCustomersAction();\n await this.props.fetchCustomersAction();\n };\n\n fetchCustomers = (skip?: number) => {\n const { mobile, email } = this.state;\n\n let options: FetchCustomersActionOptions = {\n skip,\n };\n options = {\n ...options,\n mobile: selectors.format.formatMobile(mobile, true) || undefined,\n email: email || undefined,\n };\n\n this.props.fetchCustomersAction(options);\n };\n\n setCustomer = async (customer: CustomerModel) => {\n await this.props.setCustomer(customer);\n };\n\n fetchCustomersDebounced = debounce(this.fetchCustomers, 1000);\n\n onInputChange = async (field: string, label: Field) => {\n await this.setState({ [label]: field } as Pick);\n if ((field.length > 2 || !field) && this.state.activeTab === 1) {\n this.fetchCustomersDebounced();\n }\n };\n\n onSubmitCustomerCallback = async (customer: CustomerModel) => {\n await this.setCustomer(customer);\n };\n\n toggleTab = async (activeTab: number) => {\n this.setState({ activeTab }, async () => {\n if (activeTab === 1) {\n await this.props.fetchCustomersAction();\n }\n });\n };\n\n renderCreateCustomer = () => {\n return ;\n };\n\n renderNoRows = () => {\n return There are no customers to display;\n };\n\n renderSearchCustomer = () => {\n const { isRequesting } = this.props;\n const { mobile, email } = this.state;\n return (\n <>\n
\n
Choose an existing paylink customer
\n\n \n \n \n this.onInputChange(e.target.value, 'mobile')}\n data-sh=\"mobile-input\"\n />\n \n \n \n \n \n \n \n \n \n this.onInputChange(e.target.value, 'email')}\n placeholder=\"Search by email...\"\n data-sh=\"email-input\"\n bsSize=\"lg\"\n />\n \n \n \n \n \n \n \n \n this.fetchCustomers(skip)}\n isLoading={isRequesting}\n strongholdDirectPage={true}\n />\n
\n \n );\n };\n\n render() {\n const { activeTab } = this.state;\n\n return (\n
\n
\n
\n
\n this.toggleTab(1)}\n >\n
\n
\n Choose an existing customer\n Existing customer\n
\n \n {activeTab === 1 ? (\n \n \n \n ) : (\n \n \n \n )}\n \n
\n \n
\n
\n this.toggleTab(2)}\n >\n
\n
\n Add a new customer\n New customer\n
\n \n {activeTab === 2 ? (\n \n \n \n ) : (\n \n \n \n )}\n \n
\n \n
\n
\n
\n\n \n \n {this.renderSearchCustomer()}\n \n \n {this.renderCreateCustomer()}\n \n \n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => {\n return {\n customers: state.customer.list.items,\n error: selectors.global.getResponseError(state.global.actions, 'create_pay_link'),\n isRequesting: selectors.global.isActionRequesting(state.global.actions, 'fetch_customers'),\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchCustomersAction,\n cleanCustomersAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateStep1);\n","import * as React from 'react';\nimport { KeyboardEvent } from 'react';\nimport { Input, InputProps } from 'reactstrap';\n\ninterface Props extends InputProps {\n className?: string;\n max?: number;\n onValueChange: (value: number) => void;\n value: number;\n prefix?: string;\n suffix?: string;\n digits?: number;\n}\n\nconst VALID_FIRST = /^[1-9]{1}$/;\nconst VALID_NEXT = /^[0-9]{1}$/;\nconst DELETE_KEY_CODE = 8;\nconst RETURN_KEY_CODE = 13;\n\nexport default class NumberInput extends React.Component {\n handleKeyDown = (e: KeyboardEvent) => {\n const { value, max, onValueChange } = this.props;\n const { key, keyCode } = e;\n\n if (keyCode === RETURN_KEY_CODE) {\n e.currentTarget.blur();\n }\n\n if (\n (value === 0 && !VALID_FIRST.test(key)) ||\n (value !== 0 && !VALID_NEXT.test(key) && keyCode !== DELETE_KEY_CODE)\n ) {\n return;\n }\n const valueString = value.toString();\n let nextValue: number;\n\n if (keyCode !== DELETE_KEY_CODE) {\n const nextValueString: string = value === 0 ? key : `${valueString}${key}`;\n nextValue = Number.parseInt(nextValueString, 10);\n } else {\n const nextValueString = valueString.slice(0, -1);\n nextValue = nextValueString === '' ? 0 : Number.parseInt(nextValueString, 10);\n }\n\n if (max && nextValue > max) {\n return;\n }\n\n onValueChange(nextValue);\n };\n\n valueDisplay = () => {\n const value = this.props.value / Math.pow(10, this.props.digits || 0);\n return `${this.props.prefix || ''}${value.toFixed(this.props.digits || 0)}${this.props.suffix || ''}`;\n };\n\n render() {\n const { className, value, ...props } = this.props;\n const valueAbsTrunc = Math.trunc(Math.abs(value));\n\n if (value !== valueAbsTrunc || !Number.isFinite(value) || Number.isNaN(value)) {\n throw new Error(`invalid value property`);\n }\n return (\n \n );\n }\n}\n","import React from 'react';\nimport { Alert, Input } from 'reactstrap';\nconst uploadIcon = '/upload.svg';\n\ninterface Props {\n onChangeFile: (e: FileList | null) => void;\n fileType: string;\n multiple: boolean;\n}\n\ninterface State {\n errors: string[];\n files: string[];\n}\n\nexport default class PayLinkFileUploader extends React.Component {\n private MAX_LENGTH = 5;\n state: State = {\n errors: [],\n files: [],\n };\n\n fileValidation = (e: React.ChangeEvent) => {\n this.setState({ errors: [] });\n const fileList = e.target.files;\n const { errors } = this.state;\n const errorArray = [];\n const fileArray = [];\n if (fileList) {\n if (fileList.length > this.MAX_LENGTH) errorArray.push(`Cannot upload files more than ${this.MAX_LENGTH}`);\n else {\n for (let i = 0; i < fileList.length; i++) {\n fileArray.push(fileList[i].name);\n const fileSize = fileList[i].size;\n const formattedFileSize = Math.round(fileSize / 1024);\n if (formattedFileSize >= 20096) {\n errorArray.push(`${fileList[i].name} is larger than 20mb`);\n }\n }\n }\n\n this.setState({ errors: errorArray });\n }\n if (errors.length === 0) {\n this.setState({ files: fileArray });\n this.props.onChangeFile(fileList);\n }\n };\n\n renderFileNames = () => {\n const { files } = this.state;\n if (files.length > 0) {\n return files.map((fileName, index) => (\n {fileName + (index === files.length - 1 ? '' : ', ')}\n ));\n }\n };\n render() {\n const isMultiple = this.props.multiple ?? false;\n const { errors, files } = this.state;\n const hasFiles = files.length > 0 && errors.length === 0;\n const uploadDocClasses = hasFiles ? 'no-hover text-success border border-success bg-light' : 'text-dark';\n return (\n <>\n
\n
\n \n {hasFiles ? (\n this.renderFileNames()\n ) : (\n
\n Choose files{' '}\n
\n \n
\n
\n )}\n \n
\n \n
\n\n {errors &&\n errors.map((error, index) => (\n \n {error}\n \n ))}\n \n );\n }\n}\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { Button, Col, Row } from 'reactstrap';\nimport { ApplicationState } from '../../store';\nimport Input from 'reactstrap/lib/Input';\nimport { createPayLinkAction, cleanPayLinkAction, resetActionStatusAction } from '../../store/actions';\nimport { CustomerModel, MerchantModel, PayLinkModel, ResponseError, StrongholdDirectRequestModel } from '../../apis';\nimport selectors from '../../store/selectors';\nimport NumberInput from '../../components/NumberInput';\nimport PayLinkFileUploader from '../../components/payLinks/PayLinkFileUploader';\nimport CustomersProfileEditModal from '../../components/modals/CustomersProfileEditModal';\nconst qrIcon = '/qr-code-white.svg';\nconst mobileIcon = '/SMS-white.svg';\nconst emailIcon = '/Email-white.svg';\n\nexport type LinkType = 'qr' | 'sms' | 'email';\n\ninterface OwnProps {\n customer: CustomerModel;\n strongholdDirectRequest: StrongholdDirectRequestModel;\n setStep: (stepNumber: 1 | 2 | 3 | 4) => void;\n setDeliveryType: (deliveryType: LinkType) => void;\n setFiles: (fileList: FileList | null) => void;\n setOrderId: (orderId: string) => void;\n setAmount: (amount: number) => void;\n setCustomer: (customer: CustomerModel) => void;\n}\n\ninterface StateProps {\n merchant: MerchantModel | null;\n payLink: PayLinkModel | null;\n isCreatingPayLink: boolean;\n error: ResponseError | null;\n isStrongholdDirectB2B: boolean;\n}\n\ninterface DispatchProps {\n createPayLinkAction: typeof createPayLinkAction;\n cleanPayLinkAction: typeof cleanPayLinkAction;\n resetActionStatusAction: typeof resetActionStatusAction;\n}\n\ntype Props = StateProps & DispatchProps & OwnProps;\n\ninterface State {\n convenienceFee: number;\n showEditForm: boolean;\n}\n\nexport class CreateStep2 extends React.Component {\n private amountInput: HTMLInputElement | null = null;\n\n state: State = {\n convenienceFee: this.props.merchant ? parseInt(this.props.merchant.convenience_fee) : 0,\n showEditForm: false,\n };\n\n componentDidMount = async () => {\n await this.props.cleanPayLinkAction();\n };\n\n toggleEditForm = () => this.setState({ showEditForm: !this.state.showEditForm });\n\n onOrderIdChange = async (orderId: string) => {\n this.props.setOrderId(orderId);\n };\n\n onAmountChange = async (amount: number) => {\n this.props.setAmount(amount);\n };\n\n onSetCustomer = async (customer: CustomerModel) => {\n this.props.setCustomer(customer);\n };\n\n onFileChange = (fileList: FileList | null) => {\n if (!fileList) return;\n this.props.setFiles(fileList);\n };\n\n selectDeliveryType = (deliveryType: LinkType) => {\n this.props.setDeliveryType(deliveryType);\n this.props.setStep(3);\n };\n\n render() {\n const { error, isStrongholdDirectB2B, customer, strongholdDirectRequest } = this.props;\n const { convenienceFee, showEditForm } = this.state;\n const isLoading = !customer;\n const noFiles =\n isStrongholdDirectB2B &&\n (!strongholdDirectRequest.fileList || strongholdDirectRequest.fileList.length === 0);\n const amount = strongholdDirectRequest.amount ? strongholdDirectRequest.amount : 0;\n const disabled = noFiles || amount < 100;\n\n return (\n
\n
\n
{`${customer.individual.first_name} ${customer.individual.last_name}`}
\n\n \n \n
Email
\n \n \n \n
Mobile
\n \n \n
\n \n \n
First name
\n \n \n \n
Last name
\n \n \n
\n\n
Paylink details
\n\n \n \n
Total Amount *
\n
\n {\n this.amountInput = input as HTMLInputElement;\n }}\n className={`mx-auto form-control-tip form-control-lg border-2 bg-light${\n error && error.property === 'order.total_amount' ? 'is-invalid' : ''\n }`}\n onValueChange={this.onAmountChange}\n max={1000000}\n value={amount}\n prefix={'$'}\n digits={2}\n data-sh=\"customer-details-amount-input\"\n />\n {error && error.property === 'order.total_amount' && (\n <>\n
{error.message}
\n \n )}\n
\n \n \n
Convenience Fee
\n \n \n
\n \n \n
Order ID
\n this.onOrderIdChange(e.target.value)}\n data-sh=\"customer-details-order-id-input\"\n bsSize=\"lg\"\n />\n {error && error.property === 'charge_external_id' && (\n <>\n
{error.message}
\n \n )}\n \n
\n {isStrongholdDirectB2B && (\n \n \n
Documents *
\n \n \n
\n )}\n
\n
\n \n \n this.selectDeliveryType('qr')}\n disabled={disabled}\n className=\"h-100 w-100 ml-1\"\n data-sh=\"create-qr-button\"\n size=\"lg\"\n >\n
\n
Create QR code
\n
\n \n
\n
\n \n \n {customer.individual.mobile ? (\n \n this.selectDeliveryType('sms')}\n color=\"primary\"\n disabled={disabled}\n className=\"h-100 w-100\"\n data-sh=\"create-sms-button\"\n size=\"lg\"\n >\n
\n
Send SMS
\n
\n \n
\n
\n \n \n ) : (\n \n \n this.setState({\n showEditForm: true,\n })\n }\n color=\"primary\"\n disabled={disabled}\n className=\" h-100 w-100\"\n data-sh=\"create-sms-button\"\n size=\"lg\"\n >\n
\n
Send SMS
\n
\n \n
\n
\n \n \n )}\n {customer.individual.email ? (\n \n this.selectDeliveryType('email')}\n color=\"primary\"\n disabled={disabled}\n data-sh=\"create-email-button\"\n size=\"lg\"\n className=\"w-100 h-100 mr-1\"\n >\n
\n
Send email
\n
\n \n
\n
\n \n \n ) : (\n \n \n this.setState({\n showEditForm: true,\n })\n }\n color=\"primary\"\n disabled={disabled}\n className=\"h-100 w-100\"\n data-sh=\"create-email-button\"\n size=\"lg\"\n >\n
Send email
\n
\n \n
\n \n \n )}\n
\n
\n {customer && (\n \n )}\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => {\n return {\n merchant: state.merchant.selected,\n payLink: state.payLinks.selected,\n error: selectors.global.getResponseError(state.global.actions, 'create_pay_link'),\n isCreatingPayLink: selectors.global.isActionRequesting(state.global.actions, 'create_pay_link'),\n isStrongholdDirectB2B: selectors.user.canCreatePayLinkB2B(\n state.authentication.user.roles,\n state.merchant.selected,\n ),\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n createPayLinkAction,\n cleanPayLinkAction,\n resetActionStatusAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CreateStep2);\n","import * as React from 'react';\nimport {\n CreatePayLinkRequest,\n MerchantModel,\n PayLinkDocumentModel,\n PayLinkModel,\n StrongholdDirectRequestModel,\n} from '../../apis';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport selectors from '../../store/selectors';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport {\n cleanPayLinkAction,\n createPayLinkAction,\n fetchProcessingFeeAmountAction,\n resetActionStatusAction,\n} from '../../store/actions';\nimport { Button, Col, Row } from 'reactstrap';\nimport Loader from '../../components/Loader';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport PlaceholderLoader from '../../components/PlaceholderLoader';\n\ninterface OwnProps {\n strongholdDirectRequestModel: StrongholdDirectRequestModel;\n setStep: (stepNumber: 1 | 2 | 3 | 4) => void;\n}\n\ninterface StateProps {\n payLink: PayLinkModel | null;\n isRequesting: boolean;\n merchant: MerchantModel | null;\n processingFee: number;\n isLoading: boolean;\n}\n\ninterface DispatchProps {\n createPayLinkAction: typeof createPayLinkAction;\n cleanPayLinkAction: typeof cleanPayLinkAction;\n resetActionStatusAction: typeof resetActionStatusAction;\n fetchProcessingFeeAmountAction: typeof fetchProcessingFeeAmountAction;\n}\n\ntype Props = OwnProps & StateProps & DispatchProps;\n\nclass CreatePaylink3 extends React.Component {\n async componentDidMount() {\n await this.props.fetchProcessingFeeAmountAction(this.props.strongholdDirectRequestModel.amount || 0);\n }\n\n getLinkMethod = (method: string | null) => {\n let linkMethod = '';\n switch (method) {\n case 'qr':\n linkMethod = 'QR Code';\n break;\n case 'sms':\n linkMethod = 'SMS Message';\n break;\n case 'email':\n linkMethod = 'Email';\n break;\n }\n return linkMethod;\n };\n\n onSubmit = async () => {\n const { merchant, strongholdDirectRequestModel } = this.props;\n const { amount, externalId, fileList, successScreenType } = strongholdDirectRequestModel;\n await this.props.resetActionStatusAction('create_pay_link');\n const totalAmount = amount ? amount : 0;\n\n if (merchant && strongholdDirectRequestModel.customer && successScreenType) {\n const customer = strongholdDirectRequestModel.customer;\n const createPayLinkRequest: CreatePayLinkRequest = {\n type: 'checkout',\n customer_id: customer.id,\n customer: {\n email: customer.individual.email,\n first_name: customer.individual.first_name,\n last_name: customer.individual.last_name,\n },\n merchant: {\n display_name: merchant.display_name,\n communication_safe_name: merchant.communication_safe_name,\n },\n tip: {\n beneficiary_name: merchant.display_name,\n },\n order: {\n total_amount: totalAmount,\n },\n stand_alone: true,\n };\n\n if (externalId) {\n createPayLinkRequest.charge = {\n external_id: externalId,\n };\n }\n\n let formData = null;\n if (fileList) {\n formData = new FormData();\n formData.append('customerId', customer.id);\n for (let x = 0; x < fileList.length; x++) {\n formData.append('files', fileList[x]);\n }\n }\n\n await this.props.createPayLinkAction(createPayLinkRequest, successScreenType, formData);\n this.props.setStep(4);\n }\n };\n\n renderFileList = () => {\n const { strongholdDirectRequestModel } = this.props;\n const { fileList } = strongholdDirectRequestModel;\n if (fileList) {\n const documents: PayLinkDocumentModel[] = [];\n Array.from(fileList).forEach((file) => {\n const document = {\n url: '',\n file_size: file.size,\n file_name: file.name,\n } as PayLinkDocumentModel;\n documents.push(document);\n });\n return (\n
\n
Documents
\n {documents.map((document, index) => (\n \n {document.file_name}\n {`${selectors.format.formatKB(\n document.file_size,\n )} KB`}\n \n ))}\n
\n );\n }\n };\n\n render() {\n const { strongholdDirectRequestModel, merchant, setStep, isRequesting, processingFee, isLoading } = this.props;\n const { amount, externalId, fileList, successScreenType, customer } = strongholdDirectRequestModel;\n const convenienceFee = merchant ? parseInt(merchant.convenience_fee) : 0;\n return (\n
\n {customer && successScreenType && amount && (\n
\n \n \n
Customer
\n
{`${customer.individual.first_name} ${customer.individual.last_name}`}
\n
\n {selectors.format.formatMobilePhoneNumberReadable(customer.individual.mobile)}\n
\n
{customer.individual.email}
\n \n
\n
\n
Paylink
\n \n Order ID\n {externalId}\n \n \n Paylink type\n {this.getLinkMethod(successScreenType)}\n \n
\n \n Amount\n \n {selectors.format.formatAmount(amount)}\n \n \n \n Merchant Convenience Fee\n \n {selectors.format.formatAmount(convenienceFee)}\n \n \n \n Payment Processing Fee\n \n \n {selectors.format.formatAmount(processingFee)}\n \n \n \n \n Total\n \n \n {selectors.format.formatAmount(convenienceFee + amount + processingFee)}\n \n \n \n {fileList && (\n
\n
\n \n {this.renderFileList()}\n \n
\n )}\n
\n )}\n
\n
\n \n \n this.onSubmit()}\n >\n {isRequesting ? : `Confirm`}\n \n \n \n setStep(2)}\n >\n Back\n \n \n \n
\n
\n
\n );\n }\n}\nconst mapStateToProps: MapStateToPropsParam = (state) => {\n return {\n payLink: state.payLinks.selected,\n merchant: state.merchant.selected,\n isRequesting: selectors.global.isActionRequesting(state.global.actions, 'create_pay_link'),\n processingFee: state.processingFees.amount || 0,\n isLoading: isActionRequesting(state.global.actions, 'fetch_processing_fee_amount'),\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n createPayLinkAction,\n cleanPayLinkAction,\n resetActionStatusAction,\n fetchProcessingFeeAmountAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CreatePaylink3);\n","import * as React from 'react';\nimport { Button, Col, Row } from 'reactstrap';\nimport { history } from '../../index';\nimport selectors from '../../store/selectors';\nimport SHQRCode from '../../components/SHQRCode';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { ResponseError } from '../../apis';\nimport PayLinkSendErrorModal from '../../components/modals/PayLinkSendErrorModal';\nimport { formatErrorMessage } from '../../store/selectors/paylink';\n\ntype OwnProps = {\n payLinkId: string;\n url: string | null;\n resetForm: () => void;\n};\n\ninterface StateProps {\n errorMessage: ResponseError | null;\n}\n\ninterface State {\n showSendErrorModal?: boolean;\n}\n\ntype Props = OwnProps & StateProps & State;\n\nclass CreatePaylink4 extends React.Component {\n public state: State = {\n showSendErrorModal: this.props.errorMessage !== null,\n };\n\n onResetForm = () => {\n this.props.resetForm();\n };\n\n onViewDetails = () => {\n const { payLinkId } = this.props;\n history.push(selectors.global.payLinkRoute(payLinkId));\n };\n\n togglePayLinkSendErrorModal = () => this.setState({ showSendErrorModal: !this.state.showSendErrorModal });\n\n renderSuccess = () => {\n const { url, errorMessage } = this.props;\n const { showSendErrorModal } = this.state;\n return (\n <>\n {url && (\n
\n \n \n
\n
\n
\n {errorMessage ? (\n
\n
{formatErrorMessage(errorMessage)}
\n
\n Please visit the Details page to attempt to send the pay link\n again.\n
\n
\n ) : (\n

The pay link has been sent.

\n )}\n
\n
You can also show this QR code to your customer.
\n
\n {url}\n
\n
\n
\n \n \n \n \n
\n
\n )}\n
\n \n \n this.onViewDetails()}\n >\n View Details\n View\n \n \n \n this.onResetForm()}\n >\n Create another paylink\n New\n \n \n \n
\n {errorMessage && (\n \n )}\n \n );\n };\n\n render() {\n return (\n
\n
{this.renderSuccess()}
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n errorMessage:\n selectors.global.getResponseError(state.global.actions, 'send_sms') ||\n selectors.global.getResponseError(state.global.actions, 'send_email'),\n});\n\nexport default connect(mapStateToProps)(CreatePaylink4);\n","import * as React from 'react';\nimport Layout from '../../components/Layout';\nimport { ROUTE } from '../../config';\nimport { CustomerModel, MerchantModel, PayLinkModel, StrongholdDirectRequestModel } from '../../apis';\nimport CreateStep1 from './CreateStep1';\nimport CreateStep2, { LinkType } from './CreateStep2';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport selectors from '../../store/selectors';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { cleanPayLinkAction, createPayLinkAction, resetActionStatusAction } from '../../store/actions';\nimport CreateStep3 from './CreateStep3';\nimport CreateStep4 from './CreateStep4';\n\ninterface State {\n step: 1 | 2 | 3 | 4;\n strongholdDirectRequest: StrongholdDirectRequestModel | null;\n}\n\ninterface StateProps {\n payLink: PayLinkModel | null;\n isCreatingPayLink: boolean;\n merchant: MerchantModel | null;\n}\n\ninterface DispatchProps {\n createPayLinkAction: typeof createPayLinkAction;\n cleanPayLinkAction: typeof cleanPayLinkAction;\n resetActionStatusAction: typeof resetActionStatusAction;\n}\n\ntype Props = StateProps & DispatchProps;\n\nexport class CreatePaylink extends React.Component {\n state: State = {\n strongholdDirectRequest: null,\n step: 1,\n };\n\n resetForm = () => {\n this.setState({\n strongholdDirectRequest: null,\n step: 1,\n });\n };\n\n setCustomer = (customer: CustomerModel) => {\n this.setState({\n strongholdDirectRequest: {\n ...this.state.strongholdDirectRequest,\n customer: customer,\n },\n step: 2,\n });\n };\n\n setStep = (stepNumber: 1 | 2 | 3 | 4) => {\n this.setState({ step: stepNumber });\n };\n\n setDeliveryType = (deliveryType: LinkType) => {\n this.setState({\n strongholdDirectRequest: {\n ...this.state.strongholdDirectRequest,\n successScreenType: deliveryType,\n },\n step: 3,\n });\n };\n\n setAmount = (amount: number) => {\n this.setState({\n strongholdDirectRequest: {\n ...this.state.strongholdDirectRequest,\n amount,\n },\n });\n };\n\n setFiles = (fileList: FileList | null) => {\n if (!fileList) return;\n this.setState({\n strongholdDirectRequest: {\n ...this.state.strongholdDirectRequest,\n fileList: fileList,\n },\n });\n };\n\n setOrderId = (orderId: string) => {\n this.setState({\n strongholdDirectRequest: {\n ...this.state.strongholdDirectRequest,\n externalId: orderId,\n },\n });\n };\n\n renderSteps = () => {\n const { step } = this.state;\n const baseClasses = 'circle-border';\n return (\n
\n \n 1\n
\n
\n \n 2\n \n
\n \n
\n
\n
\n
\n \n \n );\n };\n\n render() {\n const { payLink } = this.props;\n const { step, strongholdDirectRequest } = this.state;\n\n return (\n \n
\n
\n
\n
\n

\n {step === 1 && 'Create a paylink'}\n {step === 2 && 'Paylink customer'}\n {step === 3 && 'Confirmation of paylink'}\n {step === 4 && 'Paylink created'}\n

\n
\n
\n {step === 1 && 'Choose an existing paylink customer or add a new customer.'}\n {step === 2 &&\n \"Fill out the below details, then choose how you'd like to send your paylink.\"}\n {step === 3 && 'Review the details of your paylink and confirm.'}\n {step === 4 && 'The paylink was created successfully.'}\n
\n
\n
\n {this.renderSteps()}\n
\n
\n\n
\n {step === 1 && }\n {step === 2 && strongholdDirectRequest && strongholdDirectRequest.customer && (\n \n )}\n {step === 3 && strongholdDirectRequest && strongholdDirectRequest.customer && (\n \n )}\n {step === 4 &&\n payLink &&\n strongholdDirectRequest &&\n strongholdDirectRequest.successScreenType && (\n \n )}\n
\n
\n \n );\n }\n}\nconst mapStateToProps: MapStateToPropsParam = (state) => {\n return {\n payLink: state.payLinks.selected,\n merchant: state.merchant.selected,\n isCreatingPayLink: selectors.global.isActionRequesting(state.global.actions, 'create_pay_link'),\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n createPayLinkAction,\n cleanPayLinkAction,\n resetActionStatusAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(CreatePaylink);\n","import * as React from 'react';\nimport { Button, ButtonGroup, Col, Input, InputGroup, InputGroupAddon, InputGroupText, Row } from 'reactstrap';\nimport Select, { OptionTypeBase } from 'react-select';\nimport DatePicker from '../DatePicker';\nimport { map, xor } from 'lodash';\nimport selectors from '../../store/selectors';\nimport { PAY_LINK_STATUS } from '../../apis';\nimport { DateTime } from 'luxon';\nconst calendarIcon = '/Calander---Grey.svg';\nconst searchIcon = '/Search-Icon.svg';\n\nexport interface Props {\n from?: DateTime;\n to?: DateTime;\n search?: string;\n onSearchChange?: (search: string) => void;\n payLinkStatuses?: PAY_LINK_STATUS[];\n onDateFromChange: (date: DateTime | null) => void;\n onDateToChange: (date: DateTime | null) => void;\n onPayLinkStatusChange?: (statuses: PAY_LINK_STATUS[]) => void;\n}\n\ninterface StatusOptionType extends OptionTypeBase {\n value: PAY_LINK_STATUS;\n label: string;\n}\n\nconst fromPayLinkStatusToOption = (status: PAY_LINK_STATUS): StatusOptionType => ({\n label: selectors.paylink.formatStatus(status),\n value: status,\n});\n\nexport default class ListPayLinkFilters extends React.Component {\n notCaptured = (): PAY_LINK_STATUS[] => [PAY_LINK_STATUS.CREATED];\n\n onStatusChange = (statuses: PAY_LINK_STATUS[]) => {\n if (this.props.onPayLinkStatusChange) {\n this.props.onPayLinkStatusChange(statuses);\n }\n };\n\n onSearchChange = (search: string) => {\n if (this.props.onSearchChange) {\n this.props.onSearchChange(search);\n }\n };\n\n render() {\n const { from, to, search, payLinkStatuses } = this.props;\n const dateIcon = ;\n const captured = xor(payLinkStatuses, [PAY_LINK_STATUS.USED]).length === 0;\n const uncaptured = xor(this.props.payLinkStatuses, this.notCaptured()).length === 0;\n const noStatus = payLinkStatuses && payLinkStatuses.length === 0;\n\n return (\n <>\n \n \n this.props.onDateFromChange(date ? DateTime.fromJSDate(date) : null)}\n maxDate={to?.toJSDate() || DateTime.now().toJSDate()}\n label={dateIcon}\n placeholderText={'FROM - Select from date'}\n className=\"form-control-lg\"\n />\n \n \n this.props.onDateToChange(date ? DateTime.fromJSDate(date) : null)}\n minDate={from?.toJSDate()}\n maxDate={DateTime.now().toJSDate()}\n label={dateIcon}\n placeholderText={'TO - Select to date'}\n className=\"form-control-lg\"\n />\n \n\n {this.props.onPayLinkStatusChange && this.props.payLinkStatuses && (\n <>\n \n \n this.onStatusChange([PAY_LINK_STATUS.USED])}\n className={`${captured ? 'btn-dark' : 'btn-gray-150'}`}\n size=\"lg\"\n >\n Captured\n \n this.onStatusChange(this.notCaptured())}\n className={`${uncaptured ? 'btn-dark' : 'btn-gray-150'}`}\n size=\"lg\"\n >\n Uncaptured\n \n this.onStatusChange([])}\n className={`${noStatus ? 'btn-dark' : 'btn-gray-150'}`}\n size=\"lg\"\n >\n All\n \n \n \n \n \n fromPayLinkStatusToOption(value),\n )}\n value={payLinkStatuses && payLinkStatuses.map(fromPayLinkStatusToOption)}\n isMulti={true}\n components={{ IndicatorSeparator: () => null }}\n className=\"react-select-custom\"\n onChange={(data) =>\n this.onStatusChange(map(data as StatusOptionType[], (el) => el.value))\n }\n />\n \n \n \n )}\n \n {this.props.onSearchChange && this.props.search && (\n \n \n \n \n \n ;\n \n \n this.onSearchChange(e.target.value)}\n placeholder={'Search by ID'}\n />\n \n \n \n )}\n \n );\n }\n}\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { PayLinkModel } from '../../apis';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport Table from 'reactstrap/lib/Table';\nimport selectors from '../../store/selectors';\nimport Pagination from '../../components/Pagination';\nimport PayLinkStatusBadge from './PayLinkStatusBadge';\nimport TableBody from '../TableBody';\nimport Alert from 'reactstrap/lib/Alert';\nconst chevronRight = '/Text-Link-Arrow.svg';\ninterface StateProps {\n payLinks: PayLinkModel[];\n payLinksTotal: number;\n payLinksSkipped: number;\n payLinksLimit: number;\n isLoading: boolean;\n timezone: string | null;\n}\n\ninterface OwnerProps {\n merchantId?: string;\n isLoading?: boolean;\n onRowClick: (payLink: PayLinkModel) => void;\n onGoTo: (page: number, skip: number) => void;\n noRowsComponent?: () => React.ReactNode;\n}\n\ntype Props = StateProps & OwnerProps;\n\nclass PayLinksTable extends React.Component {\n hasNoRows = () => this.props.payLinks.length === 0 && !this.props.isLoading;\n\n renderNoRows = () => {\n if (!this.hasNoRows()) return null;\n return (\n \n {this.props.noRowsComponent ? this.props.noRowsComponent() : 'There are no pay links to display'}\n \n );\n };\n\n render() {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n {this.props.payLinks.map((payLink, index) => (\n this.props.onRowClick(payLink)} key={index}>\n \n \n \n \n \n \n \n \n ))}\n \n
DateStatusAmountOrder IDCustomerID
\n {selectors.format.formatDateTimeMinutesWithYear(\n payLink.created_at,\n this.props.timezone,\n )}\n \n \n {selectors.format.formatAmount(payLink.order.total_amount)}{payLink.external_charge_id}{payLink.customer_id}{payLink.id}\n View\n \n \n \n
\n {this.renderNoRows()}\n this.props.onGoTo(skip / this.props.payLinksLimit + 1, skip)}\n disabled={this.props.isLoading}\n />\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (\n state,\n { isLoading = false },\n) => ({\n payLinks: state.payLinks.list.items,\n payLinksSkipped: state.payLinks.list.skipped,\n payLinksTotal: state.payLinks.list.total,\n payLinksLimit: state.payLinks.list.limit,\n isLoading: isActionRequesting(state.global.actions, 'fetch_pay_links') || isLoading,\n timezone: state.merchant.selected?.timezone || null,\n});\n\nexport default connect(mapStateToProps)(PayLinksTable);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport Layout from '../../components/Layout';\nimport { Button, CardBody, Input, InputGroup, InputGroupAddon, InputGroupText, TabContent, TabPane } from 'reactstrap';\nimport querystring from 'querystring';\nimport { DateTime } from 'luxon';\nimport { ListSegment, PAY_LINK_STATUS, PayLinkModel } from '../../apis';\nimport selectors from '../../store/selectors';\nimport { history } from '../../index';\nimport { FetchPayLinkActionOptions, fetchPayLinksAction } from '../../store/actions';\nimport { debounce } from 'lodash';\nimport ListPayLinkFilters from '../../components/payLinks/PayLinkListFilters';\nimport { RouteComponentProps } from 'react-router';\nimport { ApplicationState } from '../../store';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport PayLinksTable from '../../components/payLinks/PayLinksTable';\nimport { ROUTE } from '../../config';\nconst searchIcon = '/Search-Icon.svg';\nconst plusIcon = '/plus-svg.svg';\n\ninterface StateProps {\n payLinks: ListSegment;\n isRequestingPayLinks: boolean;\n}\ntype OwnProps = RouteComponentProps<{\n payLinkId: string;\n}>;\n\ninterface DispatchProps {\n fetchPayLinksAction: typeof fetchPayLinksAction;\n}\n\ntype Props = StateProps & DispatchProps & OwnProps;\n\ninterface State {\n search?: string;\n mobile?: string;\n email?: string;\n from?: DateTime;\n to?: DateTime;\n status: PAY_LINK_STATUS[];\n open: boolean;\n activeTab: number;\n}\n\nexport class Paylinks extends React.Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n search: undefined,\n mobile: undefined,\n email: undefined,\n from: undefined,\n to: undefined,\n status: [],\n open: false,\n activeTab: 1,\n };\n }\n componentDidMount = async () => {\n const search = querystring.parse(this.props.history.location.search.replace('?', ''));\n\n if (search.from) {\n await this.setState({\n activeTab: 2,\n from: DateTime.fromISO(search.from as string),\n });\n }\n if (search.to) {\n await this.setState({\n activeTab: 2,\n to: DateTime.fromISO(search.to as string),\n });\n }\n if (search.status) {\n await this.setState({\n activeTab: 2,\n status:\n typeof search.status === 'string'\n ? (search.status.split(',') as PAY_LINK_STATUS[])\n : (search.status as PAY_LINK_STATUS[]),\n });\n }\n\n if (search.mobile) {\n await this.setState({\n activeTab: 2,\n mobile: search.mobile as string,\n });\n }\n\n if (search.email) {\n await this.setState({\n activeTab: 2,\n email: search.email as string,\n });\n }\n\n if (search.search) {\n await this.setState({\n activeTab: 1,\n search: search.search as string,\n });\n }\n\n this.fetchPayLinks();\n };\n\n updateUrl = () => {\n const { from, to, status, search, mobile, email } = this.state;\n\n const query = querystring.stringify({\n from: from ? selectors.format.formatDateIso(from) : undefined,\n to: to ? selectors.format.formatDateIso(to) : undefined,\n mobile: mobile || undefined,\n email: email || undefined,\n status: status || undefined,\n search: search || undefined,\n });\n\n if (from || to || status || search || mobile || email) {\n this.props.history.push({\n pathname: this.props.history.location.pathname,\n search: `?${query}`,\n });\n }\n };\n\n onRowClicked = (data: PayLinkModel) => {\n history.push(selectors.global.payLinkRoute(data.id));\n };\n\n fetchPayLinks = (skip?: number) => {\n const { status, from, to, activeTab, search, mobile, email } = this.state;\n this.updateUrl();\n\n let options: FetchPayLinkActionOptions = {\n skip,\n };\n if (activeTab === 1) {\n options = {\n ...options,\n search,\n };\n } else {\n options = {\n ...options,\n status: status,\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n email: email,\n mobile: mobile,\n };\n }\n\n try {\n this.props.fetchPayLinksAction(options);\n } catch {\n // show error.\n }\n };\n\n fetchPayLinksDebounced = debounce(this.fetchPayLinks, 1000);\n\n toggleTab = (activeTab: number) => {\n this.setState({ activeTab }, () => this.fetchPayLinks());\n };\n\n onEmailChange = async (email: string) => {\n await this.setState({ email });\n this.fetchPayLinksDebounced();\n };\n\n onMobileChange = async (mobile: string) => {\n await this.setState({ mobile });\n this.fetchPayLinksDebounced();\n };\n\n onSearchChange = async (search: string) => {\n await this.setState({ search });\n this.fetchPayLinksDebounced();\n };\n\n handleDateFromChange = async (date: DateTime | null) => {\n await this.setState({ from: date || undefined });\n this.fetchPayLinksDebounced();\n };\n\n handleDateToChange = (date: DateTime | null) => {\n this.setState({ to: date || undefined });\n this.fetchPayLinksDebounced();\n };\n\n handleStatusesChange = (statuses: PAY_LINK_STATUS[]) => {\n this.setState({ status: statuses });\n this.fetchPayLinksDebounced();\n };\n\n renderSearch = () => {\n return (\n
\n \n this.onSearchChange(e.target.value)}\n placeholder={'Search by Order Id, Email or Mobile.'}\n />\n \n \n \n \n \n \n
\n );\n };\n\n renderAdvancedSearch = () => {\n return (\n \n \n \n );\n };\n render() {\n const isLoading = this.props.isRequestingPayLinks;\n const { activeTab } = this.state;\n\n return (\n \n
\n
\n
\n

Stronghold Direct

\n
\n
\n
\n \n
\n
\n
\n\n

Find a paylink

\n\n
\n
\n
\n this.toggleTab(1)}\n >\n Search\n \n
\n
\n this.toggleTab(2)}\n >\n Advanced - Filter\n \n
\n
\n
\n\n \n \n {this.renderSearch()}\n \n \n {this.renderAdvancedSearch()}\n \n \n\n this.fetchPayLinks(skip)}\n isLoading={isLoading}\n />\n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => {\n return {\n payLinks: state.payLinks.list,\n isRequestingPayLinks: isActionRequesting(state.global.actions, 'fetch_pay_links'),\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchPayLinksAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Paylinks);\n","import * as React from 'react';\nimport { CHARGE_STATUS } from '../../apis';\n\nexport interface Props {\n status: CHARGE_STATUS;\n}\n\nexport default function ChargeStatusBadge(props: Props) {\n const classes = ['text-capitalize', 'id-badge', 'font-weight-normal', 'py-1', 'text-dark'];\n\n return {props.status.replace(/_/g, ' ')};\n}\n","import * as React from 'react';\nimport {\n Button,\n Modal,\n ModalHeader,\n ModalBody,\n ModalFooter,\n Spinner,\n Input,\n Label,\n InputGroupText,\n InputGroupAddon,\n InputGroup,\n Row,\n Col,\n} from 'reactstrap';\nimport Alert from 'reactstrap/lib/Alert';\nimport { ChargeActionType } from './../charge/ChargeActions';\nimport { PaymentSourceActionType } from './../paymentSource/PaymentSourceActions';\nimport selectors from '../../store/selectors';\nimport { UsersActionType } from './../users/UsersActions';\nimport { DashboardUserPosted, UpdateAmountPosted } from '../../apis';\nimport { AutomatedReportsActionType } from './../reports/AutomatedReportsActions';\n\ntype Props = {\n showModal: boolean;\n dashBoardUser?: DashboardUserPosted;\n amount: number;\n toggle: () => void;\n onSubmit: () => void;\n onFormSubmit?: (data: UpdateAmountPosted) => void;\n type: ChargeActionType | PaymentSourceActionType | UsersActionType | AutomatedReportsActionType | string;\n errorCode: string | null;\n isLoading: boolean;\n onAmountChange?: (input: string) => void;\n updatedAmount?: string;\n};\n\ninterface State {\n captcha: string;\n}\n\ntype Field = 'captcha';\n\nexport default class ConfirmationModal extends React.Component {\n public state: State = {\n captcha: '',\n };\n\n onInputChange = async (field: string, label: Field) => {\n await this.setState({ [label]: field } as Pick);\n };\n\n formatErrorMessage = (errorCode: string) => {\n switch (errorCode) {\n case 'insufficient_balance':\n return 'There is insufficient funds to capture this charge.';\n case 'charge_blocked_outstanding_payment':\n return 'Unable to capture this charge due to an outstanding payment.';\n case 'charge_blocked_exceeds_limit':\n return 'Unable to capture this charge due to Stronghold-enforced spending limits.';\n case 'customer_blocked':\n return 'Unable to capture this charge due to a customer block.';\n case 'payment_source_blocked':\n return 'Unable to capture this charge due to a payment source block.';\n case 'role_removal_error':\n return 'Some of the roles failed to be removed. Please contact Stronghold support for assistance.';\n case 'card_charge_capture_error':\n case 'card_charge_retrieval_error':\n case 'card_charge_not_found':\n return 'Unable to capture this card charge. Please contact Stronghold support for assistance.';\n case 'payment_source_has_pending_charge':\n return 'Unable to unlink this payment source due to a recent change on an associated charge.';\n default:\n return 'An error has occured during the action.';\n }\n };\n\n formatModalTitle = (type: string | null) => {\n switch (type) {\n case 'refund':\n case 'cancel':\n case 'capture':\n case 'update-amount':\n return 'transaction';\n case 'add':\n return 'user';\n case 'Remove User':\n return '';\n case 'remove':\n return 'report';\n case 'unlink all':\n return 'payment sources';\n default:\n return 'payment source';\n }\n };\n\n renderUserDetails = () => {\n const { dashBoardUser } = this.props;\n if (dashBoardUser == null) return null;\n return (\n <>\n
\n \n \n
First name
\n
{dashBoardUser.first_name}
\n \n \n
Last name
\n
{dashBoardUser.last_name}
\n \n
\n \n \n
Email
\n
{dashBoardUser.email}
\n \n \n
Type
\n
{dashBoardUser.user_type}
\n \n
\n
\n \n );\n };\n\n renderCaptureCaptcha = () => {\n return (\n <>\n \n \n \n $\n \n this.onInputChange(e.target.value, 'captcha')}\n value={this.state.captcha}\n />\n \n \n );\n };\n\n /* eslint-disable @typescript-eslint/no-non-null-assertion */\n renderUpdateAmount = () => {\n return (\n this.props.onAmountChange && (\n <>\n \n \n \n $\n \n this.props.onAmountChange!(e.target.value)}\n value={this.props.updatedAmount}\n />\n \n \n )\n );\n };\n\n render() {\n const { showModal, type, errorCode, isLoading, amount } = this.props;\n const spinner = ;\n const title = this.formatModalTitle(type);\n\n const typeCapture = type === 'capture';\n const typeUpdateAmount = type === 'update-amount';\n const typeUser = type === 'add' || 'delete';\n const typeRemoveUser = type === 'Remove User';\n const formattedAmount = selectors.format.formatAmount(amount);\n const typeElement = {type};\n const header =\n type !== 'update-amount' ? (\n <>\n {typeElement} {title}\n \n ) : (\n 'Update Transaction Amount'\n );\n let message;\n switch (type) {\n case 'capture':\n message = (\n \n This will {type} the transaction for the amount of{' '}\n {formattedAmount}. Funds will be debited from the customer.\n \n );\n break;\n case 'update-amount':\n message = (\n \n This will update the amount for the transaction.\n \n );\n break;\n case 'refund':\n message = (\n \n Are you sure you want to {type} the transaction?\n
\n
\n Note: There may be a small delay for the update to reflect on the\n customer's account.\n
\n );\n break;\n case 'Remove User':\n message = (\n \n Are you sure you want to remove the admin user?\n \n );\n break;\n case 'unlink all':\n message = (\n \n Are you sure you want to unlink all payment sources?\n \n );\n break;\n default:\n message = (\n \n {' '}\n Are you sure you want to {type} the {title.toLowerCase()}?\n \n );\n }\n\n return (\n \n
\n \n {header}\n \n \n
{message}
\n {(typeUser || typeRemoveUser) && this.renderUserDetails()}\n {typeCapture && this.renderCaptureCaptcha()}\n {typeUpdateAmount && this.renderUpdateAmount()}\n {errorCode && {this.formatErrorMessage(errorCode)}}\n
\n \n this.props.onSubmit()}\n >\n {!isLoading ? 'Confirm' : spinner}\n \n \n Cancel\n \n \n
\n
\n );\n }\n}\n","import * as React from 'react';\nimport { ButtonProps, DropdownItem, DropdownMenu, DropdownToggle, Spinner, UncontrolledDropdown } from 'reactstrap';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { ApplicationState } from '../../store';\nimport { upsertTransactionAction } from '../../store/actions';\nimport {\n CHARGE_STATUS,\n ChargeModel,\n MerchantModel,\n ResponseError,\n UpdateAmountPosted,\n ApplicationRoleModel,\n} from '../../apis';\nimport selectors from '../../store/selectors';\nimport ConfirmationModal from '../modals/ConfirmationModal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEdit } from '@fortawesome/free-solid-svg-icons';\n\ninterface StateProps {\n errorMessage: ResponseError | null;\n selectedMerchant: MerchantModel | null;\n roles: ApplicationRoleModel[] | null;\n}\n\ninterface OwnProps extends ButtonProps {\n charge: ChargeModel;\n actionType?: ChargeActionType;\n}\n\ninterface DispatchProps {\n upsertTransactionAction: typeof upsertTransactionAction;\n}\n\ntype Props = StateProps & OwnProps & DispatchProps;\nexport type ChargeActionType = 'cancel' | 'refund' | 'capture' | 'update-amount' | null;\n\ninterface State {\n ready: boolean;\n showModal: boolean;\n action: ChargeActionType;\n amount: string;\n}\n\nclass ChargeActions extends React.Component {\n public state: State = {\n ready: true,\n showModal: false,\n action: null,\n amount: '',\n };\n\n onActionClick = async (action: ChargeActionType) => {\n if (action === null) return;\n await this.setState({ action });\n this.toggleModal();\n };\n\n onAmountChange = (amount: string) => {\n this.setState({ amount });\n };\n toggleModal = () => this.setState({ showModal: !this.state.showModal });\n\n onSubmit = async () => {\n this.setState({ ready: false });\n let formData = null;\n try {\n if (this.state.action === null) return;\n if (this.state.action === 'update-amount') {\n formData = { amount: this.state.amount } as UpdateAmountPosted;\n }\n await this.props.upsertTransactionAction(this.props.charge.id, this.state.action, formData);\n // clear amount\n this.setState({ amount: '' });\n this.toggleModal();\n } catch {\n this.setState({ ready: true });\n // Error\n }\n this.setState({ ready: true });\n };\n\n canUpdateAmount = () => {\n const { selectedMerchant, roles } = this.props;\n if (!selectedMerchant || !roles) return;\n return selectors.user.canUpdateAmount(roles);\n };\n\n disabledToolTipMessage = (action: ChargeActionType) => {\n let message;\n switch (action) {\n case 'cancel':\n message = 'Cancel only available for a Created or Authorized transaction.';\n break;\n case 'capture':\n message = 'Capture only available for a Authorized transaction.';\n break;\n case 'refund':\n message = 'Refund only available for a Captured transaction.';\n break;\n case 'update-amount':\n message = 'Updating amount only available for a Created or Authorized transaction.';\n break;\n default:\n break;\n }\n return message;\n };\n\n renderDropdownItem = (enabled: boolean, action: ChargeActionType) => {\n return (\n
\n this.onActionClick(action)}>\n
\n {action && selectors.format.formatHypenated(action)}\n
\n
{this.disabledToolTipMessage(action)}
\n
\n
\n );\n };\n\n renderDropDown = () => {\n const { charge } = this.props;\n const isLoading = !this.state.ready;\n const spinner = ;\n const enableCancel = charge.status === CHARGE_STATUS.CREATED || charge.status === CHARGE_STATUS.AUTHORIZED;\n const enableCapture = charge.status === CHARGE_STATUS.AUTHORIZED;\n const enableUpdateAmount =\n charge.status === CHARGE_STATUS.CREATED || charge.status === CHARGE_STATUS.AUTHORIZED;\n const enableRefund = charge.status === CHARGE_STATUS.CAPTURED;\n\n return (\n \n \n Select action {isLoading && spinner}\n \n \n {this.renderDropdownItem(enableCancel, 'cancel')}\n {this.renderDropdownItem(enableCapture, 'capture')}\n {this.canUpdateAmount() && (\n <>\n {this.renderDropdownItem(enableUpdateAmount, 'update-amount')}\n \n \n )}\n {this.renderDropdownItem(enableRefund, 'refund')}\n \n \n );\n };\n\n renderSingleChargeAction = (type: ChargeActionType) => {\n const enableUpdateAmount =\n this.props.charge.status === CHARGE_STATUS.CREATED || this.props.charge.status === CHARGE_STATUS.AUTHORIZED;\n if (type === 'update-amount' && (!enableUpdateAmount || !this.canUpdateAmount())) return null;\n return (\n this.onActionClick(type)}\n />\n );\n };\n\n render() {\n const { charge, errorMessage, actionType } = this.props;\n\n const { showModal, action } = this.state;\n const isLoading = !this.state.ready;\n\n return (\n <>\n \n {!actionType ? this.renderDropDown() : this.renderSingleChargeAction(actionType)}\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n errorMessage: selectors.global.getResponseError(state.global.actions, 'upsert_charge'),\n roles: state.authentication.user.roles || null,\n selectedMerchant: state.merchant.selected,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n upsertTransactionAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(ChargeActions);\n","import * as React from 'react';\nimport { PaymentSourceModel } from '../../apis';\nimport PlaceholderLoader from '../PlaceholderLoader';\nimport { Link } from 'react-router-dom';\nimport selectors from '../../store/selectors';\nimport Table from 'reactstrap/lib/Table';\nimport Tooltip from '../Tooltip';\nconst chevronRight = '/Text-Link-Arrow.svg';\n\ninterface Props {\n paymentSource: PaymentSourceModel | null;\n}\n\nexport default function PaymentSourceDetails(props: Props) {\n const { paymentSource } = props;\n const isLoading = !paymentSource;\n return (\n
\n
\n
Payment source
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
Payment source typeLabel
\n \n {paymentSource && paymentSource.type}\n \n \n \n {paymentSource && paymentSource.label}{' '}\n \n \n \n \n Filter transactions by source\n \n \n \n \n \n
\n
\n\n \n \n {paymentSource && paymentSource.id}\n \n \n
\n );\n}\n","import * as React from 'react';\nimport { Row } from 'reactstrap';\nimport { ReturnModel } from '../../apis';\nimport Col from 'reactstrap/lib/Col';\nimport selectors from '../../store/selectors';\nimport Table from 'reactstrap/lib/Table';\nimport TableBody from '../TableBody';\n\ninterface Props {\n returnModel: ReturnModel;\n timezone: string | null;\n}\n\nexport default function ReturnDetails(props: Props) {\n const { returnModel, timezone } = props;\n\n if (!returnModel) return null;\n\n return (\n
\n
\n
\n
Return Details
\n
\n \n \n
\n
Charge Status
\n
{returnModel.charge_status.replace(/_/g, ' ')}
\n
\n \n \n
\n
Reason
\n
{returnModel.return_reason.replace(/_/g, ' ')}
\n
\n \n
\n {returnModel.events.length > 0 && (\n \n \n \n \n \n \n \n \n {returnModel.events.map((event, index) => (\n \n \n \n \n ))}\n \n
DateDescription
\n {selectors.format.formatDateTimeMinutesWithYear(event.created_at, timezone)}\n {event.description}
\n )}\n
\n );\n}\n","import * as React from 'react';\nimport { Row } from 'reactstrap';\nimport { TipModel } from '../../apis';\nimport Col from 'reactstrap/lib/Col';\nimport selectors from '../../store/selectors';\nimport ChargeStatusBadge from './ChargeStatusBadge';\nimport Tooltip from '../Tooltip';\n\ninterface Props {\n tipModel: TipModel;\n timezone: string | null;\n}\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nexport default function TipDetails(props: Props) {\n const { tipModel, timezone } = props;\n return (\n
\n
\n
Tip Details
\n
\n\n \n \n
\n

Amount

\n

\n {tipModel.amount && selectors.format.formatAmount(tipModel!.amount)}\n

\n
\n \n \n
\n
\n

Fee

\n
\n {tipModel.fee > 0 ? selectors.format.formatAmount(tipModel.fee) : '—'}\n
\n
\n
\n \n
\n \n \n
\n
Status
\n {tipModel && }\n
\n \n \n
\n
\n

Beneficiary Name

\n
{(tipModel && tipModel.beneficiary_name) || '—'}
\n
\n
\n \n \n {tipModel && (\n
\n \n

Point of Sale

\n \n
{(tipModel && tipModel.details.drawer_id) || '—'}
\n
\n \n
{(tipModel && tipModel.details.terminal_id) || '—'}
\n
\n
\n
\n )}\n \n \n \n \n
\n

Created at

\n
\n {selectors.format.formatDateTimeSecondsWithYear(tipModel.created_at, timezone) || '—'}\n
\n
\n \n \n
\n
\n

Authorized at

\n
\n {selectors.format.formatDateTimeSecondsWithYear(tipModel.authorized_at, timezone) ||\n '—'}\n
\n
\n
\n \n \n
\n
\n

Captured at

\n
\n <>\n {selectors.format.formatDateTimeSecondsWithYear(tipModel.captured_at, timezone) ||\n '—'}\n \n
\n
\n
\n \n
\n \n {tipModel && tipModel.id}\n \n \n );\n}\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport {\n fetchChargeAction,\n fetchTipAction,\n fetchReturnAction,\n fetchCustomerAction,\n fetchPaymentSourceAction,\n cleanPaymentSourceAction,\n cleanCustomersAction,\n fetchCreditsAction,\n fetchPromotionsAction,\n} from '../store/actions';\nimport { Row } from 'reactstrap';\nimport Layout, { LayoutBreadcrumbItem } from '../components/Layout';\nimport {\n CHARGE_STATUS,\n ChargeModel,\n CreditModel,\n CustomerModel,\n CustomizationType,\n PaymentSourceModel,\n PromotionModel,\n ReturnModel,\n} from '../apis';\nimport { ApplicationState } from '../store';\nimport selectors from '../store/selectors';\nimport { RouteComponentProps } from 'react-router';\nimport { ROUTE } from '../config';\nimport { isActionRequesting } from '../store/selectors/global';\nimport ChargeStatusBadge from '../components/charge/ChargeStatusBadge';\nimport ChargeActions from '../components/charge/ChargeActions';\nimport Col from 'reactstrap/lib/Col';\nimport CustomerDetails from '../components/customer/CustomerDetails';\nimport PlaceholderLoader from '../components/PlaceholderLoader';\nimport Tooltip from '../components/Tooltip';\nimport PaymentSourceDetails from '../components/paymentSource/PaymentSourceDetails';\nimport ReturnDetails from '../components/charge/ReturnDetails';\nimport TipDetails from '../components/charge/TipDetails';\nconst chevronRight = '/Text-Link-Arrow.svg';\n\ninterface StateProps {\n returns: ReturnModel | null;\n charge: ChargeModel | null;\n customer: CustomerModel | null;\n paymentSource: PaymentSourceModel | null;\n isLoading: boolean;\n customCustomerName: string | null;\n timezone: string | null;\n credit: CreditModel | null;\n promotion: PromotionModel | null;\n}\n\ntype OwnProps = RouteComponentProps<{\n transactionId: string;\n}>;\n\ninterface DispatchProps {\n fetchChargeAction: typeof fetchChargeAction;\n fetchReturnAction: typeof fetchReturnAction;\n fetchTipAction: typeof fetchTipAction;\n fetchCustomerAction: typeof fetchCustomerAction;\n fetchPaymentSourceAction: typeof fetchPaymentSourceAction;\n cleanPaymentSourceAction: typeof cleanPaymentSourceAction;\n cleanCustomersAction: typeof cleanCustomersAction;\n fetchCreditsAction: typeof fetchCreditsAction;\n fetchPromotionsAction: typeof fetchPromotionsAction;\n}\n\ntype Props = StateProps & DispatchProps & OwnProps;\n\nexport function getChargeStatusDescription(status?: CHARGE_STATUS): string {\n if (!status) return '';\n switch (status) {\n case CHARGE_STATUS.CREATED:\n return 'If using the checkout flow: Customer has clicked on the pay button, but the charge could not be authorized (usually due to an insufficient balance). If using the API directly, the integrator has created a charge.';\n case CHARGE_STATUS.AUTHORIZED:\n return 'Customer authorization for the created charge has been obtained and the available balance was checked at authorization time.';\n case CHARGE_STATUS.CAPTURED:\n return 'Customer authorization and bank details have been successfully captured and the available balance was checked at capture time. Captured charges can fail if the customer has insufficient funds and attempts to collect the funds are unsuccessful.';\n case CHARGE_STATUS.CANCELED:\n return 'The transaction has been created and the customer has linked a bank account, but the charge fails or is canceled and is never authorized or captured.';\n case CHARGE_STATUS.ATTEMPTING_COLLECTION:\n return 'Stronghold has already attempted to collect funds; however, the attempt was unsuccessful due to insufficient balances at the time of debit or other bank restrictions.';\n case CHARGE_STATUS.STOPPED_COLLECTION:\n return \"Results when the Stronghold support team stops the collection at the merchant's request. A merchant might decide to stop collection if they collected the funds due outside of Stronghold and thus want to prevent double collection.\";\n case CHARGE_STATUS.CAPTURE_FAILED:\n return 'Customer lacks sufficient funds for processing, and Stronghold’s attempts to collect funds have failed three times.';\n case CHARGE_STATUS.DISPUTED:\n return 'Customer has claimed that the charge is unauthorized.';\n case CHARGE_STATUS.REFUND_PENDING:\n return 'Merchant has initiated a refund to the customer for this order.';\n case CHARGE_STATUS.REFUNDED:\n return 'Refund has been settled to the customer.';\n default:\n return '';\n }\n}\n\nclass Transaction extends React.Component {\n componentDidMount = async () => {\n // Enable loading placeholders again by cleaning\n await this.props.cleanCustomersAction();\n await this.props.cleanPaymentSourceAction();\n\n try {\n await this.props.fetchChargeAction(this.props.match.params.transactionId);\n } catch {\n // Error happen, redirect\n this.props.history.push(ROUTE.TRANSACTIONS);\n return;\n }\n\n if (this.props.charge) {\n this.props.fetchCreditsAction({ originatedFromChargeId: [this.props.charge.id] });\n this.props.fetchPromotionsAction();\n this.props.fetchTipAction(this.props.charge.id);\n this.props.fetchReturnAction(this.props.charge.id);\n this.props.fetchCustomerAction(this.props.charge.customer_id);\n this.props.fetchPaymentSourceAction(this.props.charge.payment_source_id);\n }\n };\n\n render() {\n const { charge, customer, paymentSource, customCustomerName, timezone, returns, isLoading, credit, promotion } =\n this.props;\n\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.TRANSACTIONS,\n title: 'Transactions',\n },\n ];\n\n if (charge) {\n layoutBreadcrumbItems.push({\n href: selectors.global.transactionRoute(charge.id),\n title: charge.id.replace('charge_', ''),\n isId: true,\n });\n }\n\n const redeemed = credit?.redeemed ? ' (Redeemed)' : '';\n\n return (\n \n
\n
\n
\n \n

{charge && `${charge.id}`}

\n
\n
\n
\n\n
\n
\n

Transaction details

\n {charge && charge.external_id ? (\n
\n \n {charge.external_id}\n \n
\n ) : null}\n
\n
\n\n \n \n
\n

Amount

\n

\n \n {charge && selectors.format.formatAmount(charge.amount)}\n
\n {charge && }\n
\n
\n

\n
\n \n {charge && (\n \n
\n
\n

Fee

\n
\n \n {charge.fee > 0 ? selectors.format.formatAmount(charge.fee) : '—'}\n \n
\n
\n
\n \n )}\n {charge && (\n \n
\n
\n

Convenience fee

\n
\n \n {charge.merchant_convenience_fee > 0\n ? selectors.format.formatAmount(charge.merchant_convenience_fee)\n : '—'}\n \n
\n
\n
\n \n )}\n
\n \n {charge && (\n \n
\n
\n

Processing Fee

\n \n {charge.payment_processing_fee && charge.payment_processing_fee > 0\n ? selectors.format.formatAmount(charge.payment_processing_fee)\n : '—'}\n \n
\n
\n \n )}\n \n
\n

Status

\n \n \n {charge && }\n \n \n
\n \n \n
\n
\n

Statement reference

\n
\n \n {(charge && charge.statement_reference) || '—'}\n \n
\n
\n
\n \n
\n \n \n {charge && (\n
\n

Action

\n \n {charge && }\n \n
\n )}\n \n \n
\n

Created at

\n
\n {charge && (\n \n {selectors.format.formatDateTimeSecondsWithYear(\n charge.created_at,\n timezone,\n ) || '—'}\n \n )}\n
\n
\n \n \n
\n
\n

Authorized at

\n
\n \n {charge && (\n <>\n {selectors.format.formatDateTimeSecondsWithYear(\n charge.authorized_at,\n timezone,\n ) || '—'}\n \n )}\n \n
\n
\n
\n \n
\n \n \n
\n
\n

Captured at

\n
\n \n {charge && (\n <>\n {selectors.format.formatDateTimeSecondsWithYear(\n charge.captured_at,\n timezone,\n ) || '—'}\n \n )}\n \n
\n
\n
\n \n \n
\n
\n

Promotion

\n
\n \n \n {(promotion && promotion.name) || '—'}\n \n \n
\n
\n
\n \n \n
\n
\n

Promotional Credit

\n
\n \n \n {(credit && selectors.format.formatAmount(credit.amount)) || '—'}\n {redeemed}\n \n \n
\n
\n
\n \n
\n\n
\n
\n
Need help with this transaction?
\n \n Contact Support\n \n \n \n \n
\n
\n
\n
\n\n
\n {charge && charge.tip_model && (\n <>\n \n \n )}\n\n {returns && (\n <>\n \n \n )}\n\n {customer && (\n <>\n \n \n )}\n\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state, ownProps) => {\n const charge = state.charge.list.items.find((el) => el.id === ownProps.match.params.transactionId) || null;\n const customer = state.customer.list.items.find((el) => el.id === (charge && charge.customer_id)) || null;\n const returns = state.returns.arr.find((el) => el.charge_id === ownProps.match.params.transactionId) || null;\n\n // Find all credits created from this charge and sort by amount, we will display the highest value credit if there are multiple\n const transactionCredits =\n state.credits.list.items\n .filter((c) => c.originated_from_charge_id == charge?.id)\n .sort((a, b) => b.amount - a.amount) || null;\n\n const credit = transactionCredits ? transactionCredits[0] : null;\n\n return {\n returns,\n charge,\n customer,\n paymentSource: state.paymentSources.list.items.length > 0 ? state.paymentSources.list.items[0] : null,\n isLoading: isActionRequesting(state.global.actions, 'fetch_charge'),\n customCustomerName: selectors.customizations.getCustomization(state, CustomizationType.CustomerName),\n timezone: state.merchant.selected?.timezone || null,\n credit: credit,\n promotion: state.promotions.list.items.find((promotion) => credit?.promotion_id == promotion.id) || null,\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchChargeAction,\n fetchReturnAction,\n fetchTipAction,\n fetchCustomerAction,\n fetchPaymentSourceAction,\n cleanPaymentSourceAction,\n cleanCustomersAction,\n fetchCreditsAction,\n fetchPromotionsAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Transaction);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { ChargeModel, CreditModel } from '../../apis';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport Table from 'reactstrap/lib/Table';\nimport selectors from '../../store/selectors';\nimport Pagination from '../../components/Pagination';\nimport ChargeStatusBadge from './ChargeStatusBadge';\nimport TableBody from '../TableBody';\nimport Alert from 'reactstrap/lib/Alert';\nimport Tooltip from '../Tooltip';\nimport { getChargeStatusDescription } from '../../pages/Transaction';\nconst chevronRight = '/Text-Link-Arrow.svg';\n\ninterface StateProps {\n charges: ChargeModel[];\n chargesTotal: number;\n chargesSkipped: number;\n chargesLimit: number;\n isLoading: boolean;\n timezone: string | null;\n credits: CreditModel[];\n}\n\ninterface OwnerProps {\n title?: string;\n customerId?: string;\n isLoading?: boolean;\n onRowClick: (charge: ChargeModel) => void;\n onGoTo: (page: number, skip: number) => void;\n noRowsComponent?: () => React.ReactNode;\n}\n\ntype Props = StateProps & OwnerProps;\n\nclass ChargesTable extends React.Component {\n hasNoRows = () => this.props.charges.length === 0 && !this.props.isLoading;\n\n renderNoRows = () => {\n if (!this.hasNoRows()) return null;\n return (\n \n {this.props.noRowsComponent ? this.props.noRowsComponent() : 'There are no transactions to display'}\n \n );\n };\n\n render() {\n return (\n
\n {this.props.title && (\n
\n
\n

{this.props.title}

\n
\n
\n this.props.onGoTo(skip / this.props.chargesLimit + 1, skip)}\n disabled={this.props.isLoading}\n />\n
\n
\n )}\n \n \n \n \n \n \n \n \n \n \n \n \n {this.props.charges.map((charge, index) => (\n this.props.onRowClick(charge)}>\n \n \n \n \n \n \n \n ))}\n \n
DateStatusAmountExternal ID\n \n Promotion\n \n
\n {selectors.format.formatDateTimeMinutesWithYear(\n charge.created_at,\n this.props.timezone,\n )}\n \n \n \n \n {selectors.format.formatAmount(charge.amount)}{charge.external_id}\n {this.props.credits.some((c) => c.originated_from_charge_id == charge.id)\n ? 'Yes'\n : 'No'}\n \n View\n \n \n \n
\n {this.renderNoRows()}\n {!this.props.title && (\n this.props.onGoTo(skip / this.props.chargesLimit + 1, skip)}\n disabled={this.props.isLoading}\n />\n )}\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (\n state,\n { isLoading = false },\n) => ({\n charges: state.charge.list.items,\n chargesSkipped: state.charge.list.skipped,\n chargesTotal: state.charge.list.total,\n chargesLimit: state.charge.list.limit,\n isLoading: isActionRequesting(state.global.actions, 'fetch_charges') || isLoading,\n timezone: state.merchant.selected?.timezone || null,\n credits: state.credits.list.items,\n});\n\nexport default connect(mapStateToProps)(ChargesTable);\n","import * as React from 'react';\nimport {\n fetchChargesAction,\n FetchChargesActionOptions,\n fetchCreditsAction,\n fetchPromotionsAction,\n} from '../store/actions';\nimport { history } from '../index';\nimport Layout from '../components/Layout';\nimport { RouteComponentProps } from 'react-router';\nimport { CHARGE_STATUS, ChargeModel, downloadChargesReport } from '../apis';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEllipsisH, faInfoCircle } from '@fortawesome/free-solid-svg-icons';\nimport ChargesTable from '../components/charge/ChargesTable';\nimport selectors from '../store/selectors';\nimport DropdownToggle from 'reactstrap/lib/DropdownToggle';\nimport DropdownMenu from 'reactstrap/lib/DropdownMenu';\nimport DropdownItem from 'reactstrap/lib/DropdownItem';\nimport { Button, CardBody, Input, InputGroup, InputGroupAddon, InputGroupText, TabContent, TabPane } from 'reactstrap';\nimport 'react-datepicker/dist/react-datepicker.css';\nimport { debounce } from 'lodash';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport querystring from 'querystring';\nimport ListFilters, { DatePickerPlaceholders } from '../components/ListFilters';\nimport { DateTime } from 'luxon';\nimport Dropdown from 'reactstrap/lib/Dropdown';\nimport { ApplicationState } from '../store';\nimport Tooltip from '../components/Tooltip';\nconst searchIcon = '/Search-Icon.svg';\nconst reportIcon = '/report.svg';\n\ninterface DispatchProps {\n fetchChargesAction: typeof fetchChargesAction;\n fetchCreditsAction: typeof fetchCreditsAction;\n fetchPromotionsAction: typeof fetchPromotionsAction;\n}\n\ninterface StateProps {\n charges: ChargeModel[];\n chargesTotal: number;\n chargesSkipped: number;\n chargesLimit: number;\n}\n\ntype OwnProps = RouteComponentProps<{\n transactionId: string;\n}>;\n\ntype Props = DispatchProps & OwnProps & StateProps;\n\ninterface State {\n paymentSourceId?: string;\n from?: DateTime;\n to?: DateTime;\n status: CHARGE_STATUS[];\n open: boolean;\n search: string;\n activeTab: number;\n}\n\nconst datePickerPlaceholders: DatePickerPlaceholders = {\n from: 'FROM Created Date',\n to: 'TO Created Date',\n};\n\nclass Transactions extends React.Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n paymentSourceId: undefined,\n from: undefined,\n to: undefined,\n status: [],\n open: false,\n search: '',\n activeTab: 1,\n };\n }\n\n componentDidMount = async () => {\n const search = querystring.parse(this.props.history.location.search.replace('?', ''));\n\n if (search.search) {\n await this.setState({\n search: search.search as string,\n });\n }\n\n if (search.from) {\n await this.setState({\n activeTab: 2,\n from: DateTime.fromISO(search.from as string),\n });\n }\n if (search.to) {\n await this.setState({\n activeTab: 2,\n to: DateTime.fromISO(search.to as string),\n });\n }\n if (search.status) {\n await this.setState({\n activeTab: 2,\n status:\n typeof search.status === 'string'\n ? (search.status.split(',') as CHARGE_STATUS[])\n : (search.status as CHARGE_STATUS[]),\n });\n }\n\n if (search.paymentSourceId) {\n await this.setState({\n activeTab: 2,\n paymentSourceId: search.paymentSourceId as string,\n });\n }\n\n await this.fetchCharges();\n this.props.fetchPromotionsAction();\n };\n\n updateUrl = () => {\n const { from, to, status, search, paymentSourceId } = this.state;\n\n const query = querystring.stringify({\n from: from ? selectors.format.formatDateIso(from) : undefined,\n to: to ? selectors.format.formatDateIso(to) : undefined,\n paymentSourceId: paymentSourceId || undefined,\n status: status || undefined,\n search: search || undefined,\n });\n\n if (from || to || status.length > 0 || search || paymentSourceId) {\n this.props.history.push({\n pathname: this.props.history.location.pathname,\n search: `?${query}`,\n });\n }\n };\n\n handleDateFromChange = async (date: DateTime | null) => {\n await this.setState({ from: date || undefined });\n this.fetchChargesDebounced();\n };\n\n handleDateToChange = (date: DateTime | null) => {\n this.setState({ to: date || undefined });\n this.fetchChargesDebounced();\n };\n\n handleStatusesChange = (statuses: CHARGE_STATUS[]) => {\n this.setState({ status: statuses });\n this.fetchChargesDebounced();\n };\n\n onRowClicked = (data: ChargeModel) => {\n history.push(selectors.global.transactionRoute(data.id));\n };\n\n fetchCharges = async (skip?: number) => {\n const { status, from, to, search, activeTab, paymentSourceId } = this.state;\n this.updateUrl();\n\n let options: FetchChargesActionOptions = {\n skip,\n };\n if (activeTab === 1) {\n options = {\n ...options,\n search,\n };\n } else {\n options = {\n ...options,\n status: status,\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n paymentSourceId: paymentSourceId,\n };\n }\n\n await this.props.fetchChargesAction(options);\n this.props.fetchCreditsAction({ originatedFromChargeId: this.props.charges.map((c) => c.id) });\n };\n\n fetchChargesDebounced = debounce(this.fetchCharges, 1000);\n\n downloadChargesReport = () => {\n const { status, from, to } = this.state;\n\n downloadChargesReport({\n status: status,\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n });\n };\n\n onSearchChange = async (search: string) => {\n await this.setState({ search: search });\n this.fetchChargesDebounced();\n };\n\n onPaymentSourceChange = async (paymentSourceId: string) => {\n await this.setState({ paymentSourceId });\n this.fetchChargesDebounced();\n };\n\n toggleTab = (activeTab: number) => {\n this.setState({ activeTab }, () => this.fetchCharges());\n };\n\n renderSearch = () => {\n return (\n
\n \n \n \n \n this.onSearchChange(e.target.value)}\n placeholder={'Search by External ID'}\n />\n \n \n \n \n \n \n
\n );\n };\n\n renderAdvancedSearch = () => {\n return (\n \n \n \n );\n };\n\n render() {\n const { activeTab, open } = this.state;\n return (\n \n
\n
\n

Transactions

\n
\n this.setState({ open: !open })} direction=\"down\">\n \n \n \n \n this.downloadChargesReport()}\n className=\"d-flex justify-content-between align-items-center\"\n >\n
Download report
\n
\n \n
\n \n
\n
\n
\n
\n\n
\n
\n Search transactions by id, created date range, or status\n
\n
\n\n
\n
\n
\n
\n this.toggleTab(1)}\n >\n Search\n \n
\n
\n this.toggleTab(2)}\n >\n Advanced - Filter\n \n
\n
\n
\n \n \n {this.renderSearch()}\n \n \n {this.renderAdvancedSearch()}\n \n \n
\n this.fetchCharges(skip)} />\n
\n
\n );\n }\n}\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchChargesAction,\n fetchCreditsAction,\n fetchPromotionsAction,\n },\n dispatch,\n );\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n charges: state.charge.list.items,\n chargesSkipped: state.charge.list.skipped,\n chargesTotal: state.charge.list.total,\n chargesLimit: state.charge.list.limit,\n});\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Transactions);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchCustomersAction, FetchCustomersActionOptions } from '../store/actions';\nimport { ApplicationState } from '../store';\nimport Layout from '../components/Layout';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { Col, InputGroup, InputGroupAddon, InputGroupText, Row } from 'reactstrap';\nimport { debounce } from 'lodash';\nimport { CustomerModel, CustomizationType } from '../apis';\nimport selectors from '../store/selectors';\nimport Input from 'reactstrap/lib/Input';\nimport CustomersTable from '../components/customer/CustomersTable';\nimport { history } from '../index';\nimport querystring from 'querystring';\nimport InputMask from 'react-input-mask';\n\nconst searchIcon = '/Search-Icon.svg';\n\ninterface StateProps {\n customers: CustomerModel[];\n isLoading: boolean;\n customerName: string | null;\n}\n\ninterface DispatchProps {\n fetchCustomersAction: typeof fetchCustomersAction;\n}\n\ntype Props = StateProps & DispatchProps & RouteComponentProps;\n\ntype Field = 'firstName' | 'lastName' | 'email' | 'mobile';\n\ninterface State {\n firstName: string;\n lastName: string;\n email: string;\n mobile: string;\n open: boolean;\n}\n\nclass CustomersDashboard extends React.Component {\n state: State = {\n firstName: '',\n lastName: '',\n email: '',\n mobile: '',\n open: false,\n };\n\n componentDidMount = async () => {\n const search = querystring.parse(this.props.history.location.search.replace('?', ''));\n\n if (search.firstName) {\n await this.setState({\n firstName: (search.firstName as string) || '',\n });\n }\n\n this.fetchCustomers();\n };\n\n updateUrl = () => {\n const { firstName, lastName, email, mobile } = this.state;\n\n const query = querystring.stringify({\n firstName: firstName || undefined,\n lastName: lastName || undefined,\n email: email || undefined,\n mobile: selectors.format.formatMobile(mobile, true) || undefined,\n });\n\n if (firstName || lastName || email || mobile) {\n this.props.history.push({\n pathname: this.props.history.location.pathname,\n search: `?${query}`,\n });\n }\n };\n\n onRowClicked = (customer: CustomerModel) => {\n history.push(selectors.global.customerRoute(customer.id));\n };\n\n fetchCustomers = (skip?: number) => {\n const { firstName, lastName, mobile, email } = this.state;\n this.updateUrl();\n\n let options: FetchCustomersActionOptions = {\n skip,\n };\n options = {\n ...options,\n firstName: firstName || undefined,\n lastName: lastName || undefined,\n mobile: selectors.format.formatMobile(mobile, true) || undefined,\n email: email || undefined,\n };\n\n this.props.fetchCustomersAction(options);\n };\n\n fetchCustomersDebounced = debounce(this.fetchCustomers, 1000);\n\n onSearchChange = async (field: string, label: Field) => {\n await this.setState({ [label]: field } as Pick);\n if (field.length > 2 || !field) {\n this.fetchCustomersDebounced();\n }\n };\n\n render() {\n // Used for customization\n const { customerName } = this.props;\n const customerNamePlural = selectors.customizations.pluralize(customerName);\n\n const { firstName, lastName, mobile, email } = this.state;\n\n return (\n \n
\n

{customerNamePlural}

\n
\n
\n Search customers by name, mobile number or email\n
\n \n \n \n this.onSearchChange(e.target.value, 'firstName')}\n placeholder=\"First Name\"\n bsSize={'lg'}\n />\n \n \n \n \n \n \n \n \n \n this.onSearchChange(e.target.value, 'lastName')}\n placeholder=\"Last Name\"\n bsSize={'lg'}\n />\n \n \n \n \n \n \n \n \n \n \n \n this.onSearchChange(e.target.value, 'mobile')}\n data-sh=\"mobile-input\"\n />\n \n \n \n \n \n \n \n \n \n this.onSearchChange(e.target.value, 'email')}\n placeholder=\"Email\"\n bsSize={'lg'}\n />\n \n \n \n \n \n \n \n \n
\n\n this.fetchCustomers(skip)}\n isLoading={this.props.isLoading}\n />\n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n customers: state.customer.list.items,\n isLoading: selectors.global.isActionRequesting(state.global.actions, 'fetch_customers'),\n customerName: selectors.customizations.getCustomization(state, CustomizationType.CustomerName),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchCustomersAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(CustomersDashboard));\n","import * as React from 'react';\nimport { Button, ButtonProps } from 'reactstrap';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { ApplicationState } from '../../store';\nimport { deactivatePaymentSourceAction } from '../../store/actions';\nimport { PaymentSourceModel, ResponseError } from '../../apis';\nimport selectors from '../../store/selectors';\nimport ConfirmationModal from '../modals/ConfirmationModal';\n\ninterface StateProps {\n errorMessage: ResponseError | null;\n}\n\ninterface OwnProps extends ButtonProps {\n paymentSource: PaymentSourceModel;\n}\n\ninterface DispatchProps {\n deactivatePaymentSourceAction: typeof deactivatePaymentSourceAction;\n}\n\ntype Props = StateProps & OwnProps & DispatchProps;\nexport type PaymentSourceActionType = 'unlink' | 'link' | null;\n\ninterface State {\n ready: boolean;\n showModal: boolean;\n action: PaymentSourceActionType;\n}\n\nclass PaymentSourceActions extends React.Component {\n public state: State = {\n ready: true,\n showModal: false,\n action: null,\n };\n\n onActionClick = async (action: PaymentSourceActionType) => {\n if (action === null) return;\n await this.setState({ action });\n this.toggleModal();\n };\n\n toggleModal = () => this.setState({ showModal: !this.state.showModal });\n\n onSubmit = async () => {\n const { paymentSource } = this.props;\n this.setState({ ready: false });\n if (this.state.action === null) return;\n try {\n await this.props.deactivatePaymentSourceAction(paymentSource);\n this.toggleModal();\n } catch {\n this.setState({ ready: true });\n // Error\n }\n this.setState({ ready: true });\n };\n\n render() {\n const { paymentSource, errorMessage } = this.props;\n\n const { showModal, action } = this.state;\n const isLoading = !this.state.ready;\n\n return (\n <>\n \n {paymentSource.active ? (\n this.onActionClick('unlink')}\n >\n Unlink\n \n ) : (\n \n )}\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n errorMessage: selectors.global.getResponseError(state.global.actions, 'update_payment_source'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n deactivatePaymentSourceAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PaymentSourceActions);\n","import * as React from 'react';\nimport { Button } from 'reactstrap';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { deactivateAllPaymentSourcesAction } from '../../store/actions';\nimport { ResponseError } from '../../apis';\nimport { ApplicationState } from '../../store';\nimport selectors from '../../store/selectors';\nimport Loader from '../Loader';\nimport ConfirmationModal from '../modals/ConfirmationModal';\n\ninterface StateProps {\n isLoading: boolean;\n errorMessage: ResponseError | null;\n}\n\ninterface DispatchProps {\n deactivateAllPaymentSourcesAction: typeof deactivateAllPaymentSourcesAction;\n}\n\ninterface OwnProps {\n customerId: string;\n}\n\ntype Props = StateProps & DispatchProps & OwnProps;\n\ninterface State {\n ready: boolean;\n showModal: boolean;\n action: string | null;\n}\n\nclass UnlinkAllButton extends React.Component {\n public state: State = {\n ready: true,\n showModal: false,\n action: null,\n };\n\n onActionClick = async (action: string) => {\n if (action === null) return;\n await this.setState({ action });\n this.toggleModal();\n };\n\n toggleModal = () => this.setState({ showModal: !this.state.showModal });\n\n onSubmit = async () => {\n const { customerId } = this.props;\n this.setState({ ready: false });\n if (this.state.action === null) return;\n try {\n this.props.deactivateAllPaymentSourcesAction(customerId);\n this.toggleModal();\n } finally {\n this.setState({ ready: true });\n }\n };\n\n render() {\n const { errorMessage, isLoading } = this.props;\n const { showModal, action } = this.state;\n return (\n <>\n \n {errorMessage ? (\n \n ) : (\n this.onActionClick('unlink all')}\n >\n
{isLoading ? : `Unlink All`}
\n \n )}\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n errorMessage: selectors.global.getResponseError(state.global.actions, 'deactivate_all_payment_sources'),\n paymentSources: state.paymentSources,\n isLoading: selectors.global.isActionRequesting(state.global.actions, 'deactivate_all_payment_sources'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n deactivateAllPaymentSourcesAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UnlinkAllButton);\n","import * as React from 'react';\nimport { PaymentSourceModel } from '../../apis';\nimport TableBody from '../TableBody';\nimport Table from 'reactstrap/lib/Table';\nimport PaymentSourceActions from './PaymentSourceActions';\nimport { faCheckCircle, faMinusCircle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport Alert from 'reactstrap/lib/Alert';\nimport UnlinkAllButton from './UnlinkAllButton';\n\ninterface Props {\n paymentSources: PaymentSourceModel[] | null;\n customerId: string | null;\n isLoading: boolean;\n}\n\nfunction renderNoRows() {\n return (\n
\n There are no sources to display\n
\n );\n}\n\nexport default function PaymentSourceTable(props: Props) {\n const { customerId, isLoading, paymentSources } = props;\n const activeIcon = ;\n const unActiveIcon = ;\n const activeSources = paymentSources\n ? paymentSources.filter((s) => {\n return s.active;\n }).length > 0\n : false;\n\n return (\n
\n
\n

Payment sources

\n
\n\n \n \n \n \n \n \n \n \n \n \n {customerId &&\n paymentSources &&\n paymentSources.map((source, index) => (\n \n \n \n \n \n \n ))}\n \n
ActivePayment source typeLabel{customerId && activeSources ? : null}
{source.active ? activeIcon : unActiveIcon}\n {source && source.type}\n \n {source && source.label}\n \n \n
\n {customerId && paymentSources && paymentSources.length === 0 && renderNoRows()}\n
\n );\n}\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { CreditModel } from '../../apis';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport Table from 'reactstrap/lib/Table';\nimport Pagination from '../../components/Pagination';\nimport TableBody from '../TableBody';\nimport Alert from 'reactstrap/lib/Alert';\nimport selectors from '../../store/selectors';\ninterface StateProps {\n credits: CreditModel[];\n creditsTotal: number;\n creditsSkipped: number;\n creditsLimit: number;\n isLoading: boolean;\n timezone: string | null;\n}\n\ninterface OwnerProps {\n isLoading?: boolean;\n onOriginChargeClick: (credit: CreditModel) => void;\n onRedeemedChargeClick: (credit: CreditModel) => void;\n onFlexColumnClick: (credit: CreditModel) => void;\n onGoTo: (page: number, skip: number) => void;\n noRowsComponent?: () => React.ReactNode;\n showPromoColumn: boolean;\n}\n\ntype Props = StateProps & OwnerProps;\n\nclass CreditsTable extends React.Component {\n hasNoRows = () => this.props.credits.length === 0 && !this.props.isLoading;\n\n formatRedeemedDate = (credit: CreditModel) => {\n if (!credit.redeemed) {\n return 'Unredeemed';\n } else {\n // If the credit has been redeemed and updatedAt is null, it was redeemed at time of creation\n const redeemedDate = credit.updated_at ? credit.updated_at : credit.created_at;\n return selectors.format.formatDateTimeSecondsWithYear(redeemedDate, this.props.timezone);\n }\n };\n\n renderNoRows = () => {\n if (!this.hasNoRows()) return null;\n return (\n \n {this.props.noRowsComponent ? this.props.noRowsComponent() : 'There are no credits to display'}\n \n );\n };\n\n render() {\n const { timezone } = this.props;\n return (\n <>\n
\n

Promotional Credits

\n
\n \n \n \n \n \n \n {/*Fourth column flexes between promotion or customer depending which page it's displayed on*/}\n \n \n \n \n {this.props.credits.map((credit, index) => (\n \n \n \n credit.redeemed && this.props.onRedeemedChargeClick(credit)}\n key={index}\n >\n {this.formatRedeemedDate(credit)}\n \n \n \n ))}\n \n
AmountEarned OnRedeemed On{this.props.showPromoColumn ? 'Promotion' : 'Customer'}
{selectors.format.formatAmount(credit.amount)} this.props.onOriginChargeClick(credit)} key={index}>\n {selectors.format.formatDateTimeSecondsWithYear(credit.created_at, timezone)}\n this.props.onFlexColumnClick(credit)} key={index}>\n {this.props.showPromoColumn\n ? credit.promotion_id\n : credit.customer.individual.first_name.concat(\n ' ',\n credit.customer.individual.last_name,\n )}\n
\n {this.renderNoRows()}\n this.props.onGoTo(skip / this.props.creditsLimit + 1, skip)}\n disabled={this.props.isLoading}\n />\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (\n state,\n { isLoading = false },\n) => ({\n credits: state.credits.list.items,\n creditsSkipped: state.credits.list.skipped,\n creditsTotal: state.credits.list.total,\n creditsLimit: state.credits.list.limit,\n isLoading: isActionRequesting(state.global.actions, 'fetch_credits') || isLoading,\n timezone: state.merchant.selected?.timezone || null,\n});\n\nexport default connect(mapStateToProps)(CreditsTable);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport {\n fetchChargesAction,\n fetchCreditsAction,\n fetchCustomerAction,\n fetchPaymentSourcesAction,\n} from '../store/actions';\nimport { ApplicationState } from '../store';\nimport Layout, { LayoutBreadcrumbItem } from '../components/Layout';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { isActionRequesting } from '../store/selectors/global';\nimport { ChargeModel, CreditModel, CustomerModel, CustomizationType, PaymentSourceModel } from '../apis';\nimport { history } from '../index';\nimport { ROUTE } from '../config';\nimport ChargesTable from '../components/charge/ChargesTable';\nimport CustomerDetails from '../components/customer/CustomerDetails';\nimport selectors from '../store/selectors';\nimport PaymentSourceTable from '../components/paymentSource/PaymentSourceTable';\nimport { uniqBy } from 'lodash';\nimport CreditsTable from '../components/credits/CreditsTable';\n\ninterface StateProps {\n customer: CustomerModel | null;\n isRequestingCharges: boolean;\n isRequestingPaymentSources: boolean;\n customerName: string | null;\n paymentSources: PaymentSourceModel[] | null;\n timezone: string | null;\n}\n\ntype OwnProps = RouteComponentProps<{\n customerId: string;\n}>;\n\ninterface DispatchProps {\n fetchCustomerAction: typeof fetchCustomerAction;\n fetchChargesAction: typeof fetchChargesAction;\n fetchPaymentSourcesAction: typeof fetchPaymentSourcesAction;\n fetchCreditsAction: typeof fetchCreditsAction;\n}\n\ntype Props = StateProps & OwnProps & DispatchProps;\n\ninterface State {\n open: boolean;\n}\n\nclass Customer extends React.Component {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n open: false,\n };\n }\n\n componentDidMount = async () => {\n await this.props.fetchCustomerAction(this.props.match.params.customerId);\n\n if (!this.props.customer) {\n this.props.history.push(ROUTE.CUSTOMERS);\n }\n\n await this.props.fetchPaymentSourcesAction({ customerId: this.props.match.params.customerId });\n await this.props.fetchChargesAction({ customerId: this.props.match.params.customerId });\n await this.props.fetchCreditsAction({ customerId: this.props.match.params.customerId });\n };\n\n onChargeRowClicked = (data: ChargeModel) => {\n history.push(`${ROUTE.TRANSACTIONS}/${data.id}`);\n };\n\n onCreditOriginChargeIdClicked = (credit: CreditModel) => {\n history.push(`${ROUTE.TRANSACTIONS}/${credit.originated_from_charge_id}`);\n };\n\n onCreditRedeemedChargeIdClicked = (credit: CreditModel) => {\n history.push(`${ROUTE.TRANSACTIONS}/${credit.redeemed_with_charge_id}`);\n };\n\n onCreditPromotionIdClicked = (credit: CreditModel) => {\n history.push(`${ROUTE.PROMOTIONS}/${credit.promotion_id}`);\n };\n\n fetchCharges = (skip?: number) => {\n const { customer } = this.props;\n this.props.fetchChargesAction({\n skip,\n customerId: customer ? customer.id : undefined,\n });\n };\n\n fetchCredits = (skip?: number) => {\n const { customer } = this.props;\n this.props.fetchCreditsAction({\n skip,\n customerId: customer ? customer.id : undefined,\n });\n };\n\n render() {\n const { customer, customerName, paymentSources } = this.props;\n const customerNamePlural = selectors.customizations.pluralize(customerName);\n\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.CUSTOMERS,\n title: customerNamePlural || '',\n },\n ];\n\n if (customer) {\n layoutBreadcrumbItems.push({\n href: selectors.global.customerRoute(customer.id),\n title: selectors.format.formatCustomerName(customer),\n });\n }\n\n const customerId = (customer && customer.id) || undefined;\n const isLoading = this.props.isRequestingCharges || this.props.isRequestingPaymentSources || !customer;\n\n return (\n \n
\n \n\n this.fetchCharges(skip)}\n customerId={customerId}\n isLoading={isLoading}\n />\n\n this.fetchCredits(skip)}\n isLoading={isLoading}\n showPromoColumn={true}\n />\n\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state, ownProps) => ({\n customer: state.customer.list.items.find((value) => value.id === ownProps.match.params.customerId) || null,\n paymentSources: uniqBy(state.paymentSources.list.items, (el) => el.unique_hash),\n isRequestingCharges: isActionRequesting(state.global.actions, 'fetch_customer'),\n isRequestingPaymentSources: isActionRequesting(state.global.actions, 'fetch_payment_sources'),\n customerName: selectors.customizations.getCustomization(state, CustomizationType.CustomerName),\n timezone: state.merchant.selected?.timezone || null,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchCustomerAction,\n fetchChargesAction,\n fetchPaymentSourcesAction,\n fetchCreditsAction,\n },\n dispatch,\n );\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(Customer));\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchBalanceTransfersAction } from '../../store/actions';\nimport { ApplicationState } from '../../store';\nimport { BalanceTransferModel } from '../../apis';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport Pagination from '../../components/Pagination';\nimport Alert from 'reactstrap/lib/Alert';\nimport selectors from '../../store/selectors';\nimport * as api from '../../apis';\nimport { Button, Row } from 'reactstrap';\nimport { history } from '../../index';\nimport Tooltip from '../Tooltip';\nconst chevronRight = '/Text-Link-Arrow.svg';\n\ninterface StateProps {\n balanceTransfers: BalanceTransferModel[];\n balanceTransfersTotal: number;\n balanceTransfersSkipped: number;\n balanceTransfersLimit: number;\n isRequesting: boolean;\n timezone: string | null;\n}\n\ninterface OwnerProps {\n isLoading?: boolean;\n settlementId: string;\n noRowsComponent?: () => React.ReactNode;\n}\n\ninterface State {\n redirectingTipRoute: boolean;\n}\n\ninterface DispatchProps {\n fetchBalanceTransfersAction: typeof fetchBalanceTransfersAction;\n}\n\ntype Props = StateProps & OwnerProps & DispatchProps;\n\nclass BalanceTransfersTable extends React.Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n redirectingTipRoute: false,\n };\n }\n\n componentDidMount(): void {\n if (!this.props.isLoading) {\n this.props.fetchBalanceTransfersAction({ settlementId: this.props.settlementId, limit: 4 });\n }\n }\n\n componentDidUpdate(prevProps: Readonly): void {\n if (!this.props.isLoading && prevProps.isLoading) {\n this.props.fetchBalanceTransfersAction({ settlementId: this.props.settlementId, limit: 4 });\n }\n }\n\n renderNoRows = () => {\n if (this.props.balanceTransfers.length !== 0 || this.props.isRequesting) return null;\n return (\n \n {this.props.noRowsComponent ? this.props.noRowsComponent() : 'There are no transfers to display'}\n \n );\n };\n\n tipChargeRoute = async (tipId: string) => {\n this.setState({ redirectingTipRoute: true });\n const tip = await api.getTip(tipId);\n if (history && tip) {\n history.push(selectors.global.transactionRoute(tip.charge_id));\n }\n };\n\n transactionLink = (balanceTransfer: BalanceTransferModel) => {\n switch (balanceTransfer.type) {\n case 'charge_settlement':\n case 'charge_reversal':\n return (\n \n history.push(selectors.global.transactionRoute(balanceTransfer.associated_with) || '')\n }\n >\n
\n View details\n \n
\n \n );\n case 'tip_settlement':\n case 'tip_reversal':\n return (\n this.tipChargeRoute(balanceTransfer.associated_with)}\n disabled={this.state.redirectingTipRoute}\n >\n \n {this.state.redirectingTipRoute ? 'Redirecting..' : 'View Details'}{' '}\n \n \n \n \n \n );\n case 'adjustment':\n case 'merchant_financing_disbursement':\n case 'merchant_financing_repayment':\n default:\n return '—';\n }\n };\n\n renderLoadingPlaceholder = () => {\n return (\n <>\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n \n );\n };\n\n renderTransfer = (balanceTransfer: BalanceTransferModel) => {\n return (\n
\n
\n
\n
Type
\n
\n \n {balanceTransfer.type.replace(/_/g, ' ')}\n \n
\n
\n
\n
Total
\n
{selectors.format.formatAmount(balanceTransfer.gross_amount)}
\n
\n
\n
Net
\n
{selectors.format.formatAmount(balanceTransfer.net_amount)}
\n
\n
\n
Capture date
\n
\n {(balanceTransfer.captured_at &&\n selectors.format.formatDate(balanceTransfer.captured_at, this.props.timezone)) ||\n '—'}\n
\n
\n
\n
\n
\n \n {balanceTransfer && balanceTransfer.associated_with}\n \n
\n {(balanceTransfer && balanceTransfer.external_associated_with && (\n
\n \n {balanceTransfer.external_associated_with}\n \n
\n )) ||\n '—'}\n
\n
\n {this.transactionLink(balanceTransfer) !== '—' && (\n
{this.transactionLink(balanceTransfer)}
\n )}\n
\n
\n );\n };\n\n render() {\n return (\n
\n
\n

Balance Transfers

\n
\n \n {this.props.isRequesting && this.renderLoadingPlaceholder()}\n {!this.props.isRequesting &&\n this.props.balanceTransfers.map((balanceTransfer, index) => (\n
\n {this.renderTransfer(balanceTransfer)}\n
\n ))}\n
\n {this.renderNoRows()}\n \n this.props.fetchBalanceTransfersAction({\n skip,\n settlementId: this.props.settlementId,\n limit: 4,\n })\n }\n disabled={this.props.isRequesting}\n />\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (\n state,\n { isLoading = false },\n) => ({\n balanceTransfers: state.balanceTransfer.list.items,\n balanceTransfersSkipped: state.balanceTransfer.list.skipped,\n balanceTransfersTotal: state.balanceTransfer.list.total,\n balanceTransfersLimit: state.balanceTransfer.list.limit,\n isRequesting: isActionRequesting(state.global.actions, 'fetch_balance_transfers') || isLoading,\n timezone: state.merchant.selected?.timezone || null,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchBalanceTransfersAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BalanceTransfersTable);\n","import * as React from 'react';\nimport { BalanceTransferSummary, GrossNetFeeAmount } from '../../apis';\nimport selectors from '../../store/selectors';\nimport Table from 'reactstrap/lib/Table';\nimport TableBody from '../TableBody';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchBalanceTransferSummaryAction } from '../../store/actions';\nimport Alert from 'reactstrap/lib/Alert';\n\ninterface OwnerProps {\n settlementId: string;\n isLoading?: boolean;\n}\n\ninterface StateProps {\n balanceTransferSummary: BalanceTransferSummary | null;\n isRequesting: boolean;\n}\n\ninterface DispatchProps {\n fetchBalanceTransferSummaryAction: typeof fetchBalanceTransferSummaryAction;\n}\n\ntype Props = StateProps & DispatchProps & OwnerProps;\n\nclass BalanceTransfersSummary extends React.Component {\n componentDidMount = async () => {\n if (!this.props.isLoading) {\n this.props.fetchBalanceTransferSummaryAction({ settlementId: this.props.settlementId });\n }\n };\n\n componentDidUpdate(prevProps: Readonly): void {\n if (!this.props.isLoading && prevProps.isLoading) {\n this.props.fetchBalanceTransferSummaryAction({ settlementId: this.props.settlementId });\n }\n }\n\n renderRow = (data: GrossNetFeeAmount, label: string) => {\n return (\n \n \n {label}\n \n \n
\n {(data && selectors.format.formatAmount(data.gross)) || '-'}\n
\n \n \n
\n {(data && selectors.format.formatAmount(data.net)) || '—'}\n
\n \n \n
\n {(data && selectors.format.formatAmount(data.fee)) || '—'}\n
\n \n \n );\n };\n\n renderNoRows = () => {\n if (this.props.balanceTransferSummary !== null || this.props.isRequesting) return null;\n return There is no Summary to to display;\n };\n\n render() {\n const { balanceTransferSummary } = this.props;\n const isLoading = this.props.isRequesting;\n\n return (\n
\n
\n

Balance Transfer Summary

\n
\n \n \n \n \n \n \n \n \n \n \n {balanceTransferSummary && (\n <>\n {balanceTransferSummary.charge_settlement_amount &&\n this.renderRow(\n balanceTransferSummary.charge_settlement_amount,\n 'Charge Settlement',\n )}\n {balanceTransferSummary.tip_settlement_amount &&\n this.renderRow(balanceTransferSummary.tip_settlement_amount, 'Tip Settlement')}\n {balanceTransferSummary.charge_collection_settlement_amount &&\n this.renderRow(\n balanceTransferSummary.charge_collection_settlement_amount,\n 'Charge Collection',\n )}\n {balanceTransferSummary.tip_collection_settlement_amount &&\n this.renderRow(\n balanceTransferSummary.tip_collection_settlement_amount,\n 'Tip Collection',\n )}\n {balanceTransferSummary.promotional_credit_reversal_amount &&\n this.renderRow(\n balanceTransferSummary.promotional_credit_reversal_amount,\n 'Promotional Credit Reversal',\n )}\n {balanceTransferSummary.charge_reversal_amount &&\n this.renderRow(balanceTransferSummary.charge_reversal_amount, 'Charge Reversal')}\n {balanceTransferSummary.tip_reversal_amount &&\n this.renderRow(balanceTransferSummary.tip_reversal_amount, 'Tip Reversal')}\n {balanceTransferSummary.adjustment_amount &&\n this.renderRow(balanceTransferSummary.adjustment_amount, 'Adjustment')}\n {balanceTransferSummary.promotional_credit_settlement_amount &&\n this.renderRow(\n balanceTransferSummary.promotional_credit_settlement_amount,\n 'Promotional Credit Redeemed',\n )}\n \n )}\n \n
TypeGrossNetFee
\n {this.renderNoRows()}\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (\n state,\n { isLoading = false },\n) => ({\n balanceTransferSummary: state.balanceTransfer.summary,\n isRequesting: isActionRequesting(state.global.actions, 'fetch_balance_transfers_summary') || isLoading,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchBalanceTransferSummaryAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(BalanceTransfersSummary);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchChargesAction, fetchSettlementAction } from '../store/actions';\nimport Layout from '../components/Layout';\nimport { Row } from 'reactstrap';\nimport selectors from '../store/selectors';\nimport { downloadSettlementDetailsReportById, SettlementModel } from '../apis';\nimport { ROUTE } from '../config';\nimport { RouteComponentProps } from 'react-router';\nimport { ApplicationState } from '../store';\nimport { isActionRequesting } from '../store/selectors/global';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faEllipsisH } from '@fortawesome/free-solid-svg-icons';\nimport Col from 'reactstrap/lib/Col';\nimport PlaceholderLoader from '../components/PlaceholderLoader';\nimport BalanceTransfersTable from '../components/balanceTransfer/BalanceTransfersTable';\nimport DropdownToggle from 'reactstrap/lib/DropdownToggle';\nimport DropdownMenu from 'reactstrap/lib/DropdownMenu';\nimport DropdownItem from 'reactstrap/lib/DropdownItem';\nimport Dropdown from 'reactstrap/lib/Dropdown';\nimport BalanceTransfersSummary from '../components/balanceTransfer/BalanceTransfersSummary';\nconst reportIcon = '/report.svg';\n\ninterface StateProps {\n settlement: SettlementModel | null;\n isLoading: boolean;\n isRequestingCharges: boolean;\n timezone: string | null;\n}\n\ntype OwnProps = RouteComponentProps<{\n settlementId: string;\n}>;\n\ninterface DispatchProps {\n fetchSettlementAction: typeof fetchSettlementAction;\n fetchChargesAction: typeof fetchChargesAction;\n}\n\ntype Props = OwnProps & StateProps & DispatchProps;\n\ninterface State {\n open: boolean;\n}\n\nexport class Settlement extends React.Component {\n constructor(props: Props) {\n super(props);\n\n this.state = {\n open: false,\n };\n }\n\n componentDidMount = async () => {\n try {\n await this.props.fetchSettlementAction(this.props.match.params.settlementId);\n } catch {\n // Error happen, redirect\n this.props.history.push(ROUTE.SETTLEMENTS);\n return;\n }\n };\n\n render() {\n const { settlement, isLoading } = this.props;\n return (\n \n
\n
\n
\n
\n \n

{settlement && `${settlement.id}`}

\n
\n
\n
\n this.setState({ open: !this.state.open })}\n direction=\"down\"\n >\n \n \n \n \n \n downloadSettlementDetailsReportById((settlement && settlement.id) || '')\n }\n className=\"d-flex justify-content-between align-items-center\"\n >\n
Download report
\n
\n \n
\n \n
\n \n
\n
\n\n
\n

Settlement details

\n
\n
\n \n \n
\n

Net amount

\n

\n \n {settlement && selectors.format.formatAmount(settlement.net_amount)}\n \n

\n
\n \n \n
\n

Gross Amount

\n
\n \n {settlement && settlement.gross_amount > 0\n ? selectors.format.formatAmount(settlement.gross_amount)\n : '—'}\n \n
\n
\n \n \n
\n

Date

\n
\n \n {(settlement &&\n selectors.format.formatDate(settlement.date, this.props.timezone)) ||\n '—'}\n \n
\n
\n \n
\n \n \n
\n
\n

Description

\n \n {settlement && (\n
{settlement.description || '—'}
\n )}\n
\n
\n
\n \n
\n
\n\n
\n \n
\n\n \n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state, ownProps) => {\n const settlement = state.settlement.list.items.find((el) => el.id === ownProps.match.params.settlementId) || null;\n return {\n settlement,\n isLoading: isActionRequesting(state.global.actions, 'fetch_settlement'),\n isRequestingCharges: isActionRequesting(state.global.actions, 'fetch_charges'),\n timezone: state.merchant.selected?.timezone ?? null,\n };\n};\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchSettlementAction,\n fetchChargesAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Settlement);\n","import * as React from 'react';\nimport { Button, ButtonProps } from 'reactstrap';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { ApplicationState } from '../../store';\nimport { ResponseError } from '../../apis';\nimport selectors from '../../store/selectors';\nimport ConfirmationModal from '../modals/ConfirmationModal';\nimport { deleteAutomatedMailingReportAction } from '../../store/actions';\n\nexport type AutomatedReportsActionType = 'remove' | null;\n\ninterface StateProps {\n errorMessage: ResponseError | null;\n}\n\ninterface OwnProps extends ButtonProps {\n reportId: string;\n disabled?: boolean;\n action: AutomatedReportsActionType;\n size?: string;\n className?: string;\n onSubmitCallback?: () => void;\n}\n\ninterface DispatchProps {\n deleteAutomatedMailingReportAction: typeof deleteAutomatedMailingReportAction;\n}\n\ntype Props = StateProps & OwnProps & DispatchProps;\n\ninterface State {\n ready: boolean;\n showModal: boolean;\n action: AutomatedReportsActionType;\n}\n\nclass AutomatedReportsActions extends React.Component {\n public state: State = {\n ready: true,\n showModal: false,\n action: null,\n };\n\n onActionClick = async (action: AutomatedReportsActionType) => {\n if (action === null) return;\n await this.setState({ action });\n this.toggleModal();\n };\n\n toggleModal = () => this.setState({ showModal: !this.state.showModal });\n\n onSubmit = async () => {\n const { reportId } = this.props;\n this.setState({ ready: false });\n if (this.state.action === null) return;\n try {\n switch (this.state.action) {\n case 'remove':\n if (reportId) {\n await this.props.deleteAutomatedMailingReportAction(reportId);\n this.toggleModal();\n }\n break;\n default:\n break;\n }\n } catch {\n // Error\n }\n this.setState({ ready: true });\n };\n\n render() {\n const { errorMessage, action, disabled, className, size } = this.props;\n const { showModal, ready } = this.state;\n const isLoading = !ready;\n\n return (\n <>\n \n this.onActionClick(action)}\n >\n {action}\n \n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n errorMessage: selectors.global.getResponseError(state.global.actions, 'remove_automated_mailing_report'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n deleteAutomatedMailingReportAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AutomatedReportsActions);\n","import * as React from 'react';\nimport { AutomatedMailingReportModel } from '../../apis';\nimport TableBody from '../TableBody';\nimport Table from 'reactstrap/lib/Table';\nimport Alert from 'reactstrap/lib/Alert';\nimport AutomatedReportsActions from './AutomatedReportsActions';\n\ninterface Props {\n automatedReports: AutomatedMailingReportModel[] | null;\n isLoading: boolean;\n}\n\nexport default function AutomatedReportsTable(props: Props) {\n const { isLoading, automatedReports } = props;\n\n const renderNoRows = () => {\n if (props.automatedReports && props.automatedReports.length > 0) return null;\n return (\n \n There are no automated reports to display\n \n );\n };\n return (\n <>\n {automatedReports && (\n \n \n \n \n \n \n \n \n \n \n {automatedReports.map((report, index) => (\n \n \n \n \n \n \n ))}\n \n
EmailIntervalType
{report && report.email}{report && report.interval}\n \n {report && report.type}\n \n \n \n
\n )}\n {!isLoading && renderNoRows()}\n \n );\n}\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport Layout from '../../components/Layout';\nimport { ROUTE } from '../../config';\nimport ToggleSplit from '../../components/split/ToggleSplit';\nimport { SPLIT_FLAG } from '../../store/types';\nimport { Button, Row } from 'reactstrap';\nimport TileLink from '../../components/launchpad/TileLink';\nimport { history } from '../../index';\nimport AutomatedReportsTable from '../../components/reports/AutomatedReportsTable';\nimport { ApplicationState } from '../../store';\nimport selectors from '../../store/selectors';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport {\n fetchAutomatedMailingReportsAction,\n removeAutomatedMailingReportAction,\n resetActionStatusAction,\n} from '../../store/actions';\nimport { AutomatedMailingReportModel, ResponseError } from '../../apis';\nimport { RouteComponentProps } from 'react-router';\nconst plusIcon = '/plus-svg.svg';\n\ninterface StateProps {\n automatedReports: AutomatedMailingReportModel[];\n isLoading: boolean;\n error: ResponseError | null;\n}\n\ninterface DispatchProps {\n fetchAutomatedMailingReportsAction: typeof fetchAutomatedMailingReportsAction;\n removeAutomatedMailingReportAction: typeof removeAutomatedMailingReportAction;\n resetActionStatusAction: typeof resetActionStatusAction;\n}\n\ntype OwnProps = RouteComponentProps;\n\ntype Props = StateProps & OwnProps & DispatchProps;\n\nclass Reports extends React.Component {\n constructor(props: Props) {\n super(props);\n }\n\n componentDidMount = async () => {\n try {\n if (!this.props.isLoading) {\n await this.props.fetchAutomatedMailingReportsAction();\n }\n } catch {\n // throw error\n }\n };\n\n onSubmit = async (automatedMailingReportId: string) => {\n await this.props.resetActionStatusAction('remove_automated_mailing_report');\n\n try {\n await this.props.removeAutomatedMailingReportAction(automatedMailingReportId);\n } catch {\n // show error\n }\n };\n\n formatErrorMessage = (errorCode: string) => {\n switch (errorCode) {\n case 'invalid_request_error':\n return `Unable to remove the automated mailing report.`;\n default:\n return 'An error has occured during the action.';\n }\n };\n\n render() {\n const { automatedReports, isLoading } = this.props;\n return (\n \n
\n
\n

Reports

\n
\n\n
\n

Financial report

\n \n \n
\n \n
\n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n\n
\n
\n

Your automated mailing reports

\n
\n
\n history.push(ROUTE.REPORTS_AUTOMATED_MAILING)}\n >\n
\n \n Create automated mailing\n
\n \n
\n
\n\n \n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n automatedReports: state.reports.automatedMailing.arr || [],\n error: selectors.global.getResponseError(state.global.actions, 'remove_automated_mailing_report'),\n isLoading:\n isActionRequesting(state.global.actions, 'remove_automated_mailing_report') ||\n isActionRequesting(state.global.actions, 'fetch_automated_mailing_report'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchAutomatedMailingReportsAction,\n removeAutomatedMailingReportAction,\n resetActionStatusAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Reports);\n","import { Button, Row } from 'reactstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCaretLeft, faCaretRight } from '@fortawesome/free-solid-svg-icons';\nimport { numberRange } from '../../store/selectors/global';\nimport * as React from 'react';\nimport { DateTime } from 'luxon';\n\ninterface Props {\n from?: DateTime;\n to?: DateTime;\n onChangeFrom: (date: DateTime) => void;\n onChangeTo: (date: DateTime) => void;\n}\n\nexport default class MonthSelector extends React.Component {\n private today = DateTime.now();\n constructor(props: Props) {\n super(props);\n }\n\n handleMonthChange = async (monthNumber: number) => {\n if (this.props.from && this.props.to) {\n const startDate = new Date(this.props.from.year, monthNumber - 1, 1);\n const endDate = new Date(this.props.to.year, monthNumber, 0);\n const from = DateTime.fromJSDate(startDate);\n const to = DateTime.fromJSDate(endDate);\n this.props.onChangeFrom(from);\n this.props.onChangeTo(to);\n }\n };\n\n handleYearChange = async (date: DateTime) => {\n const endDate = new Date(date.year, date.month, 0);\n const to = DateTime.fromJSDate(endDate);\n this.props.onChangeFrom(date);\n this.props.onChangeTo(to);\n };\n\n renderMonthButton = (monthNumber: number) => {\n const isActive = this.props.from && this.props.from.month === monthNumber;\n const readableMonth = DateTime.local(1, monthNumber, 1).toFormat('MMMM');\n return (\n this.handleMonthChange(monthNumber)}\n active={isActive}\n >\n {readableMonth}\n \n );\n };\n\n render() {\n const { from } = this.props;\n return (\n <>\n
\n \n
{from?.toFormat('yyyy')}
\n from && this.handleYearChange(from.plus({ years: 1 }))}\n >\n \n \n \n \n
\n
\n \n {numberRange(1, 12).map((value, index) => {\n return (\n
\n {this.renderMonthButton(value)}\n
\n );\n })}\n
\n
\n \n );\n }\n}\n","import * as React from 'react';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { ROUTE } from '../../config';\nimport Layout, { LayoutBreadcrumbItem } from '../../components/Layout';\nimport { Button, TabContent, TabPane } from 'reactstrap';\nimport { DateTime } from 'luxon';\nimport { downloadOutstandingReturnsReport } from '../../apis';\nimport ListFilters from '../../components/ListFilters';\nimport selectors from '../../store/selectors';\nimport MonthSelector from '../../components/reports/MonthSelector';\n\ninterface StateProps {\n isLoading: boolean;\n}\n\ntype OwnProps = RouteComponentProps<{\n filterType: string;\n}>;\n\ntype Props = StateProps & OwnProps;\n\ninterface State {\n from?: DateTime;\n to?: DateTime;\n open: boolean;\n activeTab: number;\n}\n\nclass OutstandingReturnsReport extends React.Component {\n private today = DateTime.now();\n private monthStart = this.today.startOf('month');\n\n getFilterType() {\n let filter = '';\n switch (this.props.match.params.filterType) {\n case 'transaction-date':\n filter = 'by Transaction Date';\n break;\n case 'return-date':\n filter = 'by Return Date';\n break;\n default:\n break;\n }\n\n return filter;\n }\n\n constructor(props: Props) {\n super(props);\n this.state = {\n from: this.monthStart,\n to: this.today,\n open: false,\n activeTab: 1,\n };\n }\n\n downloadOutstandingReturnsReport = () => {\n const { from, to } = this.state;\n downloadOutstandingReturnsReport({\n from: selectors.format.formatDateIso(from) as string,\n to: selectors.format.formatDateIso(to) as string,\n filterType: this.props.match.params.filterType?.replace('-', '_'),\n });\n };\n\n handleDateFromChange = async (date: DateTime | null) => {\n await this.setState({ from: date || undefined });\n };\n\n handleDateToChange = (date: DateTime | null) => {\n this.setState({ to: date || undefined });\n };\n\n toggleTab = (activeTab: number) => {\n this.setState({ activeTab });\n };\n\n onChangeFrom = (date: DateTime) => {\n this.setState({ from: date });\n };\n\n onChangeTo = (date: DateTime) => {\n this.setState({ to: date });\n };\n\n renderSearch = () => {\n return (\n
\n
\n \n
\n
\n );\n };\n\n renderAdvancedSearch = () => {\n return (\n \n );\n };\n\n render() {\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.REPORTS,\n title: 'Reports',\n },\n {\n href: ROUTE.REPORTS_OUTSTANDING_REPORTS,\n title: `Outstanding Returns Reports ${this.getFilterType()}`,\n },\n ];\n\n const { from, to, activeTab } = this.state;\n\n return (\n \n
\n
\n

Outstanding Returns Report {this.getFilterType()}

\n
\n\n
\n
\n
\n this.toggleTab(1)}\n >\n By month\n \n
\n
\n this.toggleTab(2)}\n >\n Advanced - Date range\n \n
\n
\n
\n\n \n \n {this.renderSearch()}\n \n \n {this.renderAdvancedSearch()}\n \n \n\n
\n this.downloadOutstandingReturnsReport()}\n >\n
\n
Download report
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(OutstandingReturnsReport);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { ROUTE } from '../../config';\nimport Layout, { LayoutBreadcrumbItem } from '../../components/Layout';\nimport {\n Card,\n CardBody,\n CardHeader,\n Col,\n InputGroup,\n InputGroupAddon,\n Row,\n Dropdown,\n DropdownToggle,\n DropdownMenu,\n DropdownItem,\n Button,\n Input,\n} from 'reactstrap';\nimport { ApplicationState } from '../../store';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport { FetchTransactionsReportActionOptions, fetchTransactionsReportAction } from '../../store/actions';\nimport { debounce } from 'lodash';\nimport selectors from '../../store/selectors';\nimport { DateTime } from 'luxon';\nimport { faCaretRight, faCaretLeft, faEllipsisH, faReceipt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { downloadTransactionsReport, SummaryModel, TransactionsReportModel } from '../../apis';\nimport PlaceholderLoader from '../../components/PlaceholderLoader';\nimport { faFileCsv } from '@fortawesome/free-solid-svg-icons/faFileCsv';\n\ninterface StateProps {\n isLoading: boolean;\n legalName: string | null;\n merchantName: string | null;\n report: TransactionsReportModel | null;\n}\n\ntype OwnProps = RouteComponentProps;\n\ninterface DispatchProps {\n fetchTransactionsReportAction: typeof fetchTransactionsReportAction;\n}\n\ntype Props = StateProps & OwnProps & DispatchProps;\n\ninterface State {\n from: DateTime;\n to: DateTime;\n open: boolean;\n}\n\nclass TransactionsReport extends React.Component {\n private today = DateTime.now();\n private monthStart = this.today.startOf('month');\n private placeHolderWidth = '200px';\n private placeHolderMargin = '2px';\n\n constructor(props: Props) {\n super(props);\n this.state = {\n from: this.monthStart,\n to: this.today,\n open: false,\n };\n }\n\n handleMonthChange = async (date: DateTime) => {\n const to = date.startOf('month').plus({ months: 1 }).minus({ days: 1 });\n await this.setState({ from: date, to });\n this.fetchTransactionsReportDebounced();\n };\n\n componentDidMount = async () => {\n try {\n const { from, to } = this.state;\n const options: FetchTransactionsReportActionOptions = {\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n };\n await this.props.fetchTransactionsReportAction(options);\n } catch {\n // Error happen, redirect\n this.props.history.push(ROUTE.REPORTS);\n }\n };\n\n fetchTransactionReport = () => {\n const { from, to } = this.state;\n const options: FetchTransactionsReportActionOptions = {\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n };\n\n this.props.fetchTransactionsReportAction(options);\n };\n\n fetchTransactionsReportDebounced = debounce(this.fetchTransactionReport, 500);\n\n downloadTransactionsReport = () => {\n const { from, to } = this.state;\n downloadTransactionsReport({\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n format: 'csv',\n });\n };\n\n renderTransactionsSummary = (summary: SummaryModel | null, isDebit?: boolean) => {\n const { isLoading } = this.props;\n const classText = isDebit ? 'text-danger' : 'text-primary';\n return (\n
\n
\n
\n \n Total\n \n
\n
\n \n Convenience Fees\n \n
\n
\n \n Gross\n \n
\n
\n \n Fees\n \n
\n
\n \n Net\n \n
\n
\n
\n
\n \n {summary ? selectors.format.formatAmount(summary.total) : '—'}\n \n
\n
\n \n {summary ? selectors.format.formatAmount(summary.convenience) : '—'}\n \n
\n
\n \n {summary ? selectors.format.formatAmount(summary.gross) : '—'}\n \n
\n
\n \n {summary ? selectors.format.formatAmount(summary.fees) : '—'}\n \n
\n
\n \n {summary ? selectors.format.formatAmount(summary.net) : '—'}\n \n
\n
\n
\n );\n };\n\n renderTotals = (report: TransactionsReportModel | null) => {\n const { isLoading } = this.props;\n return (\n <>\n
\n
\n \n Total\n \n
\n
\n \n {report ? selectors.format.formatAmount(report.total) : '—'}\n \n
\n
\n
\n
\n \n Net\n \n
\n
\n \n {report ? selectors.format.formatAmount(report.net) : '—'}\n \n
\n
\n
\n
\n \n Gross\n \n
\n
\n \n {report ? selectors.format.formatAmount(report.gross) : '—'}\n \n
\n
\n \n );\n };\n\n renderReport = () => {\n const { report, legalName, isLoading } = this.props;\n\n return (\n \n \n
\n \n Transactions Report\n
\n this.setState({ open: !this.state.open })}\n direction=\"down\"\n >\n \n \n \n \n this.downloadTransactionsReport()}\n className=\"d-flex justify-content-between align-items-center\"\n >\n
Download Transactions Report
\n \n \n
\n \n
\n \n
\n \n {this.props.merchantName}\n \n
\n
\n \n {legalName}\n \n
\n
\n \n For the period {report && report.date}\n \n
\n
\n \n
\n \n {report && report.date}\n \n
\n
\n {this.renderTotals(report)}\n
\n
\n \n Credit\n \n
\n
\n
\n \n Charges\n \n
\n {this.renderTransactionsSummary(report && report.charges)}\n
\n \n Returns\n \n
\n {this.renderTransactionsSummary(report && report.returns_credit)}\n
\n \n Adjustments\n \n
\n {this.renderTransactionsSummary(report && report.adjustments_credit, false)}\n
\n
\n\n
\n \n Debit\n \n
\n
\n
\n \n Refunds\n \n
\n {this.renderTransactionsSummary(report && report.refunds, true)}\n
\n \n Returns\n \n
\n {this.renderTransactionsSummary(report && report.returns_debit, true)}\n
\n \n Adjustment\n \n
\n {this.renderTransactionsSummary(report && report.adjustments_debit, true)}\n
\n
\n {this.renderTotals(report)}\n
\n
\n
\n );\n };\n\n render() {\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.REPORTS,\n title: 'Reports',\n },\n {\n href: ROUTE.REPORTS_TRANSACTIONS,\n title: 'Transactions',\n },\n ];\n\n const { from } = this.state;\n\n return (\n \n \n \n \n \n \n \n this.handleMonthChange(from.minus({ months: 1 }))}\n >\n \n \n \n \n \n \n \n this.handleMonthChange(from.plus({ months: 1 }))}\n >\n \n \n \n \n \n \n \n \n \n \n {this.renderReport()}\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n isLoading: isActionRequesting(state.global.actions, 'fetch_transactions_report'),\n legalName: state.merchant.selected ? state.merchant.selected.legal_name : null,\n merchantName: state.merchant.selected ? state.merchant.selected.display_name : null,\n report: state.reports.transactions,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchTransactionsReportAction,\n },\n dispatch,\n );\n\nexport default withRouter(connect(mapStateToProps, mapDispatchToProps)(TransactionsReport));\n","import * as React from 'react';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { ROUTE } from '../../config';\nimport Layout, { LayoutBreadcrumbItem } from '../../components/Layout';\nimport { CardBody, Button, TabContent, TabPane } from 'reactstrap';\nimport { DateTime } from 'luxon';\nimport { downloadSettlementsReport } from '../../apis';\nimport ListFilters from '../../components/ListFilters';\nimport selectors from '../../store/selectors';\nimport MonthSelector from '../../components/reports/MonthSelector';\n\ninterface StateProps {\n isLoading: boolean;\n}\n\ntype OwnProps = RouteComponentProps;\n\ntype Props = StateProps & OwnProps;\n\ninterface State {\n from?: DateTime;\n to?: DateTime;\n open: boolean;\n activeTab: number;\n}\n\nclass SettlmentsReport extends React.Component {\n private today = DateTime.now();\n private monthStart = this.today.startOf('month');\n\n constructor(props: Props) {\n super(props);\n this.state = {\n from: this.monthStart,\n to: this.today,\n open: false,\n activeTab: 1,\n };\n }\n\n downloadSettlementsReport = () => {\n const { from, to } = this.state;\n downloadSettlementsReport({\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n });\n };\n\n handleDateFromChange = async (date: DateTime | null) => {\n await this.setState({ from: date || undefined });\n };\n\n handleDateToChange = (date: DateTime | null) => {\n this.setState({ to: date || undefined });\n };\n\n toggleTab = (activeTab: number) => {\n this.setState({ activeTab });\n };\n\n handleMonthChange = async (date: DateTime) => {\n const to = date.startOf('month');\n await this.setState({ from: date, to });\n };\n\n onChangeFrom = (date: DateTime) => {\n this.setState({ from: date });\n };\n\n onChangeTo = (date: DateTime) => {\n this.setState({ to: date });\n };\n\n renderSearch = () => {\n return (\n
\n
\n \n
\n
\n );\n };\n\n renderAdvancedSearch = () => {\n return (\n \n \n \n );\n };\n\n render() {\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.REPORTS,\n title: 'Reports',\n },\n {\n href: ROUTE.REPORTS_SETTLEMENTS,\n title: 'Settlements Report',\n },\n ];\n\n const { from, to, activeTab } = this.state;\n\n return (\n \n
\n
\n

Settlements Report

\n
\n\n
\n
\n
\n this.toggleTab(1)}\n >\n By month\n \n
\n
\n this.toggleTab(2)}\n >\n Advanced - Date range\n \n
\n
\n
\n\n \n \n {this.renderSearch()}\n \n \n {this.renderAdvancedSearch()}\n \n \n\n
\n this.downloadSettlementsReport()}\n >\n
\n
Download report
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(SettlmentsReport);\n","import * as React from 'react';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { ROUTE } from '../../config';\nimport Layout, { LayoutBreadcrumbItem } from '../../components/Layout';\nimport { CardBody, Button, TabContent, TabPane } from 'reactstrap';\nimport { DateTime } from 'luxon';\nimport { downloadSettlementDetailsReport } from '../../apis';\nimport ListFilters from '../../components/ListFilters';\nimport selectors from '../../store/selectors';\nimport MonthSelector from '../../components/reports/MonthSelector';\n\ninterface StateProps {\n isLoading: boolean;\n}\n\ntype OwnProps = RouteComponentProps;\n\ntype Props = StateProps & OwnProps;\n\ninterface State {\n from?: DateTime;\n to?: DateTime;\n open: boolean;\n activeTab: number;\n}\n\nclass SettlmentDetailsReport extends React.Component {\n private today = DateTime.now();\n private monthStart = this.today.startOf('month');\n\n constructor(props: Props) {\n super(props);\n this.state = {\n from: this.monthStart,\n to: this.today,\n open: false,\n activeTab: 1,\n };\n }\n\n downloadSettlementDetailsReport = () => {\n const { from, to } = this.state;\n downloadSettlementDetailsReport({\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n });\n };\n\n handleDateFromChange = async (date: DateTime | null) => {\n await this.setState({ from: date || undefined });\n };\n\n handleDateToChange = (date: DateTime | null) => {\n this.setState({ to: date || undefined });\n };\n\n toggleTab = (activeTab: number) => {\n this.setState({ activeTab });\n };\n\n handleMonthChange = async (date: DateTime) => {\n const to = date.startOf('month');\n await this.setState({ from: date, to });\n };\n\n onChangeFrom = (date: DateTime) => {\n this.setState({ from: date });\n };\n\n onChangeTo = (date: DateTime) => {\n this.setState({ to: date });\n };\n\n renderSearch = () => {\n return (\n
\n
\n \n
\n
\n );\n };\n\n renderAdvancedSearch = () => {\n return (\n \n \n \n );\n };\n\n render() {\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.REPORTS,\n title: 'Reports',\n },\n {\n href: ROUTE.REPORTS_SETTLEMENT_DETAILS,\n title: 'Settlement Details Report',\n },\n ];\n\n const { from, to, activeTab } = this.state;\n\n return (\n \n
\n
\n

Settlement Details Report

\n
\n\n
\n
\n
\n this.toggleTab(1)}\n >\n By month\n \n
\n
\n this.toggleTab(2)}\n >\n Advanced - Date range\n \n
\n
\n
\n\n \n \n {this.renderSearch()}\n \n \n {this.renderAdvancedSearch()}\n \n \n\n
\n this.downloadSettlementDetailsReport()}\n >\n
\n
Download report
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(SettlmentDetailsReport);\n","import * as React from 'react';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport { ROUTE } from '../../config';\nimport Layout, { LayoutBreadcrumbItem } from '../../components/Layout';\nimport { CardBody, Button, TabContent, TabPane } from 'reactstrap';\nimport { DateTime } from 'luxon';\nimport { downloadActivityDetailsReport } from '../../apis';\nimport ListFilters from '../../components/ListFilters';\nimport selectors from '../../store/selectors';\nimport MonthSelector from '../../components/reports/MonthSelector';\n\ninterface StateProps {\n isLoading: boolean;\n}\n\ntype OwnProps = RouteComponentProps;\n\ntype Props = StateProps & OwnProps;\n\ninterface State {\n from?: DateTime;\n to?: DateTime;\n open: boolean;\n activeTab: number;\n}\n\nclass ActivityDetailsReport extends React.Component {\n private today = DateTime.now();\n private monthStart = this.today.startOf('month');\n\n constructor(props: Props) {\n super(props);\n this.state = {\n from: this.monthStart,\n to: this.today,\n open: false,\n activeTab: 1,\n };\n }\n\n downloadActivityDetailsReport = () => {\n const { from, to } = this.state;\n downloadActivityDetailsReport({\n from: selectors.format.formatDateIso(from) || undefined,\n to: selectors.format.formatDateIso(to) || undefined,\n });\n };\n\n handleDateFromChange = async (date: DateTime | null) => {\n await this.setState({ from: date || undefined });\n };\n\n handleDateToChange = (date: DateTime | null) => {\n this.setState({ to: date || undefined });\n };\n\n toggleTab = (activeTab: number) => {\n this.setState({ activeTab });\n };\n\n handleMonthChange = async (date: DateTime) => {\n const to = date.startOf('month');\n await this.setState({ from: date, to });\n };\n\n onChangeFrom = (date: DateTime) => {\n this.setState({ from: date });\n };\n\n onChangeTo = (date: DateTime) => {\n this.setState({ to: date });\n };\n\n renderSearch = () => {\n return (\n
\n
\n \n
\n
\n );\n };\n\n renderAdvancedSearch = () => {\n return (\n \n \n \n );\n };\n\n render() {\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.REPORTS,\n title: 'Reports',\n },\n {\n href: ROUTE.REPORTS_ACTIVITY_DETAILS,\n title: 'Activity Details Report',\n },\n ];\n\n const { from, to, activeTab } = this.state;\n\n return (\n \n
\n
\n

Activity Details Report

\n
\n\n
\n
\n
\n this.toggleTab(1)}\n >\n By month\n \n
\n
\n this.toggleTab(2)}\n >\n Advanced - Date range\n \n
\n
\n
\n\n \n \n {this.renderSearch()}\n \n \n {this.renderAdvancedSearch()}\n \n \n\n
\n this.downloadActivityDetailsReport()}\n >\n
\n
Download report
\n
\n \n
\n
\n
\n );\n }\n}\n\nexport default withRouter(ActivityDetailsReport);\n","import * as React from 'react';\nimport {\n Button,\n Col,\n DropdownItem,\n DropdownMenu,\n DropdownToggle,\n Modal,\n ModalBody,\n ModalFooter,\n ModalHeader,\n Row,\n Spinner,\n UncontrolledDropdown,\n} from 'reactstrap';\nimport { ResponseError } from '../../apis';\nimport { RolesType, UserRoleTypes } from '../../store/types';\nimport selectors from '../../store/selectors';\n\ntype Props = {\n showModal: boolean;\n isLoading: boolean;\n toggle: () => void;\n error?: ResponseError | null;\n onSubmit: () => void;\n roleType: RolesType;\n onRoleChange: (roles: RolesType) => void;\n};\n\ninterface State {\n userType: UserRoleTypes;\n}\n\nexport default class EditUserRolesModal extends React.Component {\n private initState = {\n userType: null,\n };\n\n constructor(props: Props) {\n super(props);\n this.state = this.initState;\n }\n\n componentDidMount = async () => {\n this.setRole(this.props.roleType);\n };\n\n setRole = (roleType: RolesType) => {\n switch (roleType) {\n case 'AllAdmin':\n this.setState({ userType: 'Admin' });\n break;\n case 'AllUsers':\n this.setState({ userType: 'Default' });\n break;\n case 'AllReporting':\n this.setState({ userType: 'Reporting' });\n }\n };\n\n renderDropdownItem = (roleType: RolesType, hideDivider?: boolean) => {\n return (\n <>\n {roleType !== this.props.roleType && (\n <>\n
\n this.props.onRoleChange(roleType)}\n disabled={roleType === this.props.roleType}\n >\n
\n {selectors.user.formatRoleType(roleType)}\n
\n
{selectors.user.toolTipMessage(roleType)}
\n \n
\n {!hideDivider && }\n \n )}\n \n );\n };\n\n renderRoleSelect = () => {\n const { roleType, isLoading } = this.props;\n return (\n \n \n {selectors.user.formatRoleType(roleType)}\n \n \n {this.renderDropdownItem('AllReporting')}\n {this.renderDropdownItem('AllUsers')}\n {this.renderDropdownItem('AllAdmin', true)}\n \n \n );\n };\n\n render() {\n const { showModal, isLoading } = this.props;\n const spinner = ;\n\n return (\n \n Edit user role\n \n
\n
Select admin role assignment for this user. *
\n \n {this.renderRoleSelect()}\n \n
\n
\n \n \n \n \n
\n );\n }\n}\n","import * as React from 'react';\nimport { Button, ButtonProps, Spinner } from 'reactstrap';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { ApplicationState } from '../../store';\nimport { DashboardUserPosted, DashboardUserUpdated, DashboardUserWithId, ResponseError } from '../../apis';\nimport selectors from '../../store/selectors';\nimport ConfirmationModal from '../modals/ConfirmationModal';\nimport { addDashboardUserAction, updateDashboardUserRoleAction, removeDashboardUserAction } from '../../store/actions';\nimport EditUserRolesModal from '../modals/EditUserRolesModal';\nimport { RolesType } from '../../store/types';\nimport { faPencilAlt } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nexport type UsersActionType = 'add' | 'Remove User' | 'update-roles' | null;\n\ninterface StateProps {\n errorMessage: ResponseError | null;\n}\n\ninterface OwnProps extends ButtonProps {\n dashBoardUser?: DashboardUserPosted;\n dashBoardUserId?: string;\n disabled?: boolean;\n action: UsersActionType;\n size?: string;\n onSubmitCallback?: () => void;\n userType?: string;\n}\n\ninterface DispatchProps {\n addDashboardUserAction: typeof addDashboardUserAction;\n updateDashboardUserRoleAction: typeof updateDashboardUserRoleAction;\n removeDashboardUserAction: typeof removeDashboardUserAction;\n}\n\ntype Props = StateProps & OwnProps & DispatchProps;\n\ninterface State {\n ready: boolean;\n showModal: boolean;\n action: UsersActionType;\n roles: RolesType | null;\n}\n\nclass UsersActions extends React.Component {\n public state: State = {\n ready: true,\n showModal: false,\n action: null,\n roles: null,\n };\n\n onActionClick = async (action: UsersActionType) => {\n if (action === null) return;\n await this.setState({ action });\n this.toggleModal();\n };\n\n toggleModal = () => this.setState({ showModal: !this.state.showModal });\n\n componentDidMount = () => {\n const { dashBoardUser } = this.props;\n dashBoardUser &&\n dashBoardUser.user_type &&\n this.setState({\n roles: selectors.user.formatRoleTypeFromString(\n selectors.format.formatUnderscored(dashBoardUser.user_type),\n ),\n });\n };\n\n onSubmit = async () => {\n const { dashBoardUser, dashBoardUserId } = this.props;\n this.setState({ ready: false });\n if (this.state.action === null) return;\n try {\n switch (this.state.action) {\n case 'add':\n if (dashBoardUser) {\n await this.props.addDashboardUserAction(dashBoardUser);\n this.toggleModal();\n if (this.props.onSubmitCallback) {\n this.props.onSubmitCallback();\n }\n }\n break;\n case 'Remove User':\n if (dashBoardUser) {\n const user = {\n email: dashBoardUser.email,\n first_name: dashBoardUser.first_name,\n last_name: dashBoardUser.last_name,\n owner_id: dashBoardUserId,\n } as DashboardUserWithId;\n await this.props.removeDashboardUserAction(user);\n this.toggleModal();\n }\n break;\n default:\n break;\n }\n } catch {\n this.setState({ ready: true });\n // Error\n }\n this.setState({ ready: true });\n };\n\n formatAction = (action: UsersActionType) => {\n switch (action) {\n case 'add':\n return 'Add user';\n default:\n return action;\n }\n };\n\n onEditRoleSubmit = async () => {\n const { dashBoardUser, dashBoardUserId } = this.props;\n const { roles } = this.state;\n if (dashBoardUser) {\n this.setState({ ready: false });\n const user = {\n email: dashBoardUser.email,\n first_name: dashBoardUser.first_name,\n last_name: dashBoardUser.last_name,\n roles: roles,\n owner_id: dashBoardUserId,\n } as DashboardUserUpdated;\n await this.props.updateDashboardUserRoleAction(user);\n this.toggleModal();\n this.setState({ ready: true });\n }\n };\n\n onRoleChange = (roles: RolesType) => {\n this.setState({ roles });\n };\n\n render() {\n const { errorMessage, action, disabled, dashBoardUser, size, userType, roleRemovalErrorMessage } = this.props;\n const { showModal, ready } = this.state;\n const spinner = ;\n const isLoading = !ready;\n\n return (\n <>\n {this.props.action === 'update-roles' && dashBoardUser ? (\n \n ) : (\n \n )}\n
\n {userType && (\n \n {selectors.format.formatUnderscored(userType)}\n \n )}\n this.onActionClick(action)}\n >\n {isLoading && spinner}\n {action === 'update-roles' && userType ? (\n \n ) : (\n this.formatAction(action)\n )}\n \n
\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n errorMessage: selectors.global.getResponseError(state.global.actions, 'add_dashboard_user'),\n roleRemovalErrorMessage: selectors.global.getResponseError(state.global.actions, 'remove_dashboard_user'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n addDashboardUserAction,\n updateDashboardUserRoleAction,\n removeDashboardUserAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(UsersActions);\n","import * as React from 'react';\nimport { DashboardUserModel, DashboardUserPosted } from '../../apis';\nimport TableBody from '../TableBody';\nimport Table from 'reactstrap/lib/Table';\nimport UsersActions from './UsersActions';\nimport Alert from 'reactstrap/lib/Alert';\nimport { sortBy } from 'lodash';\n\ninterface Props {\n dashboardUsers: DashboardUserModel[] | null;\n isLoading: boolean;\n}\n\nexport default function UsersTable(props: Props) {\n const { isLoading, dashboardUsers } = props;\n const sortedDashboardUsers = sortBy(dashboardUsers);\n\n return (\n
\n {sortedDashboardUsers && (\n \n \n \n \n \n \n \n \n \n \n \n {sortedDashboardUsers.map((user, index) => (\n \n \n \n \n \n \n \n ))}\n \n
EmailFirst NameLast NameUser Type
{user && user.email}{user && user.first_name}{user && user.last_name}\n \n \n \n
\n )}\n {!isLoading && sortedDashboardUsers && sortedDashboardUsers.length < 1 && (\n There are no users to to display\n )}\n
\n );\n}\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport Layout from '../../components/Layout';\nimport { Button } from 'reactstrap';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faPlus } from '@fortawesome/free-solid-svg-icons';\nimport { ROUTE } from '../../config';\nimport { history } from '../../index';\nimport UsersTable from '../../components/users/UsersTable';\nimport { ApplicationState } from '../../store';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchDashboardUsersAction } from '../../store/actions';\nimport { DashboardUserModel } from '../../apis';\n\ninterface StateProps {\n isLoading: boolean;\n dashboardUsers: DashboardUserModel[] | null;\n}\n\ninterface DispatchProps {\n fetchDashboardUsersAction: typeof fetchDashboardUsersAction;\n}\ntype Props = StateProps & DispatchProps;\n\nexport class Admin extends React.Component {\n componentDidMount = async () => {\n try {\n await this.props.fetchDashboardUsersAction();\n } catch {\n // handle silently\n }\n };\n\n render() {\n const { dashboardUsers, isLoading } = this.props;\n\n return (\n \n
\n
\n
\n

Admin

\n
\n
\n
\n history.push(ROUTE.ADMIN_ADD_USER)}\n >\n \n Add a user\n \n
\n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n isLoading: isActionRequesting(state.global.actions, 'fetch_dashboard_users'),\n dashboardUsers: state.users.arr || [],\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchDashboardUsersAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(Admin);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport {\n fetchDashboardUsersAction,\n resetActionResponseErrorAction,\n resetActionStatusAction,\n} from '../../store/actions';\nimport { ApplicationState } from '../../store';\nimport Layout, { LayoutBreadcrumbItem } from '../../components/Layout';\nimport { Col, DropdownItem, DropdownMenu, DropdownToggle, Input, Row, UncontrolledDropdown } from 'reactstrap';\nimport { ROUTE } from '../../config';\nimport { DashboardUserModel, DashboardUserPosted, isValidEmail, ResponseError } from '../../apis';\nimport UsersActions from '../../components/users/UsersActions';\nimport Alert from 'reactstrap/lib/Alert';\nimport { UncontrolledAlert } from 'reactstrap';\nimport selectors from '../../store/selectors';\nimport { RolesType, UserRoleTypes } from '../../store/types';\n\ninterface StateProps {\n dashboardUsers: DashboardUserModel[] | null;\n addUserError: ResponseError | null;\n}\n\ninterface DispatchProps {\n fetchDashboardUsersAction: typeof fetchDashboardUsersAction;\n resetActionStatusAction: typeof resetActionStatusAction;\n resetActionResponseErrorAction: typeof resetActionResponseErrorAction;\n}\n\ntype Props = StateProps & DispatchProps;\n\ninterface State {\n email: string;\n confirmEmail: string;\n firstName: string;\n lastName: string;\n firstNameError: string;\n lastNameError: string;\n emailConfirmationError: string;\n isEmailConfirmed: boolean;\n emailValidationError: string;\n successMessage: string;\n roles: RolesType;\n userType: UserRoleTypes;\n}\n\nclass AddUser extends React.Component {\n private initState = {\n email: '',\n confirmEmail: '',\n firstName: '',\n lastName: '',\n firstNameError: '',\n lastNameError: '',\n emailConfirmationError: '',\n isEmailConfirmed: false,\n emailValidationError: '',\n successMessage: '',\n roles: null,\n userType: null,\n };\n\n constructor(props: Props) {\n super(props);\n this.state = this.initState;\n }\n\n componentDidMount = async () => {\n try {\n await this.props.fetchDashboardUsersAction();\n await this.props.resetActionStatusAction('add_dashboard_user');\n } catch {}\n };\n\n onEmailChange = async (email: string) => {\n await this.setState({ email, confirmEmail: '' });\n await this.setState({ emailValidationError: '' });\n await this.setState({ isEmailConfirmed: false });\n await this.setState({ emailConfirmationError: '' });\n };\n\n onConfirmEmailChange = async (confirmEmail: string) => {\n await this.setState({ confirmEmail });\n };\n\n onFirstNameChange = async (firstName: string) => {\n await this.setState({ firstName });\n };\n\n onLastNameChange = async (lastName: string) => {\n await this.setState({ lastName });\n };\n\n validateEmail = async () => {\n if (!this.state.email) {\n return;\n } else if (!isValidEmail(this.state.email)) {\n await this.setState({ emailValidationError: 'Email address is invalid.' });\n } else {\n await this.setState({ emailValidationError: '' });\n }\n };\n\n validateEmailsMatch = async () => {\n if (this.state.email !== this.state.confirmEmail) {\n await this.setState({ emailConfirmationError: 'Email addresses do not match.' });\n await this.setState({ isEmailConfirmed: false });\n } else {\n await this.setState({ emailConfirmationError: '' });\n await this.setState({ isEmailConfirmed: true });\n }\n };\n\n validateFirstName = async () => {\n if (this.state.firstName !== this.state.firstName.trim()) {\n await this.setState({ firstNameError: 'First name cannot have leading or trailing spaces.' });\n } else if (this.state.firstName.length < 1 || this.state.firstName.length > 64) {\n await this.setState({ firstNameError: 'First name must be between 1 and 64 characters.' });\n } else {\n await this.setState({ firstNameError: '' });\n }\n };\n\n validateLastName = async () => {\n if (this.state.lastName !== this.state.lastName.trim()) {\n await this.setState({ lastNameError: 'Last name cannot have leading or trailing spaces.' });\n } else if (this.state.lastName.length < 1 || this.state.lastName.length > 64) {\n await this.setState({ lastNameError: 'Last name must be between 1 and 64 characters.' });\n } else {\n await this.setState({ lastNameError: '' });\n }\n };\n\n resetForm = async () => {\n this.setState(this.initState);\n };\n\n onSubmit = async () => {\n await this.props.resetActionStatusAction('add_dashboard_user');\n const email = this.state.email;\n await this.resetForm();\n await this.props.resetActionResponseErrorAction('add_dashboard_user');\n await this.setState({\n successMessage: `User ${email} has been added successfully.`,\n });\n };\n\n onRoleChange = async (roleType: RolesType) => {\n await this.setState({ roles: roleType as RolesType }, () => {\n if (this.state.roles) {\n switch (this.state.roles) {\n case 'AllAdmin':\n this.setState({ userType: 'Admin' });\n break;\n case 'AllUsers':\n this.setState({ userType: 'Default' });\n break;\n case 'AllReporting':\n this.setState({ userType: 'Reporting' });\n }\n }\n });\n };\n\n renderDropdownItem = (roleType: RolesType, hideDivider?: boolean) => {\n return (\n <>\n {roleType !== this.state.roles && (\n <>\n
\n this.onRoleChange(roleType)}\n disabled={roleType === this.state.roles}\n >\n
\n {selectors.user.formatRoleType(roleType)}\n
\n
{selectors.user.toolTipMessage(roleType)}
\n \n
\n {!hideDivider && }\n \n )}\n \n );\n };\n\n renderRoleSelect = () => {\n const { roles, userType } = this.state;\n return (\n \n \n {roles ? selectors.user.formatRoleType(roles) : 'Select one...'}\n \n \n {this.renderDropdownItem('AllReporting')}\n {this.renderDropdownItem('AllUsers')}\n {this.renderDropdownItem('AllAdmin', true)}\n \n \n );\n };\n\n render() {\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.ADMIN,\n title: 'Admin',\n },\n {\n href: ROUTE.ADMIN_ADD_USER,\n title: 'Add User',\n },\n ];\n\n const {\n email,\n confirmEmail,\n firstName,\n lastName,\n roles,\n firstNameError,\n lastNameError,\n emailConfirmationError,\n isEmailConfirmed,\n emailValidationError,\n successMessage,\n userType,\n } = this.state;\n const { addUserError } = this.props;\n const hasEmailValidationError = emailValidationError ? true : false;\n const hasEmailConfirmationError = emailConfirmationError ? true : false;\n const hasSuccessMsg = successMessage ? true : false;\n const hasFirstNameError = firstNameError ? true : false;\n const hasLastNameError = lastNameError ? true : false;\n\n return (\n \n
\n
Add a user
\n
\n
User Details
\n {hasEmailValidationError && {emailValidationError}}\n {hasEmailConfirmationError && {emailConfirmationError}}\n {hasFirstNameError && {firstNameError}}\n {hasLastNameError && {lastNameError}}\n {addUserError && {addUserError.message}}\n {hasSuccessMsg && {successMessage}}\n \n \n
Email *
\n this.onEmailChange(e.target.value)}\n onBlur={() => this.validateEmail()}\n />\n \n
\n \n \n
Email confirm
\n this.onConfirmEmailChange(e.target.value)}\n onBlur={() => this.validateEmailsMatch()}\n />\n \n
\n \n \n
First name *
\n this.onFirstNameChange(e.target.value)}\n onBlur={() => this.validateFirstName()}\n />\n \n \n
Last name *
\n this.onLastNameChange(e.target.value)}\n onBlur={() => this.validateLastName()}\n />\n \n
\n \n \n
Choose role *
\n {this.renderRoleSelect()}\n \n
\n
\n
\n \n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n dashboardUsers: state.users.arr || [],\n addUserError: selectors.global.getResponseError(state.global.actions, 'add_dashboard_user'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchDashboardUsersAction,\n resetActionStatusAction,\n resetActionResponseErrorAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AddUser);\n","import * as React from 'react';\nimport { RouteComponentProps } from 'react-router';\nimport { MapStateToPropsParam, connect } from 'react-redux';\nimport { ROUTE } from '../../config';\nimport Layout, { LayoutBreadcrumbItem } from '../../components/Layout';\nimport { Button, Input, ButtonGroup, FormGroup, Col, Row, Spinner } from 'reactstrap';\nimport Alert from 'reactstrap/lib/Alert';\nimport {\n AutomatedMailingReportModel,\n AutomatedMailingReportPosted,\n DashboardUserModel,\n ResponseError,\n} from '../../apis';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { ApplicationState } from '../../store';\nimport {\n addAutomatedMailingReportAction,\n resetActionStatusAction,\n fetchDashboardUsersAction,\n} from '../../store/actions';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport selectors from '../../store/selectors';\nimport PlaceholderLoader from '../../components/PlaceholderLoader';\n\ninterface StateProps {\n users: DashboardUserModel[];\n automatedReports: AutomatedMailingReportModel[];\n isLoading: boolean;\n fetchingUsers: boolean;\n error: ResponseError | null;\n}\n\ninterface DispatchProps {\n fetchDashboardUsersAction: typeof fetchDashboardUsersAction;\n addAutomatedMailingReportAction: typeof addAutomatedMailingReportAction;\n resetActionStatusAction: typeof resetActionStatusAction;\n}\n\ntype OwnProps = RouteComponentProps;\n\ninterface State {\n interval: string;\n user: string;\n reportType: string;\n open: boolean;\n intervalType: number;\n validationError: string;\n successMessage: string;\n}\n\ntype Props = StateProps & OwnProps & DispatchProps;\n\nclass AutomatedMailingReport extends React.Component {\n constructor(props: Props) {\n super(props);\n this.state = {\n successMessage: '',\n validationError: '',\n interval: '',\n user: '',\n reportType: '',\n open: false,\n intervalType: 1,\n };\n }\n\n componentDidMount = async () => {\n await this.props.fetchDashboardUsersAction();\n };\n\n handleTypeChange = async (e: React.ChangeEvent) => {\n await this.setState({ reportType: e.target.value });\n };\n\n handleIntervalChange = async (e: React.ChangeEvent) => {\n await this.setState({ interval: e.target.value });\n };\n\n handleUserChange = async (e: React.ChangeEvent) => {\n await this.setState({ user: e.target.value });\n };\n\n toggleTab = (intervalType: number) => {\n this.setState({\n intervalType,\n interval: intervalType === 3 ? 'everyday' : '',\n });\n };\n\n renderMonthDayInterval = () => {\n const dayCount = Array.from(Array(31).keys());\n return (\n \n \n {dayCount.map((el, index) => (\n \n ))}\n \n );\n };\n\n renderUserSelect = () => {\n const { users, fetchingUsers } = this.props;\n return (\n \n \n \n \n {users.map((el, index) => (\n \n ))}\n \n \n \n );\n };\n\n renderWeekDayInterval = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n };\n\n renderReportTypeSelect = () => {\n const { fetchingUsers } = this.props;\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n };\n\n resetForm = async () => {\n await this.setState({ interval: '' });\n await this.setState({ user: '' });\n await this.setState({ reportType: '' });\n await this.setState({ intervalType: 1 });\n };\n\n onSubmit = async () => {\n await this.props.resetActionStatusAction('create_automated_mailing_report');\n const automatedMailingReport = {\n email: this.state.user,\n interval: this.state.interval,\n type: this.state.reportType,\n } as AutomatedMailingReportPosted;\n\n try {\n const user = this.state.user;\n await this.props.addAutomatedMailingReportAction(automatedMailingReport);\n await this.resetForm();\n this.setState({ successMessage: `Automated report created for ${user}.` });\n } catch {\n // show error\n }\n };\n\n formatErrorMessage = (errorCode: string) => {\n switch (errorCode) {\n default:\n return 'An error has occured during the action.';\n }\n };\n\n render() {\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.REPORTS,\n title: 'Reports',\n },\n {\n href: ROUTE.REPORTS_AUTOMATED_MAILING,\n title: 'Automated Mailing Report',\n },\n ];\n\n const { error, isLoading, fetchingUsers } = this.props;\n const { interval, reportType, successMessage, validationError, intervalType, user } = this.state;\n const valid = !validationError;\n const spinner = ;\n return (\n \n
\n
\n
Opt-in for automated mailing report
\n
\n\n
\n
User Details
\n {validationError && {validationError}}\n {successMessage && {successMessage}}\n {error && {this.formatErrorMessage(error.type)}}\n\n
\n
Choose User *
\n {this.renderUserSelect()}\n
\n\n
Mailing Details
\n\n
\n
Report Type *
\n {this.renderReportTypeSelect()}\n
\n\n \n \n
Choose Interval *
\n \n \n
\n Choose Day {`${intervalType !== 3 ? '*' : ''}`}\n
\n \n
\n \n \n \n \n this.toggleTab(1)}\n className={`${intervalType === 1 ? 'btn-dark' : 'btn-gray-150'}`}\n >\n Month\n \n this.toggleTab(2)}\n className={`${intervalType === 2 ? 'btn-dark' : 'btn-gray-150'}`}\n >\n Weekday\n \n this.toggleTab(3)}\n className={`${intervalType === 3 ? 'btn-dark' : 'btn-gray-150'}`}\n >\n Everyday\n \n \n \n \n \n \n {intervalType === 1 && this.renderMonthDayInterval()}\n {intervalType === 2 && this.renderWeekDayInterval()}\n {intervalType === 3 && (\n
\n \n
Report will be sent out everyday
\n
\n
\n )}\n
\n \n
\n
\n\n
\n\n
\n
\n this.onSubmit()}\n disabled={!interval || !reportType || !valid || !user}\n >\n
\n
\n {isLoading && spinner}\n Create automated mailing\n
\n
\n \n
\n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n users: state.users.arr || [],\n automatedReports: state.reports.automatedMailing.arr || [],\n error: selectors.global.getResponseError(state.global.actions, 'create_automated_mailing_report'),\n fetchingUsers: isActionRequesting(state.global.actions, 'fetch_dashboard_users'),\n isLoading: isActionRequesting(state.global.actions, 'create_automated_mailing_report'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchDashboardUsersAction,\n addAutomatedMailingReportAction,\n resetActionStatusAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(AutomatedMailingReport);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { PromotionModel } from '../../apis';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport Table from 'reactstrap/lib/Table';\nimport Pagination from '../../components/Pagination';\nimport TableBody from '../TableBody';\nimport Alert from 'reactstrap/lib/Alert';\nimport selectors from '../../store/selectors';\nconst chevronRight = '/Text-Link-Arrow.svg';\ninterface StateProps {\n promotions: PromotionModel[];\n promotionsTotal: number;\n promotionsSkipped: number;\n promotionsLimit: number;\n isLoading: boolean;\n timezone: string | null;\n}\n\ninterface OwnerProps {\n isLoading?: boolean;\n onRowClick: (promotion: PromotionModel) => void;\n onGoTo: (page: number, skip: number) => void;\n noRowsComponent?: () => React.ReactNode;\n}\n\ntype Props = StateProps & OwnerProps;\n\nclass PromotionsTable extends React.Component {\n hasNoRows = () => this.props.promotions.length === 0 && !this.props.isLoading;\n\n renderNoRows = () => {\n if (!this.hasNoRows()) return null;\n return (\n \n {this.props.noRowsComponent ? this.props.noRowsComponent() : 'There are no promotions to display'}\n \n );\n };\n\n render() {\n const { timezone } = this.props;\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n {this.props.promotions.map((promotion, index) => (\n this.props.onRowClick(promotion)} key={index}>\n \n \n \n \n \n ))}\n \n
NameStart DateEnd Date
{promotion.name}\n {selectors.format.formatDateTimeSecondsWithYear(promotion.start_date, timezone)}\n \n {(promotion.end_date &&\n selectors.format.formatDateTimeSecondsWithYear(promotion.end_date, timezone)) ||\n '-'}\n \n {'View'}\n \n \n \n
\n {this.renderNoRows()}\n this.props.onGoTo(skip / this.props.promotionsLimit + 1, skip)}\n disabled={this.props.isLoading}\n />\n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (\n state,\n { isLoading = false },\n) => ({\n promotions: state.promotions.list.items,\n promotionsSkipped: state.promotions.list.skipped,\n promotionsTotal: state.promotions.list.total,\n promotionsLimit: state.promotions.list.limit,\n isLoading: isActionRequesting(state.global.actions, 'fetch_promotions') || isLoading,\n timezone: state.merchant.selected?.timezone || null,\n});\n\nexport default connect(mapStateToProps)(PromotionsTable);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchPromotionsAction } from '../store/actions';\nimport { ApplicationState } from '../store';\nimport Layout from '../components/Layout';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport selectors from '../store/selectors';\nimport { history } from '../index';\nimport { PromotionModel } from '../apis';\nimport PromotionsTable from '../components/promotions/PromotionsTable';\n\ninterface StateProps {\n promotions: PromotionModel[];\n isLoading: boolean;\n}\n\ninterface DispatchProps {\n fetchPromotionsAction: typeof fetchPromotionsAction;\n}\n\ntype Props = StateProps & DispatchProps & RouteComponentProps;\n\nclass PromotionsDashboard extends React.Component {\n componentDidMount = async () => {\n this.fetchPromotions();\n };\n\n onRowClicked = (promotion: PromotionModel) => {\n history.push(selectors.global.promotionRoute(promotion.id));\n };\n\n fetchPromotions = (skip?: number) => {\n this.props.fetchPromotionsAction(skip);\n };\n\n render() {\n return (\n \n
\n

Promotions

\n\n this.fetchPromotions(skip)}\n isLoading={this.props.isLoading}\n />\n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n promotions: state.promotions.list.items,\n isLoading: selectors.global.isActionRequesting(state.global.actions, 'fetch_promotions'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchPromotionsAction: fetchPromotionsAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(withRouter(PromotionsDashboard));\n","import * as React from 'react';\nimport { PromotionReportModel } from '../../apis';\nimport selectors from '../../store/selectors';\nimport Table from 'reactstrap/lib/Table';\nimport TableBody from '../TableBody';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../../store';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchPromotionReportAction } from '../../store/actions';\nimport Alert from 'reactstrap/lib/Alert';\nimport Tooltip from '../Tooltip';\n\ninterface OwnerProps {\n promotionId: string;\n isLoading?: boolean;\n}\n\ninterface StateProps {\n promotionReport: PromotionReportModel | null;\n isRequesting: boolean;\n}\n\ninterface DispatchProps {\n fetchPromotionReportAction: typeof fetchPromotionReportAction;\n}\n\ntype Props = StateProps & DispatchProps & OwnerProps;\n\nclass PromotionReportDetails extends React.Component {\n componentDidMount = async () => {\n if (!this.props.isLoading) {\n this.props.fetchPromotionReportAction(this.props.promotionId);\n }\n };\n\n componentDidUpdate(prevProps: Readonly): void {\n if (!this.props.isLoading && prevProps.isLoading) {\n this.props.fetchPromotionReportAction(this.props.promotionId);\n }\n }\n\n renderCount = (label: string, count: string, toolTipMessage: string) => {\n return (\n \n \n \n {label}\n \n \n \n
{count || '0'}
\n \n \n );\n };\n\n renderValue = (label: string, value: string, toolTipMessage: string) => {\n return (\n \n \n \n {label}\n \n \n \n
{(value && selectors.format.formatAmount(value)) || '$0.00'}
\n \n \n );\n };\n\n renderNoRows = () => {\n if (this.props.promotionReport !== null || this.props.isRequesting) return null;\n return There is no report to display;\n };\n\n render() {\n const { promotionReport } = this.props;\n const isLoading = this.props.isRequesting;\n\n return (\n
\n
\n

Promotion Performance Details

\n
\n \n \n {promotionReport && (\n <>\n {this.renderCount(\n 'Promotional Transactions Earned (#)',\n promotionReport.promo_transactions_earned_count,\n 'Number of transactions where a credit was earned for this promotion.',\n )}\n {this.renderValue(\n 'Promotional Transactions Earned ($)',\n promotionReport.promo_transactions_earned_value,\n 'Sum value of the transactions where a credit was earned for this promotion.',\n )}\n {this.renderCount(\n 'Promotional Transactions Redeemed (#)',\n promotionReport.promo_transactions_redeemed_count,\n 'Number of transactions where a child credit of this promotion was redeemed.',\n )}\n {this.renderValue(\n 'Promotional Transactions Redeemed ($)',\n promotionReport.promo_transactions_redeemed_value,\n 'Sum value of the transactions where a child credit of this promotion was redeemed.',\n )}\n\n {this.renderCount(\n 'Transactions (#)',\n promotionReport.transactions_in_promo_period_count,\n \"Total number of transactions within this promotion's start and end date.\",\n )}\n {this.renderValue(\n 'Transactions ($)',\n promotionReport.transactions_in_promo_period_value,\n \"Sum value of all transactions within this promotion's start and end date.\",\n )}\n\n {this.renderCount(\n 'Transactions per day (#)',\n promotionReport.average_transactions_in_promo_period_count,\n \"Average number of transactions per day within this promotion's start and end date.\",\n )}\n {this.renderValue(\n 'Transactions per day ($)',\n promotionReport.average_transaction_in_promo_period_value,\n \"Average transaction value per day within this promotion's start and end date.\",\n )}\n\n {this.renderCount(\n 'Previous 30 Days (# Txn / Day)',\n promotionReport.average_transactions_by_day_prior30_count,\n \"Average number of transactions per day during the 30-day period before the promotion's start date.\",\n )}\n {this.renderValue(\n 'Previous 30 Days ($ Txn / Day)',\n promotionReport.average_transaction_by_day_prior30_value,\n \"Average transaction value per day during the 30-day period before the promotion's start date.\",\n )}\n {this.renderCount(\n 'Previous 90 Days (# Txn / Day)',\n promotionReport.average_transactions_by_day_prior90_count,\n \"Average number of transactions per day during the 90-day period before the promotion's start date.\",\n )}\n {this.renderValue(\n 'Previous 90 Days ($ Txn / Day)',\n promotionReport.average_transaction_by_day_prior90_value,\n \"Average transaction value per day during the 90-day period before the promotion's start date.\",\n )}\n \n )}\n \n
\n {this.renderNoRows()}\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (\n state,\n { isLoading = false },\n) => ({\n promotionReport: state.reports.promotionReport,\n isRequesting: isActionRequesting(state.global.actions, 'fetch_promotion_report') || isLoading,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchPromotionReportAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PromotionReportDetails);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { Row } from 'reactstrap';\nimport Layout, { LayoutBreadcrumbItem } from '../../components/Layout';\nimport { ApplicationState } from '../../store';\nimport selectors from '../../store/selectors';\nimport { RouteComponentProps } from 'react-router';\nimport { ROUTE } from '../../config';\nimport Col from 'reactstrap/lib/Col';\nimport Tooltip from '../../components/Tooltip';\nimport { CreditModel, PromotionModel, TRIGGER_TYPE } from '../../apis';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchCreditsAction, fetchPromotionAction } from '../../store/actions';\nimport { isActionRequesting } from '../../store/selectors/global';\nimport PlaceholderLoader from '../PlaceholderLoader';\nimport CreditsTable from '../credits/CreditsTable';\nimport { history } from '../../index';\nimport PromotionReportDetails from './PromotionReportDetails';\nconst chevronRight = '/Text-Link-Arrow.svg';\n\ninterface StateProps {\n promotion: PromotionModel | null;\n timezone: string | null;\n isLoading: boolean;\n}\n\ntype OwnProps = RouteComponentProps<{\n promotionId: string;\n}>;\n\ninterface DispatchProps {\n fetchPromotionAction: typeof fetchPromotionAction;\n fetchCreditsAction: typeof fetchCreditsAction;\n}\n\ntype Props = StateProps & OwnProps & DispatchProps;\n\nclass PromotionDetails extends React.Component {\n componentDidMount = async () => {\n // If promotion pulled from the State's list of promotions, fetch it.\n if (!this.props.promotion) {\n try {\n await this.props.fetchPromotionAction(this.props.match.params.promotionId);\n } catch {\n this.props.history.push(ROUTE.PROMOTIONS);\n return;\n }\n }\n await this.props.fetchCreditsAction({ promotionId: this.props.match.params.promotionId });\n };\n\n onOriginChargeIdClicked = (credit: CreditModel) => {\n history.push(`${ROUTE.TRANSACTIONS}/${credit.originated_from_charge_id}`);\n };\n\n onRedeemedChargeIdClicked = (credit: CreditModel) => {\n history.push(`${ROUTE.TRANSACTIONS}/${credit.redeemed_with_charge_id}`);\n };\n\n onCreditCustomerClicked = (credit: CreditModel) => {\n history.push(`${ROUTE.CUSTOMERS}/${credit.customer.id}`);\n };\n\n fetchCredits = (skip?: number) => {\n const { promotion } = this.props;\n this.props.fetchCreditsAction({\n skip,\n promotionId: promotion ? promotion.id : undefined,\n });\n };\n\n setEndDate = (promotion: PromotionModel) => {\n if (promotion.disabled_on) {\n return selectors.format.formatDateTimeSecondsWithYear(promotion.disabled_on, this.props.timezone);\n }\n if (promotion.end_date) {\n return selectors.format.formatDateTimeSecondsWithYear(promotion.end_date, this.props.timezone);\n }\n return '-';\n };\n\n render() {\n const { promotion, timezone, isLoading } = this.props;\n\n const layoutBreadcrumbItems: LayoutBreadcrumbItem[] = [\n {\n href: ROUTE.PROMOTIONS,\n title: 'Promotions',\n },\n ];\n\n if (promotion) {\n layoutBreadcrumbItems.push({\n href: selectors.global.promotionRoute(promotion.id),\n title: promotion.id.replace('promotion_', ''),\n isId: true,\n });\n }\n\n return (\n \n
\n
\n
\n \n

{promotion && `${promotion.name}`}

\n
\n
\n
\n
\n
\n

Promotion details

\n {promotion && promotion.external_id ? (\n
\n \n {promotion.external_id}\n \n
\n ) : null}\n
\n
\n
\n \n \n
\n

Start Date

\n \n
\n {promotion &&\n selectors.format.formatDateTimeSecondsWithYear(\n promotion.start_date,\n timezone,\n )}\n
\n
\n
\n \n \n
\n

{promotion?.disabled_on ? 'Disabled On' : 'End Date'}

\n \n
{promotion && this.setEndDate(promotion)}
\n
\n
\n \n \n
\n \n

Disabled

\n \n {promotion && promotion.disabled_on ? 'Yes' : 'No'}\n \n
\n
\n \n
\n \n \n
\n

Type

\n \n {promotion &&\n selectors.format.formatCapitalizeFirstLetter(promotion.promotion_type)}\n \n
\n \n \n
\n

Benefit Type

\n \n {promotion &&\n selectors.format.formatCapitalizeFirstLetter(promotion.benefit_type)}\n \n
\n \n \n
\n

Trigger Type

\n \n {promotion && promotion.trigger_type == TRIGGER_TYPE.PURCHASE\n ? 'Purchase'\n : 'Source Link'}\n \n
\n \n
\n
\n {promotion && promotion.trigger_type == TRIGGER_TYPE.PURCHASE ? (\n
\n \n \n
\n \n

Immediate Use

\n \n {promotion && promotion.immediate_use ? 'Yes' : 'No'}\n \n
\n
\n \n \n
\n \n

First Purchase Only

\n \n {promotion && promotion.first_purchase_only ? 'Yes' : 'No'}\n \n
\n
\n \n \n
\n \n

Single Use

\n \n {promotion && promotion.single_use ? 'Yes' : 'No'}\n \n
\n
\n \n
\n \n \n
\n

Fixed Amount

\n \n {promotion && selectors.format.formatAmount(promotion.fixed_amount)}\n \n
\n \n \n
\n \n

Minimum Charge Amount

\n \n {promotion &&\n selectors.format.formatAmount(promotion.min_charge_amount || 0)}\n \n
\n
\n \n
\n
\n ) : (\n
\n \n \n
\n

Fixed Amount

\n \n {promotion && selectors.format.formatAmount(promotion.fixed_amount)}\n \n
\n \n \n
\n \n

Relink Allowed

\n \n {promotion && promotion.relink_allowed ? 'True' : 'False'}\n \n
\n
\n \n
\n
\n )}\n
\n \n
\n
\n
\n
Need help with this promotion?
\n \n Contact Support\n \n \n \n \n
\n
\n
\n
\n\n this.fetchCredits(skip)}\n isLoading={isLoading}\n showPromoColumn={false}\n />\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state, ownProps) => ({\n promotion:\n state.promotions.list.items.find((el) => el.id === ownProps.match.params.promotionId) ||\n state.promotions.selectedPromotion ||\n null,\n timezone: state.merchant.selected?.timezone || null,\n isLoading: isActionRequesting(state.global.actions, 'fetch_promotion'),\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchPromotionAction,\n fetchCreditsAction,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(PromotionDetails);\n","import * as React from 'react';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from '../store';\nimport Layout from '../components/Layout';\nimport { RouteComponentProps, withRouter } from 'react-router';\nimport selectors from '../store/selectors';\nimport SHQRCode from '../components/SHQRCode';\n\ninterface StateProps {\n portalUrl: string;\n}\n\ntype Props = StateProps & RouteComponentProps;\n\nclass InStore extends React.Component {\n render() {\n const portalUrl = this.props.portalUrl;\n return (\n \n
\n

In Store

\n
\n

\n Get all the benefits of digital payments with Stronghold for customers shopping in your store. Avoid\n the pitfalls of cash and unreliable card solutions.\n

\n \n Print and post the QR code below in your store.\n
\n Ask customers to sign up and link their bank account in this simple, branded flow.\n
\n Once your customers have signed up, purchasing with Stronghold is now a one-click checkout.\n
\n \n
\n
\n
\n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n portalUrl: selectors.merchant.getPortalUrl(state),\n});\n\nexport default connect(mapStateToProps, null)(withRouter(InStore));\n","import './styles/styles.scss';\n\nimport * as React from 'react';\nimport { Redirect, Route, Switch } from 'react-router-dom';\nimport AuthorizeRoute from './components/AuthorizeRoute';\nimport Developers from './pages/Developers';\nimport Settlements from './pages/Settlements';\nimport Paylink from './pages/Paylink/Paylink';\nimport CreatePayLink from './pages/Paylink/CreatePaylink';\nimport Paylinks from './pages/Paylink/Paylinks';\nimport Transactions from './pages/Transactions';\nimport { configuration, ROUTE, setAccessToken } from './config';\nimport { connect, MapStateToPropsParam } from 'react-redux';\nimport { ApplicationState } from './store';\nimport { isActionRequesting } from './store/selectors/global';\nimport { bindActionCreators, Dispatch } from 'redux';\nimport { fetchConfiguration } from './store/actions';\nimport Home from './pages/Home';\nimport Customers from './pages/Customers';\nimport Layout from './components/Layout';\nimport Customer from './pages/Customer';\nimport Transaction from './pages/Transaction';\nimport Settlement from './pages/Settlement';\nimport Reports from './pages/Reports/Reports';\nimport Loader from './components/Loader';\nimport OutstandingReturnsReport from './pages/Reports/OutstandingReturns';\nimport TransactionsReport from './pages/Reports/Transactions';\nimport SettlementsReport from './pages/Reports/Settlements';\nimport SettlementDetailsReport from './pages/Reports/SettlementDetails';\nimport ActivityDetailsReport from './pages/Reports/ActivityDetails';\nimport { SPLIT_FLAG, USER_ROLE } from './store/types';\nimport Admin from './pages/Admin/Admin';\nimport AddUser from './pages/Admin/AddUser';\nimport AutomatedMailingReport from './pages/Reports/AutomatedMailing';\nimport { LoginCallback, Security } from '@okta/okta-react';\nimport { isAccessToken, OktaAuth, toRelativeUrl } from '@okta/okta-auth-js';\nimport { history } from './index';\nimport Promotions from './pages/Promotions';\nimport PromotionDetails from './components/promotions/PromotionDetails';\nimport InStore from './pages/InStore';\n\ninterface StateProps {\n isRequesting: boolean;\n switching: boolean;\n}\n\ninterface DispatchProps {\n fetchConfiguration: typeof fetchConfiguration;\n}\n\ntype Props = StateProps & DispatchProps;\n\ntype State = {\n ready: boolean;\n};\n\n/* eslint-disable @typescript-eslint/no-non-null-assertion */\nclass App extends React.PureComponent {\n oktaAuth?: OktaAuth;\n restoreOriginalUri?: (oa: OktaAuth, ou: string) => Promise;\n\n public state: State = {\n ready: false,\n };\n\n async componentDidMount() {\n await this.props.fetchConfiguration();\n if (this.oktaAuth == undefined) {\n this.oktaAuth = new OktaAuth({\n issuer: configuration.oidc.authority,\n clientId: configuration.oidc.client_id,\n redirectUri: configuration.oidc.redirect_uri,\n });\n this.restoreOriginalUri = async (_oktaAuth, originalUri) => {\n history.replace(toRelativeUrl(originalUri || ROUTE.HOME, window.location.origin));\n };\n }\n\n // Listen for Okta Auth token renewal and replace old token with the new one\n this.oktaAuth.tokenManager.on('renewed', function (key, newToken) {\n if (isAccessToken(newToken)) {\n setAccessToken(newToken.accessToken);\n }\n });\n\n this.setState({ ready: true });\n }\n\n public render() {\n const { isRequesting, switching } = this.props;\n const { ready } = this.state;\n\n if (!ready || isRequesting) {\n return
;\n }\n\n if (switching) {\n return (\n \n
\n \n
\n
\n );\n }\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/**/}\n \n \n \n \n \n \n );\n }\n}\n\nconst mapStateToProps: MapStateToPropsParam = (state) => ({\n isRequesting: isActionRequesting(state.global.actions, 'fetch_configuration'),\n switching: state.global.switchingContext,\n});\n\nconst mapDispatchToProps = (dispatch: Dispatch) =>\n bindActionCreators(\n {\n fetchConfiguration,\n },\n dispatch,\n );\n\nexport default connect(mapStateToProps, mapDispatchToProps)(App);\n","import { AuthenticationState } from '../types';\nimport { Action, Reducer } from 'redux';\nimport { LOGIN, SET_ROLES, READY } from '../constants';\nimport { AuthenticationAction } from '../actions';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: AuthenticationState = {\n isInitialized: false,\n accessToken: null,\n tokenType: null,\n user: {\n email: null,\n roles: null,\n },\n isReady: false,\n};\n\nexport const authenticationReducer: Reducer = (\n state: AuthenticationState = unloadedState,\n incomingAction: Action,\n): AuthenticationState => {\n const action = incomingAction as AuthenticationAction;\n switch (action.type) {\n case LOGIN:\n return {\n ...unloadedState,\n ...action.payload,\n isInitialized: true,\n };\n case SET_ROLES:\n return {\n ...state,\n user: {\n ...state.user,\n roles: action.payload.user.roles,\n },\n };\n case READY:\n return {\n ...state,\n ...action.payload,\n };\n }\n\n return state;\n};\n","import { BalanceTransferState } from '../types';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { segmentListLimit } from '../../apis';\nimport { SET_BALANCE_TRANSFERS, SET_BALANCE_TRANSFER_SUMMARY, SWITCH_CONTEXT } from '../constants';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: BalanceTransferState = {\n list: {\n items: [],\n limit: segmentListLimit,\n skipped: 0,\n total: 0,\n },\n summary: null,\n};\n\nexport const balanceTransferReducer: Reducer = (\n state = unloadedState,\n action,\n): BalanceTransferState => {\n switch (action.type) {\n case SWITCH_CONTEXT:\n return action.payload.switching ? unloadedState : state;\n case SET_BALANCE_TRANSFERS:\n return {\n ...state,\n list: action.payload.list,\n };\n case SET_BALANCE_TRANSFER_SUMMARY:\n return {\n ...state,\n summary: action.payload.data,\n };\n default:\n return state;\n }\n};\n","import { ChargeState } from '../types';\nimport { CLEAN_CHARGES, UPSERT_CHARGE, SET_CHARGES, SET_CHARGE_TIP, SWITCH_CONTEXT } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { unionBy } from 'lodash';\nimport { ChargeModel, segmentListLimit } from '../../apis';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: ChargeState = {\n list: {\n items: [],\n limit: segmentListLimit,\n skipped: 0,\n total: 0,\n },\n aggregated: {\n captured_charges: '',\n captured_fees: '',\n customer_average: '',\n disputes: '',\n failed_payments: '',\n gross: '',\n net: '',\n new_customers: '',\n succesful_payments: '',\n },\n};\n\nexport const chargeReducer: Reducer = (state = unloadedState, action): ChargeState => {\n switch (action.type) {\n case SWITCH_CONTEXT:\n return action.payload.switching ? unloadedState : state;\n case SET_CHARGES:\n return {\n ...state,\n list: action.payload.list,\n };\n case UPSERT_CHARGE:\n return {\n ...state,\n list: {\n ...state.list,\n items: unionBy([action.payload.charge], state.list.items, (el) => el.id),\n },\n };\n case CLEAN_CHARGES:\n return {\n ...state,\n list: unloadedState.list,\n };\n case SET_CHARGE_TIP:\n return {\n ...state,\n list: {\n ...state.list,\n items: state.list.items.map((el) => {\n if (el.id === action.payload.tip_model.charge_id) {\n el.tip_model = action.payload.tip_model;\n }\n return el;\n }),\n },\n };\n default:\n return state;\n }\n};\n","import { ActionStatus, GlobalState } from '../types';\nimport { Reducer } from 'redux';\nimport {\n RESET_ACTION_STATUS,\n SET_ACTION_REQUEST_STATUS,\n SET_ACTION_RESPONSE_ERROR,\n RESET_ACTION_RESPONSE_ERROR,\n SET_CONFIGURATION,\n SET_ENVIRONMENT_DATA,\n SET_ENVIRONMENTS,\n SHOW_REQUEST_LIVE_DATA_MESSAGE,\n SWITCH_CONTEXT,\n SHOW_SWITCHED_SANDBOX_MESSAGE,\n} from '../constants';\nimport { ApplicationAction } from '../actions';\nimport { clone, unionBy } from 'lodash';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: GlobalState = {\n actions: [],\n configuration: {\n environment: '',\n sentry_dsn: '',\n data_dog: { client_token: '', site: '', environment: '' },\n oidc: { authority: '', client_id: '', post_logout_redirect_uri: '', redirect_uri: '' },\n launch_darkly: { client_id: '' },\n split: { api_key: '' },\n admin_uri: '',\n portal_url: '',\n },\n environments: {\n has_live_data: false,\n live_keys: [],\n sandbox_keys: [],\n },\n environmentData: 'live',\n showRequestLiveDataMessage: false,\n showSwitchedToSandboxMessage: false,\n switchingContext: false,\n};\nconst unloadedActionStatusState: ActionStatus = { name: 'login', isRequesting: false };\n\nexport const globalReducer: Reducer = (state = unloadedState, action): GlobalState => {\n switch (action.type) {\n case SET_ACTION_REQUEST_STATUS:\n let tmp = state.actions.find((el) => el.name === action.payload.name);\n tmp = tmp\n ? clone(tmp)\n : ({\n ...unloadedActionStatusState,\n name: action.payload.name,\n } as ActionStatus);\n tmp.isRequesting = action.payload.isRequesting;\n return {\n ...state,\n actions: unionBy([tmp], state.actions, (el) => el.name),\n };\n case SET_ACTION_RESPONSE_ERROR:\n return {\n ...state,\n actions: state.actions.map((el) => {\n if (el.name !== action.payload.name) return el;\n return {\n ...el,\n responseError: action.payload.error,\n isRequesting: false,\n };\n }),\n };\n case RESET_ACTION_RESPONSE_ERROR:\n return {\n ...state,\n actions: state.actions.filter((item) => item.name != action.payload.name),\n };\n case RESET_ACTION_STATUS:\n return {\n ...state,\n actions: unionBy(\n [\n {\n ...unloadedActionStatusState,\n name: action.payload.name,\n },\n ],\n state.actions,\n (el) => el.name,\n ),\n };\n case SET_CONFIGURATION:\n return {\n ...state,\n configuration: action.payload.configuration,\n };\n case SET_ENVIRONMENTS:\n return {\n ...state,\n environments: action.payload.environments,\n };\n case SET_ENVIRONMENT_DATA:\n return {\n ...state,\n environmentData: action.payload.environmentData,\n };\n case SHOW_REQUEST_LIVE_DATA_MESSAGE:\n return {\n ...state,\n showRequestLiveDataMessage: action.payload.show,\n };\n case SHOW_SWITCHED_SANDBOX_MESSAGE:\n return {\n ...state,\n showSwitchedToSandboxMessage: action.payload.show,\n };\n case SWITCH_CONTEXT:\n return {\n ...state,\n switchingContext: action.payload.switching,\n };\n }\n\n return state;\n};\n","import { SettlementState } from '../types';\nimport { ADD_SETTLEMENT, SET_SETTLEMENTS, SWITCH_CONTEXT } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { segmentListLimit, SettlementModel } from '../../apis';\nimport { unionBy } from 'lodash';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: SettlementState = {\n list: {\n items: [],\n limit: segmentListLimit,\n skipped: 0,\n total: 0,\n },\n};\n\nexport const settlementReducer: Reducer = (\n state = unloadedState,\n action,\n): SettlementState => {\n switch (action.type) {\n case SWITCH_CONTEXT:\n return action.payload.switching ? unloadedState : state;\n case SET_SETTLEMENTS:\n return {\n ...state,\n list: action.payload.list,\n };\n case ADD_SETTLEMENT:\n return {\n ...state,\n list: {\n ...state.list,\n items: unionBy(state.list.items, [action.payload.settlement], (el) => el.id),\n },\n };\n default:\n return state;\n }\n};\n","import { CustomerState } from '../types';\nimport { ADD_CUSTOMER, CLEAN_CUSTOMERS, SET_CUSTOMERS, SWITCH_CONTEXT, UPDATE_CUSTOMER } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { map, unionBy } from 'lodash';\nimport { CustomerModel, segmentListLimit } from '../../apis';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: CustomerState = {\n list: {\n items: [],\n limit: segmentListLimit,\n skipped: 0,\n total: 0,\n },\n};\n\nexport const customerReducer: Reducer = (\n state = unloadedState,\n action,\n): CustomerState => {\n switch (action.type) {\n case SWITCH_CONTEXT:\n return action.payload.switching ? unloadedState : state;\n case SET_CUSTOMERS:\n return {\n ...state,\n list: action.payload.list,\n };\n case ADD_CUSTOMER:\n return {\n ...state,\n list: {\n ...state.list,\n items: unionBy(state.list.items, [action.payload.customer], (el) => el.id),\n },\n };\n case UPDATE_CUSTOMER:\n return {\n ...state,\n list: {\n ...state.list,\n items: map(state.list.items, (item) =>\n item.id === action.payload.data.id ? action.payload.data : item,\n ),\n },\n };\n case CLEAN_CUSTOMERS:\n return {\n ...state,\n list: unloadedState.list,\n };\n default:\n return state;\n }\n};\n","import {\n CLEAN_PAYMENT_SOURCE,\n SET_PAYMENT_SOURCE,\n SWITCH_CONTEXT,\n SET_PAYMENT_SOURCES,\n UPDATE_PAYMENT_SOURCE,\n} from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { PaymentSourcesState } from '../types';\nimport { map, orderBy } from 'lodash';\nimport { segmentListLimit } from '../../apis';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: PaymentSourcesState = {\n list: {\n items: [],\n limit: segmentListLimit,\n skipped: 0,\n total: 0,\n },\n};\n\nexport const paymentSourcesReducer: Reducer = (\n state = unloadedState,\n action,\n): PaymentSourcesState => {\n switch (action.type) {\n case SWITCH_CONTEXT:\n return action.payload.switching ? unloadedState : state;\n case SET_PAYMENT_SOURCE:\n return {\n ...state,\n list: {\n ...state.list,\n items: [action.payload.data],\n },\n };\n case SET_PAYMENT_SOURCES:\n return {\n ...state,\n list: {\n ...action.payload.list,\n items: orderBy(action.payload.list.items, ['active'], ['desc']),\n },\n };\n case UPDATE_PAYMENT_SOURCE:\n return {\n ...state,\n list: {\n ...state.list,\n items: map(state.list.items, (item) =>\n item.id === action.payload.data.id ? action.payload.data : item,\n ),\n },\n };\n case CLEAN_PAYMENT_SOURCE:\n return {\n ...state,\n list: unloadedState.list,\n };\n default:\n return state;\n }\n};\n","import { MerchantState } from '../types';\nimport { SET_MERCHANT, SET_MERCHANTS } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { orderBy } from 'lodash';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: MerchantState = {\n arr: [],\n selected: null,\n};\n\nexport const merchantReducer: Reducer = (\n state = unloadedState,\n action,\n): MerchantState => {\n switch (action.type) {\n case SET_MERCHANT:\n return {\n ...state,\n selected: action.payload.merchant,\n };\n case SET_MERCHANTS:\n return {\n ...state,\n arr: orderBy(action.payload.arr, 'display_name', 'asc'),\n };\n default:\n return state;\n }\n};\n","import { ReportsState } from '../types';\nimport {\n ADD_AUTOMATED_MAILING_REPORT,\n REMOVE_AUTOMATED_MAILING_REPORT,\n SET_AUTOMATED_MAILING_REPORTS,\n SET_PROMOTION_REPORT,\n SET_TRANSACTIONS_REPORT,\n SWITCH_CONTEXT,\n} from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: ReportsState = {\n transactions: null,\n automatedMailing: {\n arr: [],\n },\n promotionReport: null,\n};\n\nexport const reportsReducer: Reducer = (\n state = unloadedState,\n action,\n): ReportsState => {\n switch (action.type) {\n case SWITCH_CONTEXT:\n return action.payload.switching ? unloadedState : state;\n case SET_TRANSACTIONS_REPORT:\n return {\n ...state,\n transactions: action.payload.transactions,\n };\n case REMOVE_AUTOMATED_MAILING_REPORT:\n const filtered = state.automatedMailing.arr.filter(\n (el) => el.id !== action.payload.automatedMailingReportId,\n );\n return {\n ...state,\n automatedMailing: {\n arr: filtered,\n },\n };\n case ADD_AUTOMATED_MAILING_REPORT:\n const updatedArr = [...state.automatedMailing.arr, action.payload.automatedMailingReport];\n return {\n ...state,\n automatedMailing: {\n arr: updatedArr,\n },\n };\n case SET_AUTOMATED_MAILING_REPORTS:\n return {\n ...state,\n automatedMailing: {\n arr: action.payload.automatedMailingReports,\n },\n };\n case SET_PROMOTION_REPORT:\n return {\n ...state,\n promotionReport: action.payload.promotionReport,\n };\n default:\n return state;\n }\n};\n","import { UsersState } from '../types';\nimport { ADD_USER, SET_USERS, SWITCH_CONTEXT, UPDATE_USER_ROLES, REMOVE_USER } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { unionBy } from 'lodash';\nimport { DashboardUserModel } from '../../apis';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: UsersState = {\n arr: [],\n};\n\nexport const usersReducer: Reducer = (state = unloadedState, action): UsersState => {\n switch (action.type) {\n case SWITCH_CONTEXT:\n return action.payload.switching ? unloadedState : state;\n case SET_USERS:\n return {\n ...state,\n arr: action.payload.arr,\n };\n case ADD_USER:\n return {\n ...state,\n arr: unionBy(state.arr, [action.payload.user], (el) => el.id),\n };\n case REMOVE_USER:\n return {\n ...state,\n arr: state.arr.filter((item) => item.email != action.payload.email),\n };\n case UPDATE_USER_ROLES:\n return {\n ...state,\n arr: state.arr.map((el) => {\n if (el.id == action.payload.user.id) {\n return action.payload.user;\n }\n return el;\n }),\n };\n default:\n return state;\n }\n};\n","import { ADD_PAYLINK, CLEAN_PAYLINK, SET_PAYLINK, SET_PAYLINKS, SWITCH_CONTEXT, UPSERT_PAYLINK } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { PayLinksState } from '../types';\nimport { PayLinkModel, segmentListLimit } from '../../apis';\nimport { unionBy } from 'lodash';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: PayLinksState = {\n list: {\n items: [],\n limit: segmentListLimit,\n skipped: 0,\n total: 0,\n },\n selected: null,\n};\n\nexport const payLinksReducer: Reducer = (\n state = unloadedState,\n action,\n): PayLinksState => {\n switch (action.type) {\n case SWITCH_CONTEXT:\n return action.payload.switching ? unloadedState : state;\n case SET_PAYLINKS:\n return {\n ...state,\n list: action.payload.list,\n };\n case ADD_PAYLINK:\n return {\n ...state,\n list: {\n ...state.list,\n items: unionBy(state.list.items, [action.payload.payLink], (el) => el.id),\n },\n selected: action.payload.payLink,\n };\n case UPSERT_PAYLINK:\n const payLink = state.list.items.find((el) => el.id);\n const updatedPayLink = { ...payLink, ...action.payload.payLink };\n return {\n ...state,\n list: {\n ...state.list,\n items: unionBy([updatedPayLink], state.list.items, (el) => el.id),\n },\n selected: updatedPayLink,\n };\n case SET_PAYLINK:\n return {\n ...state,\n selected: action.payload.payLink,\n };\n case CLEAN_PAYLINK:\n return {\n ...state,\n selected: unloadedState.selected,\n };\n default:\n return state;\n }\n};\n","import { ReturnsState } from '../types';\nimport { CLEAN_RETURNS, SET_RETURN, SWITCH_CONTEXT } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: ReturnsState = {\n arr: [],\n};\n\nexport const returnsReducer: Reducer = (\n state = unloadedState,\n action,\n): ReturnsState => {\n switch (action.type) {\n case SWITCH_CONTEXT:\n return action.payload.switching ? unloadedState : state;\n case SET_RETURN:\n const updatedArr = state.arr;\n updatedArr.push(action.payload.return);\n return {\n ...state,\n arr: updatedArr,\n };\n case CLEAN_RETURNS:\n return {\n ...state,\n arr: unloadedState.arr,\n };\n default:\n return state;\n }\n};\n","import { RewardsState } from '../types';\nimport { SET_EARNED_POINTS_YTD } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\n\n// ----------------\n// REDUCER - For a given state and action, returns the new state. To support time travel, this must not mutate the old state.\n\nconst unloadedState: RewardsState = {\n // reward balance of -1 will display the 'Coming soon' text\n earnedPointsYTD: -1,\n};\n\nexport const rewardsReducer: Reducer = (\n state = unloadedState,\n action,\n): RewardsState => {\n switch (action.type) {\n case SET_EARNED_POINTS_YTD:\n return {\n ...state,\n earnedPointsYTD: action.payload.earnedPointsYTD,\n };\n default:\n return state;\n }\n};\n","import { SET_PROMOTION, SET_PROMOTIONS } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { segmentListLimit } from '../../apis';\nimport { PromotionsState } from '../types/promotions';\n\nconst unloadedState: PromotionsState = {\n list: {\n items: [],\n limit: segmentListLimit,\n skipped: 0,\n total: 0,\n },\n selectedPromotion: null,\n};\n\nexport const promotionsReducer: Reducer = (\n state = unloadedState,\n action,\n): PromotionsState => {\n switch (action.type) {\n case SET_PROMOTION:\n return {\n ...state,\n selectedPromotion: action.payload.selectedPromotion,\n };\n case SET_PROMOTIONS:\n return {\n ...state,\n list: action.payload.list,\n };\n default:\n return state;\n }\n};\n","import { SET_CREDIT, SET_CREDITS } from '../constants';\nimport { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { segmentListLimit } from '../../apis';\nimport { CreditsState } from '../types';\n\nconst unloadedState: CreditsState = {\n list: {\n items: [],\n limit: segmentListLimit,\n skipped: 0,\n total: 0,\n },\n selectedCredit: null,\n};\n\nexport const creditsReducer: Reducer = (\n state = unloadedState,\n action,\n): CreditsState => {\n switch (action.type) {\n case SET_CREDIT:\n return {\n ...state,\n selectedCredit: action.payload.selectedCredit,\n };\n case SET_CREDITS:\n return {\n ...state,\n list: action.payload.list,\n };\n default:\n return state;\n }\n};\n","import { Reducer } from 'redux';\nimport { ApplicationAction } from '../actions';\nimport { SET_PROCESSING_FEE_AMOUNT } from '../constants';\nimport { ProcessingFeeState } from '../types';\n\nconst unloadedState: ProcessingFeeState = {\n amount: null,\n};\n\nexport const processingFeeReducer: Reducer = (\n state = unloadedState,\n action,\n): ProcessingFeeState => {\n switch (action.type) {\n case SET_PROCESSING_FEE_AMOUNT:\n return {\n ...state,\n amount: action.payload.processing_fee_amount,\n };\n default:\n return state;\n }\n};\n","import {\n AuthenticationState,\n ChargeState,\n CustomerState,\n GlobalState,\n SettlementState,\n BalanceTransferState,\n PaymentSourcesState,\n MerchantState,\n ReportsState,\n SplitIoState,\n UsersState,\n PayLinksState,\n ReturnsState,\n RewardsState,\n PromotionsState,\n CreditsState,\n ProcessingFeeState,\n} from './types';\nimport {\n authenticationReducer,\n globalReducer,\n chargeReducer,\n settlementReducer,\n customerReducer,\n balanceTransferReducer,\n paymentSourcesReducer,\n merchantReducer,\n reportsReducer,\n usersReducer,\n payLinksReducer,\n returnsReducer,\n rewardsReducer,\n promotionsReducer,\n creditsReducer,\n processingFeeReducer,\n} from './reducers';\nimport { splitReducer } from '@splitsoftware/splitio-redux';\n\n// The top-level state object\nexport interface ApplicationState {\n authentication: AuthenticationState;\n balanceTransfer: BalanceTransferState;\n global: GlobalState;\n charge: ChargeState;\n settlement: SettlementState;\n customer: CustomerState;\n paymentSources: PaymentSourcesState;\n merchant: MerchantState;\n reports: ReportsState;\n splitio: SplitIoState;\n users: UsersState;\n payLinks: PayLinksState;\n returns: ReturnsState;\n rewards: RewardsState;\n promotions: PromotionsState;\n credits: CreditsState;\n processingFees: ProcessingFeeState;\n}\n\n// Whenever an action is dispatched, Redux will update each top-level application state property using\n// the reducer with the matching name. It's important that the names match exactly, and that the reducer\n// acts on the corresponding ApplicationState property type.\nexport const reducers = {\n authentication: authenticationReducer,\n balanceTransfer: balanceTransferReducer,\n global: globalReducer,\n charge: chargeReducer,\n settlement: settlementReducer,\n customer: customerReducer,\n paymentSources: paymentSourcesReducer,\n merchant: merchantReducer,\n reports: reportsReducer,\n splitio: splitReducer,\n users: usersReducer,\n payLinks: payLinksReducer,\n returns: returnsReducer,\n rewards: rewardsReducer,\n promotions: promotionsReducer,\n credits: creditsReducer,\n processingFees: processingFeeReducer,\n};\n\n// This type can be used as a hint on action creators so that its 'dispatch' and 'getState' params are\n// correctly typed to match your store.\nexport interface AppThunkAction {\n (dispatch: (action: TAction) => void, getState: () => ApplicationState): void;\n}\n","import * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { Provider } from 'react-redux';\nimport { ConnectedRouter } from 'connected-react-router';\nimport { createBrowserHistory } from 'history';\nimport App from './App';\nimport configureStore from './store/configureStore';\n\n// Create browser history to use in the Redux store\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\nexport const history = createBrowserHistory({ basename: baseUrl });\n\ndeclare global {\n interface Window {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n analytics: any;\n }\n}\n\n// listen and notify Segment of client-side page updates\nlet prevPath: string | null = null;\nhistory.listen((location) => {\n if (location.pathname !== prevPath) {\n prevPath = location.pathname;\n window.analytics.page();\n }\n});\n\n// Get the application-wide store instance, prepopulating with state from the server where available.\nexport const store = configureStore(history);\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n);\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\nimport thunk from 'redux-thunk';\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\nimport { History } from 'history';\nimport { ApplicationState, reducers } from './';\n\nexport default function configureStore(history: History, initialState?: ApplicationState) {\n const middleware = [thunk, routerMiddleware(history)];\n\n const rootReducer = combineReducers({\n ...reducers,\n router: connectRouter(history),\n });\n\n const enhancers = [];\n // eslint-disable-next-line\n const windowIfDefined = typeof window === 'undefined' ? null : (window as any);\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\n }\n\n return createStore(rootReducer, initialState, compose(applyMiddleware(...middleware), ...enhancers));\n}\n"],"sourceRoot":""}