import { IHttpClient } from '@/common/http'; import { IAdBreakParams } from '@/common/ads'; import { createCommonJolicoinRewardHandler } from './utils/coins/jolicoin/jolicoin-handler'; import { unlockOptionsHandler } from './utils/common'; import { createShowUnlockWithCurrencyModal, createInitiateAndAwaitPayment, createShowUnloginModal } from './utils/coins/commands'; export type JolicoinOnlyRewardsHandler = (params: IAdBreakParams) => Promise; export const createJolicoinOnlyRewardHandler = ( httpClient: IHttpClient, { onUnlockSuccess, onUnlockFailed, hasSubscription }: { onUnlockSuccess?: (data: { quantity: number; balance: number }) => void; onUnlockFailed?: () => void; hasSubscription: () => boolean; } ): JolicoinOnlyRewardsHandler => { const handleUnlockFailed = (() => (params: IAdBreakParams) => { onUnlockFailed?.(); params.adBreakDone?.({ breakType: params.type, breakFormat: params.type === 'reward' ? 'reward' : 'interstitial', breakStatus: 'noAdPreloaded' }); })(); const showUnlockWithJolicoinModal = createShowUnlockWithCurrencyModal('JOLI_COIN', { confirmButtonText: 'jolicoin.useJolicoin', cancelButtonText: 'jolicoin.noThanks' }); const initiateAndAwaitPayment = createInitiateAndAwaitPayment('JOLI_COIN', { confirmButtonText: 'jolicoin.payAndUnlock', cancelButtonText: 'jolicoin.noThanks' }); const showUnloginModal = createShowUnloginModal('JOLI_COIN', { confirmButtonText: 'loginGuide.login', cancelButtonText: 'loginGuide.noThanks' }); const jolicoinOnlyRewardHandler = createCommonJolicoinRewardHandler('JOLI_COIN', httpClient, { handlers: { handleUnlockSuccess: onUnlockSuccess, handleUnlockFailed, unlockOptionsHandler, initiateAndAwaitPayment, showUnlockWithCurrencyModal: showUnlockWithJolicoinModal, showUnloginModal, hasSubscription } }); return jolicoinOnlyRewardHandler; };