/* Graphictoria 5 (https://gtoria.net) Copyright © XlXi 2022 */ import { createRef, Component } from 'react'; import classNames from 'classnames/bind'; const itemId = 'gt-item'; class PurchaseConfirmationModal extends Component { constructor(props) { super(props); this.state = { }; this.ModalRef = createRef(); this.Modal = null; } componentDidMount() { let itemElement = document.getElementById(itemId); if(itemElement) { this.setState({ assetName: itemElement.getAttribute('data-asset-name'), assetCreator: itemElement.getAttribute('data-asset-creator'), assetType: itemElement.getAttribute('data-asset-type'), assetPrice: parseInt(itemElement.getAttribute('data-asset-price')), userTokens: parseInt(itemElement.getAttribute('data-user-currency')) }); } this.Modal = new Bootstrap.Modal(this.ModalRef.current); this.Modal.show(); this.ModalRef.current.addEventListener('hidden.bs.modal', (event) => { this.props.setModal(null); }) } componentWillUnmount() { this.Modal.dispose(); } render() { return (
Purchase Item

Would you like to purchase the { this.state.assetType } "{ this.state.assetName }" from { this.state.assetCreator } for { this.state.assetPrice }?

{ this.state.assetName }
 

You will have { Math.max(0, (this.state.userTokens - this.state.assetPrice)) } after this purchase.

); } } class NotEnoughTokensModal extends Component { constructor(props) { super(props); this.state = { }; this.ModalRef = createRef(); this.Modal = null; } componentDidMount() { let itemElement = document.getElementById(itemId); if(itemElement) { this.setState({ assetPrice: parseInt(itemElement.getAttribute('data-asset-price')), userTokens: parseInt(itemElement.getAttribute('data-user-currency')) }); } this.Modal = new Bootstrap.Modal(this.ModalRef.current); this.Modal.show(); this.ModalRef.current.addEventListener('hidden.bs.modal', (event) => { this.props.setModal(null); }) } componentWillUnmount() { this.Modal.dispose(); } render() { return (
Insufficient Funds

You need { this.state.assetPrice - this.state.userTokens } more to purchase this item.

); } } class PurchaseButton extends Component { constructor(props) { super(props); this.state = { loaded: false, showModal: false }; this.visibleModal = null; this.showPrompt = this.showPrompt.bind(this); this.setModal = this.setModal.bind(this); } componentDidMount() { let itemElement = document.getElementById(itemId); if(itemElement) { this.setState({ assetOnSale: (itemElement.getAttribute('data-asset-on-sale') === '1'), canAfford: (itemElement.getAttribute('data-can-afford') === '1') }); } this.setState({loaded: true}); } showPrompt() { if(this.state.canAfford) this.setModal(); else this.setModal(); } setModal(modal = null) { this.visibleModal = modal; if(modal) { this.setState({'showModal': true}); } else { this.setState({'showModal': false}); } } render() { return ( <> { this.state.showModal ? this.visibleModal : null } ); } } export default PurchaseButton;