import { useState, useEffect, useRef } from 'react' import { useTranslation } from 'react-i18next' import { Button } from '/src/components' import { useTWAStore } from '/src/stores' import { Wrapper, Options, } from './Donate.styles' import paypal_logo from '/src/res/paypal.svg' const PAYMENT_METHOD = 'https://play.google.com/billing' const SKU = 'crab_donation' const Donate = () => { const store = useTWAStore() const { t } = useTranslation('common') const firstLinkRef = useRef() const modalRef = useRef() const [isOpen, _setIsOpen] = useState(false) const [closed, setClosed] = useState(false) const setIsOpen = open => { _setIsOpen(open) if (open) { window.setTimeout(() => firstLinkRef.current.focus(), 150) } } const linkPressed = () => { setIsOpen(false) gtag('event', 'donate', { 'event_category': 'donate' }) } useEffect(() => { if (store.TWA === undefined) { store.setTWA(document.referrer.includes('android-app://fit.crab')) } }, [store]) const acknowledge = async (token, type='repeatable', onComplete = () => {}) => { try { const service = await window.getDigitalGoodsService(PAYMENT_METHOD) await service.acknowledge(token, type) if ('acknowledge' in service) { // DGAPI 1.0 service.acknowledge(token, type) } else { // DGAPI 2.0 service.consume(token) } onComplete() } catch (error) { console.error(error) } } const purchase = () => { if (!window.PaymentRequest) return false if (!window.getDigitalGoodsService) return false const supportedInstruments = [{ supportedMethods: PAYMENT_METHOD, data: { sku: SKU } }] const details = { total: { label: 'Total', amount: { currency: 'AUD', value: '0' } }, } const request = new PaymentRequest(supportedInstruments, details) request.show() .then(response => { response .complete('success') .then(() => { console.log(`Payment done: ${JSON.stringify(response, undefined, 2)}`) if (response.details && response.details.token) { const token = response.details.token console.log(`Read Token: ${token.substring(0, 6)}...`) alert(t('donate.messages.success')) acknowledge(token) } }) .catch(e => { console.error(e.message) alert(t('donate.messages.error')) }) }) .catch(e => { console.error(e) alert(t('donate.messages.error')) }) } return ( { if (modalRef.current?.contains(e.relatedTarget)) return setIsOpen(false) if (e.relatedTarget && e.relatedTarget.id === 'donate_button') { setClosed(true) } }} > Donate with PayPal {t('donate.options.$2')} {t('donate.options.$5')} {t('donate.options.$10')} {t('donate.options.choose')} ) } export default Donate