import React from "react";
import {Button, Col, Container, Modal, Row} from "react-bootstrap";
import Cookies from 'js-cookie';

/**
 * ActivationReminder REACT class.
 */
export default class ActivationReminder extends React.Component {

    /**
     * @param {Object} props
     */
    constructor( props ) {
        super( props );

        let cookie_name = props.cookie_name;

        this.state = {
            show: this.shouldShow( cookie_name ),
            logo_url: props.logo_url,
            plugin_dir: props.plugin_dir,
            plugin_title: props.plugin_title,
            cookie_name: cookie_name,
        };

        this.handleClose = this.handleClose.bind(this);
        this.handleGetLicence = this.handleGetLicence.bind(this);
    };

    /**
     *
     */
    handleClose() {
        this.setState( { show: false } );
    }

    /**
     * @param {String} cookie_name
     * @return {boolean}
     */
    shouldShow( cookie_name ) {
        let timestamp = Math.round(new Date() / 1000);
        let cookie = Cookies.get( cookie_name );
        if ( cookie === undefined ) {
            Cookies.set( cookie_name, timestamp + 60 * 60 * 24 * 14, { expires: 730 } );
        } else if ( cookie < timestamp ) {
            Cookies.set( cookie_name, timestamp + 60 * 60 * 24 * 14, { expires: 730 } );
            return true;
        }

        return false;
    }

    /**
     *
     */
    handleGetLicence() {
        window.open( this.props.buy_plugin_url );
    }

    /**
     * @returns {JSX.Element}
     */
    render() {
        let state = this.state;
        return (
            <Modal
                size="lg"
                show={state.show}
                onHide={this.handleClose}
                className={"wpdesk-activation-reminder-popup"}
                centered
            >
                <Modal.Header closeButton></Modal.Header>
                <Modal.Body>
                    <Container>
                        <img className={"logo"} src={this.state.logo_url} />
                    </Container>
                    <Container>
                        <Row className={"header"}>
                            <Col>
                                <h1>Activate {this.props.plugin_title} License</h1>
                                <h2>We've noticed that you haven't activated the license for the {this.props.plugin_title} plugin.</h2>
                            </Col>
                        </Row>
                        <Row className={"benefits"}>
                            <Col>
                                <strong>With a valid license you get:</strong>
                                <ul>
                                    <li><span className="dashicons dashicons-yes"/>premium support</li>
                                    <li><span className="dashicons dashicons-yes"/>new features</li>
                                    <li><span className="dashicons dashicons-yes"/>safety updates</li>
                                    <li><span className="dashicons dashicons-yes"/>plugin from a safe source, with verified code and without any malware</li>
                                </ul>
                                In addition you'll support WordPress and WooCommerce community.<br/>
                                <a target="_blank" href="https://wpde.sk/fs-license">Learn more about benefits of having an active license key →</a>
                            </Col>
                        </Row>
                        <Row className={"get-licence"}>
                            <Col>
                                <Button variant="primary" onClick={this.handleGetLicence}>
                                    Get your licence!
                                </Button>
                            </Col>
                        </Row>
                        <Row className={"activation"}>
                            <Col>
                                Already have a license key? <a target="_blank" href={this.props.how_to_activate_link}>Learn how to activate it in your store →</a>
                            </Col>
                        </Row>
                    </Container>
                </Modal.Body>
            </Modal>
        );
    }


}