feat(geplante-nachrichten): scheduled message rule engine with bot delivery, admin UI, and manual trigger

This commit is contained in:
Matthias Hochmeister
2026-04-17 09:10:57 +02:00
parent 6614fbaa68
commit 8a0c4200ff
24 changed files with 2208 additions and 69 deletions

View File

@@ -0,0 +1,36 @@
import { api } from './api';
import type {
ScheduledMessageRule,
ScheduledMessagesListResponse,
ScheduledMessageDetailResponse,
RoomsResponse,
} from '../types/scheduledMessages.types';
export const scheduledMessagesApi = {
getAll: () =>
api.get<ScheduledMessagesListResponse>('/scheduled-messages').then(r => r.data),
getById: (id: string) =>
api.get<ScheduledMessageDetailResponse>(`/scheduled-messages/${id}`).then(r => r.data),
getRooms: () =>
api.get<RoomsResponse>('/scheduled-messages/rooms').then(r => r.data),
create: (data: Partial<ScheduledMessageRule>) =>
api.post<ScheduledMessageDetailResponse>('/scheduled-messages', data).then(r => r.data),
update: (id: string, data: Partial<ScheduledMessageRule>) =>
api.patch<ScheduledMessageDetailResponse>(`/scheduled-messages/${id}`, data).then(r => r.data),
delete: (id: string) =>
api.delete(`/scheduled-messages/${id}`).then(r => r.data),
subscribe: (id: string, roomToken: string) =>
api.post(`/scheduled-messages/${id}/subscribe`, { room_token: roomToken }).then(r => r.data),
unsubscribe: (id: string) =>
api.delete(`/scheduled-messages/${id}/subscribe`).then(r => r.data),
trigger: (id: string) =>
api.post(`/scheduled-messages/${id}/trigger`).then(r => r.data),
};