import React, { Fragment, useState } from 'react'; import ElementorBanner from '../Common/ElementorBanner'; import UISpinner from '../../shared/UIComponents/UISpinner'; import ElementorMeetingWarning from './ElementorMeetingWarning'; import useMeetings, { useSelectedMeetingCalendar, } from '../../shared/Meeting/hooks/useMeetings'; import { __ } from '@wordpress/i18n'; import Raven from 'raven-js'; import { BackgroudAppContext, useBackgroundAppContext, } from '../../iframe/useBackgroundApp'; import { refreshToken } from '../../constants/leadinConfig'; import { getOrCreateBackgroundApp } from '../../utils/backgroundAppUtils'; import { isRefreshTokenAvailable } from '../../utils/isRefreshTokenAvailable'; interface IElementorMeetingSelectProps { url: string; setAttributes: Function; } function ElementorMeetingSelect({ url, setAttributes, }: IElementorMeetingSelectProps) { const { mappedMeetings: meetings, loading, error, reload, connectCalendar, } = useMeetings(); const selectedMeetingCalendar = useSelectedMeetingCalendar(url); const [localUrl, setLocalUrl] = useState(url); const handleConnectCalendar = () => { return connectCalendar() .then(() => { reload(); }) .catch(error => { Raven.captureMessage('Unable to connect calendar', { extra: { error }, }); }); }; return ( {loading ? (
) : error ? ( {__( 'Please refresh your meetings or try again in a few minutes', 'leadin' )} ) : ( {selectedMeetingCalendar && ( )} {meetings.length > 1 && ( )} )}
); } function ElementorMeetingSelectWrapper(props: IElementorMeetingSelectProps) { const isBackgroundAppReady = useBackgroundAppContext(); return ( {!isBackgroundAppReady ? (
) : ( )}
); } export default function ElementorMeetingsSelectContainer( props: IElementorMeetingSelectProps ) { return ( ); }