Newer
Older
import React, { useCallback, useState } from 'react'
import { useI18n } from 'cozy-ui/transpiled/react/I18n'
import { useClient } from 'cozy-client'
import { OAuthWindow } from 'cozy-harvest-lib/dist/components/OAuthWindow'
import Button from '@material-ui/core/Button'
import StyledIcon from 'components/CommonKit/Icon/StyledIcon'
import StyledBlackSpinner from 'components/CommonKit/Spinner/StyledBlackSpinner'
import { getPartnerPicto } from 'utils/picto'
interface FormOAuthProps {
const FormOAuth: React.FC<FormOAuthProps> = ({
highlightedStyle = true,
}: FormOAuthProps) => {
const IDLE = 'idle'
const WAITING = 'waiting'
const { t } = useI18n()
const client = useClient()
const [status, setStatus] = useState<string>(IDLE)
}, [])
const startOAuth = useCallback(() => {
const handleAccountId = useCallback(
(accountId: string) => {
endOAuth()
onSuccess(accountId)
},
const handleOAuthCancel = useCallback(() => {
const icon = getPartnerPicto(
konnector ? konnector.slug : '',
highlightedStyle
)
if (!konnector) {
return null
}
return (
aria-label={t('auth.accessibility.button_connect')}
root: `${
highlightedStyle ? 'btn-highlight' : 'btn-secondary-negative'
}`,
<div className="authform-button-content">
<div className="authform-button-content-icon">
{isWaiting ? (
<StyledBlackSpinner size={48} />
) : (
<StyledIcon icon={icon} size={80} />
<div className="authform-button-text text-18-bold">
<div>{t('auth.' + konnector.slug + '.connect.label1')}</div>
<div>{t('auth.' + konnector.slug + '.connect.label2')}</div>
{isWaiting && (
<OAuthWindow
client={client}
konnector={konnector}
redirectSlug={client.appMetadata.slug}
onSuccess={handleAccountId}
onCancel={handleOAuthCancel}
t={t}
/>
)}
</>
)
}