import { Box, Button, ButtonGroup } from '@rocket.chat/fuselage'; import { useSafely } from '@rocket.chat/fuselage-hooks'; import React, { useState, useEffect } from 'react'; import { useTranslation } from '../../contexts/TranslationContext'; import { useMethod } from '../../contexts/ServerContext'; import { useToastMessageDispatch } from '../../contexts/ToastMessagesContext'; function WorkspaceLoginSection({ onRegisterStatusChange, ...props }) { const t = useTranslation(); const dispatchToastMessage = useToastMessageDispatch(); const checkUserLoggedIn = useMethod('cloud:checkUserLoggedIn'); const getOAuthAuthorizationUrl = useMethod('cloud:getOAuthAuthorizationUrl'); const logout = useMethod('cloud:logout'); const disconnectWorkspace = useMethod('cloud:disconnectWorkspace'); const [isLoggedIn, setLoggedIn] = useSafely(useState(false)); const [isLoading, setLoading] = useSafely(useState(true)); const handleLoginButtonClick = async () => { setLoading(true); try { const url = await getOAuthAuthorizationUrl(); window.location.href = url; } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } finally { setLoading(false); } }; const handleLogoutButtonClick = async () => { setLoading(true); try { await logout(); const isLoggedIn = await checkUserLoggedIn(); setLoggedIn(isLoggedIn); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } finally { setLoading(false); } }; const handleDisconnectButtonClick = async () => { setLoading(true); try { const success = await disconnectWorkspace(); if (!success) { throw Error(t('An error occured disconnecting')); } dispatchToastMessage({ type: 'success', message: t('Disconnected') }); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } finally { await (onRegisterStatusChange && onRegisterStatusChange()); setLoading(false); } }; useEffect(() => { const checkLoginState = async () => { setLoading(true); try { const isLoggedIn = await checkUserLoggedIn(); setLoggedIn(isLoggedIn); } catch (error) { dispatchToastMessage({ type: 'error', message: error }); } finally { setLoading(false); } }; checkLoginState(); }, [checkUserLoggedIn, dispatchToastMessage, setLoading, setLoggedIn]); return

{t('Cloud_workspace_connected')}

{isLoggedIn ? : }

{t('Cloud_workspace_disconnect')}

; } export default WorkspaceLoginSection;