{ "version": 3, "sources": ["../../../../../../owl-nest/common/eula-modal/src/EulaModal.tsx", "../../../../../../owl-nest/common/eula-modal/index.ts"], "sourcesContent": ["import React, { useState, useEffect } from 'react'\nimport styled from 'styled-components'\n\nimport { t } from '@ulule/localize'\nimport * as plume from '@ulule/owl-kit-components/next'\nimport * as api from '@owl-nest/api-client/next'\n\nimport { AuthenticatedUser } from '@owl-nest/api-client/latest'\nimport { EULA_UPDATED_AT } from '@owl-nest/config'\n\ntype EulaModalProps = {\n user: AuthenticatedUser\n onValid?: () => void\n refresh?: () => void\n}\n\nfunction useEulaModal(user: AuthenticatedUser, cguDate: string | undefined, onValid: () => void, refresh: () => void) {\n const [isEulaOpen, setEulaOpen] = useState(false)\n\n return { isEulaOpen, shouldDisplayEula, acceptEula }\n\n async function acceptEula() {\n const response = await api.client('POST /users/:id/accepteula', {\n urlParams: { id: String(user.id) },\n })\n\n if (response.isRight()) {\n refresh()\n setEulaOpen(false)\n onValid()\n }\n }\n\n async function shouldDisplayEula() {\n if (!cguDate || !user.eula_accepted_at) {\n return\n }\n\n const userEulaTimestamp = user.eula_accepted_at ? new Date(user.eula_accepted_at).getTime() : 0\n const cguTimestamp = new Date(cguDate).getTime()\n\n if (cguTimestamp > userEulaTimestamp) {\n setEulaOpen(true)\n } else {\n onValid()\n }\n }\n}\n\nexport function EulaModal({ user, onValid = () => {}, refresh = () => {} }: EulaModalProps) {\n const { isEulaOpen, shouldDisplayEula, acceptEula } = useEulaModal(user, EULA_UPDATED_AT, onValid, refresh)\n\n useEffect(() => {\n shouldDisplayEula()\n }, [user])\n\n if (!isEulaOpen) {\n return null\n }\n\n return (\n \n {t('Update of our Terms of Use')}\n \n {t('To continue using our services, please read the changes to our terms and conditions \uD83D\uDC47')}\n \n\n