import { Box, Button, ButtonGroup, Icon, Scrollable, Throbber } from '@rocket.chat/fuselage'; import Clipboard from 'clipboard'; import React, { useEffect, useState, useRef } from 'react'; import { Modal } from '../../components/basic/Modal'; import { useTranslation } from '../../contexts/TranslationContext'; import { useMethod, useEndpoint } from '../../contexts/ServerContext'; import { useToastMessageDispatch } from '../../contexts/ToastMessagesContext'; import MarkdownText from '../../components/basic/MarkdownText'; import { cloudConsoleUrl } from './constants'; function CopyStep({ onNextButtonClick }) { const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); const [clientKey, setClientKey] = useState(''); const getWorkspaceRegisterData = useMethod('cloud:getWorkspaceRegisterData'); useEffect(() => { const loadWorkspaceRegisterData = async () => { const clientKey = await getWorkspaceRegisterData(); setClientKey(clientKey); }; loadWorkspaceRegisterData(); }, [getWorkspaceRegisterData]); const copyRef = useRef(); useEffect(function() { const clipboard = new Clipboard(copyRef.current); clipboard.on('success', () => { dispatchToastMessage({ type: 'success', message: t('Copied') }); }); return () => { clipboard.destroy(); }; }, [dispatchToastMessage, t]); return <>

{t('Cloud_register_offline_helper')}

{clientKey}
; } function PasteStep({ onBackButtonClick, onFinish }) { const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); const [isLoading, setLoading] = useState(false); const [cloudKey, setCloudKey] = useState(''); const handleCloudKeyChange = (e) => { setCloudKey(e.currentTarget.value); }; const registerManually = useEndpoint('POST', 'cloud.manualRegister'); const handleFinishButtonClick = async () => { setLoading(true); try { await registerManually({}, { cloudBlob: cloudKey }); dispatchToastMessage({ type: 'success', message: t('Cloud_register_success') }); } catch (error) { dispatchToastMessage({ type: 'error', message: t('Cloud_register_error') }); } finally { setLoading(false); onFinish && onFinish(); } }; return <>

{t('Cloud_register_offline_finish_helper')}

; } const Steps = { COPY: 'copy', PASTE: 'paste', }; function ManualWorkspaceRegistrationModal({ onClose, props }) { const t = useTranslation(); const [step, setStep] = useState(Steps.COPY); const handleNextButtonClick = () => { setStep(Steps.PASTE); }; const handleBackButtonClick = () => { setStep(Steps.COPY); }; return {t('Cloud_Register_manually')} {(step === Steps.COPY && ) || (step === Steps.PASTE && )} ; } export default ManualWorkspaceRegistrationModal;