mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-28 09:33:46 +00:00
56 lines
1.3 KiB
TypeScript
56 lines
1.3 KiB
TypeScript
import { createContext } from 'react';
|
|
|
|
export interface WSMessage {
|
|
type: string;
|
|
// Ticket events
|
|
ticket_id?: number;
|
|
title?: string;
|
|
// Common
|
|
message?: string;
|
|
user_id?: number;
|
|
is_admin?: boolean;
|
|
// Balance events
|
|
amount_kopeks?: number;
|
|
amount_rubles?: number;
|
|
new_balance_kopeks?: number;
|
|
new_balance_rubles?: number;
|
|
description?: string;
|
|
// Subscription events
|
|
subscription_id?: number;
|
|
expires_at?: string;
|
|
new_expires_at?: string;
|
|
tariff_name?: string;
|
|
days_left?: number;
|
|
// SBP recurring events
|
|
status?: string;
|
|
next_charge_at?: string | null;
|
|
// Device purchase events
|
|
devices_added?: number;
|
|
new_device_limit?: number;
|
|
// Traffic purchase events
|
|
traffic_gb_added?: number;
|
|
new_traffic_limit_gb?: number;
|
|
// Autopay events
|
|
required_kopeks?: number;
|
|
required_rubles?: number;
|
|
balance_kopeks?: number;
|
|
balance_rubles?: number;
|
|
reason?: string;
|
|
// Account events (ban/warning)
|
|
// Referral events
|
|
bonus_kopeks?: number;
|
|
bonus_rubles?: number;
|
|
referral_name?: string;
|
|
// Payment events
|
|
payment_method?: string;
|
|
}
|
|
|
|
export type MessageHandler = (message: WSMessage) => void;
|
|
|
|
export interface WebSocketContextValue {
|
|
isConnected: boolean;
|
|
subscribe: (handler: MessageHandler) => () => void;
|
|
}
|
|
|
|
export const WebSocketContext = createContext<WebSocketContextValue | null>(null);
|