mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-30 02:23:47 +00:00
refactor: migrate to eslint flat config and format codebase with prettier
- Remove legacy .eslintrc.cjs and .eslintignore - Add eslint.config.js with flat config, security rules (no-eval, no-implied-eval, no-new-func, no-script-url) - Add .prettierrc and .prettierignore - Format entire codebase with prettier
This commit is contained in:
@@ -1,142 +1,142 @@
|
||||
import apiClient from './client'
|
||||
import apiClient from './client';
|
||||
|
||||
// Types
|
||||
export interface PromoGroupInfo {
|
||||
id: number
|
||||
name: string
|
||||
is_selected: boolean
|
||||
id: number;
|
||||
name: string;
|
||||
is_selected: boolean;
|
||||
}
|
||||
|
||||
export interface ServerListItem {
|
||||
id: number
|
||||
squad_uuid: string
|
||||
display_name: string
|
||||
original_name: string | null
|
||||
country_code: string | null
|
||||
is_available: boolean
|
||||
is_trial_eligible: boolean
|
||||
price_kopeks: number
|
||||
price_rubles: number
|
||||
max_users: number | null
|
||||
current_users: number
|
||||
sort_order: number
|
||||
is_full: boolean
|
||||
availability_status: string
|
||||
created_at: string
|
||||
id: number;
|
||||
squad_uuid: string;
|
||||
display_name: string;
|
||||
original_name: string | null;
|
||||
country_code: string | null;
|
||||
is_available: boolean;
|
||||
is_trial_eligible: boolean;
|
||||
price_kopeks: number;
|
||||
price_rubles: number;
|
||||
max_users: number | null;
|
||||
current_users: number;
|
||||
sort_order: number;
|
||||
is_full: boolean;
|
||||
availability_status: string;
|
||||
created_at: string;
|
||||
}
|
||||
|
||||
export interface ServerListResponse {
|
||||
servers: ServerListItem[]
|
||||
total: number
|
||||
servers: ServerListItem[];
|
||||
total: number;
|
||||
}
|
||||
|
||||
export interface ServerDetail {
|
||||
id: number
|
||||
squad_uuid: string
|
||||
display_name: string
|
||||
original_name: string | null
|
||||
country_code: string | null
|
||||
description: string | null
|
||||
is_available: boolean
|
||||
is_trial_eligible: boolean
|
||||
price_kopeks: number
|
||||
price_rubles: number
|
||||
max_users: number | null
|
||||
current_users: number
|
||||
sort_order: number
|
||||
is_full: boolean
|
||||
availability_status: string
|
||||
promo_groups: PromoGroupInfo[]
|
||||
active_subscriptions: number
|
||||
tariffs_using: string[]
|
||||
created_at: string
|
||||
updated_at: string | null
|
||||
id: number;
|
||||
squad_uuid: string;
|
||||
display_name: string;
|
||||
original_name: string | null;
|
||||
country_code: string | null;
|
||||
description: string | null;
|
||||
is_available: boolean;
|
||||
is_trial_eligible: boolean;
|
||||
price_kopeks: number;
|
||||
price_rubles: number;
|
||||
max_users: number | null;
|
||||
current_users: number;
|
||||
sort_order: number;
|
||||
is_full: boolean;
|
||||
availability_status: string;
|
||||
promo_groups: PromoGroupInfo[];
|
||||
active_subscriptions: number;
|
||||
tariffs_using: string[];
|
||||
created_at: string;
|
||||
updated_at: string | null;
|
||||
}
|
||||
|
||||
export interface ServerUpdateRequest {
|
||||
display_name?: string
|
||||
description?: string
|
||||
country_code?: string
|
||||
is_available?: boolean
|
||||
is_trial_eligible?: boolean
|
||||
price_kopeks?: number
|
||||
max_users?: number
|
||||
sort_order?: number
|
||||
promo_group_ids?: number[]
|
||||
display_name?: string;
|
||||
description?: string;
|
||||
country_code?: string;
|
||||
is_available?: boolean;
|
||||
is_trial_eligible?: boolean;
|
||||
price_kopeks?: number;
|
||||
max_users?: number;
|
||||
sort_order?: number;
|
||||
promo_group_ids?: number[];
|
||||
}
|
||||
|
||||
export interface ServerToggleResponse {
|
||||
id: number
|
||||
is_available: boolean
|
||||
message: string
|
||||
id: number;
|
||||
is_available: boolean;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface ServerTrialToggleResponse {
|
||||
id: number
|
||||
is_trial_eligible: boolean
|
||||
message: string
|
||||
id: number;
|
||||
is_trial_eligible: boolean;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export interface ServerStats {
|
||||
id: number
|
||||
display_name: string
|
||||
squad_uuid: string
|
||||
current_users: number
|
||||
max_users: number | null
|
||||
active_subscriptions: number
|
||||
trial_subscriptions: number
|
||||
usage_percent: number | null
|
||||
id: number;
|
||||
display_name: string;
|
||||
squad_uuid: string;
|
||||
current_users: number;
|
||||
max_users: number | null;
|
||||
active_subscriptions: number;
|
||||
trial_subscriptions: number;
|
||||
usage_percent: number | null;
|
||||
}
|
||||
|
||||
export interface ServerSyncResponse {
|
||||
created: number
|
||||
updated: number
|
||||
removed: number
|
||||
message: string
|
||||
created: number;
|
||||
updated: number;
|
||||
removed: number;
|
||||
message: string;
|
||||
}
|
||||
|
||||
export const serversApi = {
|
||||
// Get all servers
|
||||
getServers: async (includeUnavailable = true): Promise<ServerListResponse> => {
|
||||
const response = await apiClient.get('/cabinet/admin/servers', {
|
||||
params: { include_unavailable: includeUnavailable }
|
||||
})
|
||||
return response.data
|
||||
params: { include_unavailable: includeUnavailable },
|
||||
});
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Get single server
|
||||
getServer: async (serverId: number): Promise<ServerDetail> => {
|
||||
const response = await apiClient.get(`/cabinet/admin/servers/${serverId}`)
|
||||
return response.data
|
||||
const response = await apiClient.get(`/cabinet/admin/servers/${serverId}`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Update server
|
||||
updateServer: async (serverId: number, data: ServerUpdateRequest): Promise<ServerDetail> => {
|
||||
const response = await apiClient.put(`/cabinet/admin/servers/${serverId}`, data)
|
||||
return response.data
|
||||
const response = await apiClient.put(`/cabinet/admin/servers/${serverId}`, data);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Toggle server availability
|
||||
toggleServer: async (serverId: number): Promise<ServerToggleResponse> => {
|
||||
const response = await apiClient.post(`/cabinet/admin/servers/${serverId}/toggle`)
|
||||
return response.data
|
||||
const response = await apiClient.post(`/cabinet/admin/servers/${serverId}/toggle`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Toggle trial eligibility
|
||||
toggleTrial: async (serverId: number): Promise<ServerTrialToggleResponse> => {
|
||||
const response = await apiClient.post(`/cabinet/admin/servers/${serverId}/trial`)
|
||||
return response.data
|
||||
const response = await apiClient.post(`/cabinet/admin/servers/${serverId}/trial`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Get server stats
|
||||
getServerStats: async (serverId: number): Promise<ServerStats> => {
|
||||
const response = await apiClient.get(`/cabinet/admin/servers/${serverId}/stats`)
|
||||
return response.data
|
||||
const response = await apiClient.get(`/cabinet/admin/servers/${serverId}/stats`);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Sync servers with RemnaWave
|
||||
syncServers: async (): Promise<ServerSyncResponse> => {
|
||||
const response = await apiClient.post('/cabinet/admin/servers/sync')
|
||||
return response.data
|
||||
const response = await apiClient.post('/cabinet/admin/servers/sync');
|
||||
return response.data;
|
||||
},
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user