import React, { useState, useEffect } from 'react'
import Modal from 'components/CommonKit/Modal/Modal'
import StyledButton from 'components/CommonKit/Button/StyledButton'
import { translate } from 'cozy-ui/react/I18n'
import { withClient, Client } from 'cozy-client'
import { USERPROFILE_DOCTYPE } from 'doctypes'
import useInstanceSettings from 'components/Hooks/userInstanceSettings'

interface WelcomeModalContainerProps {
  t: Function
  client: Client
}

const WelcomeModalContainer: React.FC<WelcomeModalContainerProps> = ({
  t,
  client,
}: WelcomeModalContainerProps) => {
  const [modalOpen, setModalOpen] = useState<boolean>(false)

  const { data: instanceSettings } = useInstanceSettings(client)
  async function updateWelcomeModalState() {
    await client
      .query(client.find(USERPROFILE_DOCTYPE).limitBy(1))
      .then(async ({ data }) => {
        const doc = data[0]
        await client.save({
          ...doc,
          haveSeenWelcomeModal: true,
        })
      })
  }

  const handleCloseClick = () => {
    setModalOpen(false)
    updateWelcomeModalState()
  }

  useEffect(() => {
    async function getWelcomeModalState() {
      await client
        .query(client.find(USERPROFILE_DOCTYPE).limitBy(1))
        .then(async ({ data }) => {
          const welcomeModalState = data[0].haveSeenWelcomeModal
          if (!welcomeModalState) {
            setModalOpen(true)
          }
        })
    }
    getWelcomeModalState()
  }, [])

  return (
    <React.Fragment>
      <Modal
        open={modalOpen}
        handleCloseClick={handleCloseClick}
        yellowBorder="yellow-border"
      >
        <div className="wm-header text-24-bold">
          {t('COMMON.WELCOME_MODAL_TITLE')}
        </div>
        <div className="wm-name text-24-bold">
          {instanceSettings.public_name
            ? `${instanceSettings.public_name} !`
            : null}
        </div>

        <div className="wm-perso text-18-bold">
          {t('COMMON.WELCOME_MODAL_PERSO')}
        </div>
        <div className="wm-connect text-18-bold">
          {t('COMMON.WELCOME_MODAL_CONNECT')}
        </div>
        <StyledButton className="button-ok" onClick={handleCloseClick}>
          {t('COMMON.WELCOME_MODAL_OK')}
        </StyledButton>
      </Modal>
    </React.Fragment>
  )
}

export default translate()(withClient(WelcomeModalContainer))