@elevenlabs/convai-cli
Version:
CLI tool to manage ElevenLabs conversational AI agents
84 lines • 4.2 kB
JavaScript
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