Use TelegramConnectStatus enum for connect status instead of magic strings

This commit is contained in:
Paulo Castellano 2026-06-14 09:59:36 -03:00
parent 92e6425906
commit 58eab0619b
2 changed files with 18 additions and 6 deletions

View file

@ -25,11 +25,14 @@ import {
connect as connectTelegram,
status as telegramStatus,
} from '@/routes/app/social/telegram';
import {
TelegramConnectStatus,
type TelegramConnectStatusValue,
} from '@/types/telegram-connect-status';
const open = defineModel<boolean>('open', { required: true });
type Phase = 'loading' | 'ready' | 'connected' | 'expired' | 'error';
type ConnectStatus = 'unknown' | 'pending' | 'connected';
interface ConnectResponse {
code: string;
@ -46,9 +49,10 @@ const botUsername = ref('');
const errorMessage = ref('');
const httpConnect = useHttp<Record<string, never>, ConnectResponse>({});
const httpStatus = useHttp<Record<string, never>, { status: ConnectStatus }>(
{},
);
const httpStatus = useHttp<
Record<string, never>,
{ status: TelegramConnectStatusValue }
>({});
let pollTimer: ReturnType<typeof setTimeout> | null = null;
@ -67,7 +71,7 @@ const poll = async () => {
telegramStatus.url({ query: { code: code.value } }),
);
if (response?.status === 'connected') {
if (response?.status === TelegramConnectStatus.Connected) {
phase.value = 'connected';
stopPolling();
toast.success(trans('accounts.telegram.connected_toast'));
@ -79,7 +83,7 @@ const poll = async () => {
}
// The signed code expired (or the session was lost): prompt a fresh one.
if (response?.status === 'unknown') {
if (response?.status === TelegramConnectStatus.Unknown) {
phase.value = 'expired';
stopPolling();
return;

View file

@ -0,0 +1,8 @@
export const TelegramConnectStatus = {
Unknown: 'unknown',
Pending: 'pending',
Connected: 'connected',
} as const;
export type TelegramConnectStatusValue =
(typeof TelegramConnectStatus)[keyof typeof TelegramConnectStatus];