mirror of
https://github.com/chillpadclub/bedolaga-cabinet.git
synced 2026-07-29 18:13:47 +00:00
Update adminBroadcasts.ts
This commit is contained in:
@@ -1,6 +1,8 @@
|
||||
import apiClient from './client';
|
||||
|
||||
// Types
|
||||
export type BroadcastChannel = 'telegram' | 'email' | 'both';
|
||||
|
||||
export interface BroadcastFilter {
|
||||
key: string;
|
||||
label: string;
|
||||
@@ -21,6 +23,10 @@ export interface BroadcastFiltersResponse {
|
||||
custom_filters: BroadcastFilter[];
|
||||
}
|
||||
|
||||
export interface EmailFiltersResponse {
|
||||
filters: BroadcastFilter[];
|
||||
}
|
||||
|
||||
export interface TariffForBroadcast {
|
||||
id: number;
|
||||
name: string;
|
||||
@@ -55,6 +61,24 @@ export interface BroadcastCreateRequest {
|
||||
media?: BroadcastMedia;
|
||||
}
|
||||
|
||||
export interface EmailBroadcastCreateRequest {
|
||||
target: string;
|
||||
subject: string;
|
||||
html_content: string;
|
||||
}
|
||||
|
||||
export interface CombinedBroadcastCreateRequest {
|
||||
channel: BroadcastChannel;
|
||||
target: string;
|
||||
// Telegram fields
|
||||
message_text?: string;
|
||||
selected_buttons?: string[];
|
||||
media?: BroadcastMedia;
|
||||
// Email fields
|
||||
email_subject?: string;
|
||||
email_html_content?: string;
|
||||
}
|
||||
|
||||
export interface Broadcast {
|
||||
id: number;
|
||||
target_type: string;
|
||||
@@ -79,6 +103,10 @@ export interface Broadcast {
|
||||
created_at: string;
|
||||
completed_at: string | null;
|
||||
progress_percent: number;
|
||||
// New fields for channel support
|
||||
channel?: BroadcastChannel;
|
||||
email_subject?: string | null;
|
||||
email_html_content?: string | null;
|
||||
}
|
||||
|
||||
export interface BroadcastListResponse {
|
||||
@@ -105,7 +133,7 @@ export interface MediaUploadResponse {
|
||||
}
|
||||
|
||||
export const adminBroadcastsApi = {
|
||||
// Get all available filters with counts
|
||||
// Get all available filters with counts (for Telegram)
|
||||
getFilters: async (): Promise<BroadcastFiltersResponse> => {
|
||||
const response = await apiClient.get<BroadcastFiltersResponse>(
|
||||
'/cabinet/admin/broadcasts/filters',
|
||||
@@ -113,6 +141,14 @@ export const adminBroadcastsApi = {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Get email filters with counts
|
||||
getEmailFilters: async (): Promise<EmailFiltersResponse> => {
|
||||
const response = await apiClient.get<EmailFiltersResponse>(
|
||||
'/cabinet/admin/broadcasts/email-filters',
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Get tariffs for filtering
|
||||
getTariffs: async (): Promise<BroadcastTariffsResponse> => {
|
||||
const response = await apiClient.get<BroadcastTariffsResponse>(
|
||||
@@ -140,12 +176,35 @@ export const adminBroadcastsApi = {
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Create and start broadcast
|
||||
// Preview email broadcast (get recipients count)
|
||||
previewEmail: async (target: string): Promise<BroadcastPreviewResponse> => {
|
||||
const response = await apiClient.post<BroadcastPreviewResponse>(
|
||||
'/cabinet/admin/broadcasts/email-preview',
|
||||
{
|
||||
target,
|
||||
},
|
||||
);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Create and start broadcast (Telegram only - legacy)
|
||||
create: async (data: BroadcastCreateRequest): Promise<Broadcast> => {
|
||||
const response = await apiClient.post<Broadcast>('/cabinet/admin/broadcasts', data);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Create email broadcast
|
||||
createEmail: async (data: EmailBroadcastCreateRequest): Promise<Broadcast> => {
|
||||
const response = await apiClient.post<Broadcast>('/cabinet/admin/broadcasts/email', data);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Create combined broadcast (Telegram, Email, or Both)
|
||||
createCombined: async (data: CombinedBroadcastCreateRequest): Promise<Broadcast> => {
|
||||
const response = await apiClient.post<Broadcast>('/cabinet/admin/broadcasts/send', data);
|
||||
return response.data;
|
||||
},
|
||||
|
||||
// Get list of broadcasts
|
||||
list: async (limit = 20, offset = 0): Promise<BroadcastListResponse> => {
|
||||
const response = await apiClient.get<BroadcastListResponse>('/cabinet/admin/broadcasts', {
|
||||
|
||||
Reference in New Issue
Block a user