UNPKG

@elevenlabs/convai-cli

Version:

CLI tool to manage ElevenLabs conversational AI agents

84 lines 4.2 kB
import React, { useState, useEffect } from 'react'; import { Box, Text, useApp, useInput } from 'ink'; import App from '../App.js'; import StatusCard from '../components/StatusCard.js'; import theme from '../themes/elevenlabs.js'; import { isLoggedIn, removeApiKey } from '../../config.js'; export const LogoutView = ({ onComplete }) => { const { exit } = useApp(); const [confirming, setConfirming] = useState(true); const [processing, setProcessing] = useState(false); const [success, setSuccess] = useState(false); const [error, setError] = useState(null); const [notLoggedIn, setNotLoggedIn] = useState(false); useInput((input) => { if (confirming) { if (input.toLowerCase() === 'y') { handleLogout(); } else if (input.toLowerCase() === 'n') { exit(); } } }); useEffect(() => { const checkLoginStatus = async () => { const loggedIn = await isLoggedIn(); if (!loggedIn) { setNotLoggedIn(true); setConfirming(false); setTimeout(() => { if (onComplete) { onComplete(); } else { exit(); } }, 2000); } }; checkLoginStatus(); }, [exit, onComplete]); const handleLogout = async () => { setConfirming(false); setProcessing(true); try { await removeApiKey(); setProcessing(false); setSuccess(true); setTimeout(() => { if (onComplete) { onComplete(); } else { exit(); } }, 2000); } catch (err) { setError(err instanceof Error ? err.message : 'Failed to logout'); setProcessing(false); } }; return (React.createElement(App, { title: "ElevenLabs Conversational AI", subtitle: "Logout", showOverlay: !success && !notLoggedIn }, React.createElement(Box, { flexDirection: "column", gap: 1 }, notLoggedIn ? (React.createElement(React.Fragment, null, React.createElement(StatusCard, { title: "Not Logged In", status: "warning", message: "You are not currently logged in" }), React.createElement(Box, { marginTop: 1 }, React.createElement(Text, { color: theme.colors.text.secondary }, "No active session to logout from")))) : confirming ? (React.createElement(React.Fragment, null, React.createElement(StatusCard, { title: "Confirm Logout", status: "warning", message: "Are you sure you want to logout?", details: [ "This will remove your stored API key", "You'll need to login again to use the CLI" ] }), React.createElement(Box, { marginTop: 1 }, React.createElement(Text, { color: theme.colors.text.primary }, "Do you want to logout? (y/n):")))) : processing ? (React.createElement(StatusCard, { title: "Logging Out", status: "loading", message: "Removing stored credentials..." })) : success ? (React.createElement(React.Fragment, null, React.createElement(StatusCard, { title: "Logout Successful", status: "success", message: "You have been logged out" }), React.createElement(Box, { marginTop: 1 }, React.createElement(Text, { color: theme.colors.success }, "\u2713 API key removed successfully")), React.createElement(Box, { marginTop: 1 }, React.createElement(Text, { color: theme.colors.text.secondary }, "Run 'convai login' to authenticate again")))) : error ? (React.createElement(React.Fragment, null, React.createElement(StatusCard, { title: "Logout Failed", status: "error", message: error }), React.createElement(Box, { marginTop: 1 }, React.createElement(Text, { color: theme.colors.error }, "\u2717 Failed to remove credentials")))) : null))); }; export default LogoutView; //# sourceMappingURL=LogoutView.js.map