Files
2026-07-13 12:30:28 +08:00

51 lines
1.5 KiB
TypeScript

import chalk from 'chalk';
import inquirer from 'inquirer';
import { clearAuthToken, getAuthConfig } from './utils/webLogin';
import tracker, { getTrackErrorReason } from './utils/tracker';
import {
TRACK_EVENTS,
TRACK_PAGES,
resolveTrackAction,
} from './utils/trackerEvents';
export default async function logoutCmd(): Promise<void> {
try {
// Check if user is logged in
const auth = getAuthConfig();
if (!auth) {
console.log(chalk.yellow('No active session found. You are already logged out.'));
return;
}
// Confirm logout
const answer = await inquirer.prompt([
{
type: 'confirm',
name: 'confirm',
message: `Are you sure you want to log out? (Current address: ${auth.address})`,
default: false,
},
]);
if (!answer.confirm) {
console.log(chalk.blue('Logout cancelled.'));
return;
}
// Clear auth token
clearAuthToken();
void tracker.trackEvent(TRACK_EVENTS.logoutSuccess, TRACK_PAGES.auth, {
a: resolveTrackAction(TRACK_EVENTS.logoutSuccess),
had_session: true,
});
console.log(chalk.green('Successfully logged out.'));
console.log(chalk.gray(`Address ${auth.address} has been removed from local storage.`));
} catch (e: any) {
void tracker.trackEvent(TRACK_EVENTS.logoutFailed, TRACK_PAGES.auth, {
a: resolveTrackAction(TRACK_EVENTS.logoutFailed),
reason: getTrackErrorReason(e),
});
console.log(chalk.red(`Failed to logout: ${e?.message || e}`));
}
}