import { IJoliCoin, IGem, IUnlockOption } from '@/common/rewards/type'; import { isNumber } from '@jolibox/common'; export const canUseJolicoin = (unlockOptions: IUnlockOption[], joliCoin?: IJoliCoin) => { return unlockOptions.some( (option) => option.type === 'JOLI_COIN' && option.joliCoinChoices.some( (choice) => choice.joliCoinQuantity <= (joliCoin?.balance ?? 0) && !!joliCoin?.enableAutoDeduct ) ); }; export const joliCoinIsEnough = (unlockOptions: IUnlockOption[], joliCoin?: IJoliCoin) => { return unlockOptions.some( (option) => option.type === 'JOLI_COIN' && option.joliCoinChoices.some((choice) => choice.joliCoinQuantity <= (joliCoin?.balance ?? 0)) ); }; // Gem utility functions export const canUseGem = (unlockOptions: IUnlockOption[], gem?: IGem) => { return unlockOptions.some((option) => { if (option.type === 'JOLI_GEM' && isNumber(option.joliGemChoice?.joliGemQuantity)) { return option.joliGemChoice.joliGemQuantity <= (gem?.balance ?? 0) && !!gem?.enableAutoDeduct; } return false; }); }; export const gemIsEnough = (unlockOptions: IUnlockOption[], gem?: IGem) => { const gemOptions = unlockOptions.find((option) => option.type === 'JOLI_GEM'); if (gemOptions) { return (gemOptions.joliGemChoice?.joliGemQuantity ?? 0) <= (gem?.balance ?? 0); } return false; };