125 lines
3.8 KiB
TypeScript

import { EventType } from '../../types/event.type';
import { FileEventJson, decodeFileEventJson } from './file.event-json';
import {
MassTextEventJson,
decodeMassTextEventJson
} from './mass-text.event-json';
import { StickerEventJson, decodeStickerEventJson } from './sticker.event-json';
import { PlanEventJson, decodePlanEventJson } from './plan.event-json';
import {
VideoConferenceEventJson,
decodeVideoConferenceEventJson
} from './video-conference.event-json';
import {
RenameRoomEventJson,
decodeRenameRoomEventJson
} from './rename-room.event-json';
import {
TranslationEventJson,
decodeTranslationEventJson
} from './translation.event-json';
import {
MassTranslationEventJson,
decodeMassTranslationEventJson
} from './mass-translation.event-json';
import {
GuideForRoomTimerChangedEventJson,
decodeGuideForRoomTimerChangedEventJson
} from './guide-for-room-timer-changed.event-json';
import { JoinEventJson, decodeJoinEventJson } from './join.event-json';
import {
CharacterEventJson,
decodeCharacterEventJson
} from './character.event-json';
import { ExitEventJson, decodeExitEventJson } from './exit.event-json';
import { LinkEventJson, decodeLinkEventJson } from './link.event-json';
import {
RecalledMessageEventJson,
decodeRecalledMessageEventJson
} from './recalled-message.event-json';
import {
VideoStreammingEventJson,
decodeVideoStreammingEventJson
} from './video-streamming.event-json';
import {
NotificationForTimerRoomEventJson,
decodeNotificationForTimerRoomEventJson
} from './notification-for-timer-room.event-json';
export type EventJson =
| string
| string[]
| JoinEventJson
| CharacterEventJson
| ExitEventJson
| FileEventJson
| LinkEventJson
| MassTextEventJson
| RecalledMessageEventJson
| StickerEventJson
| PlanEventJson
| VideoConferenceEventJson
| RenameRoomEventJson
| NotificationForTimerRoomEventJson
| TranslationEventJson
| MassTranslationEventJson
| VideoStreammingEventJson
| GuideForRoomTimerChangedEventJson;
export const decodeEventJson = (
eventType: EventType,
message: string
): EventJson => {
switch (eventType) {
case EventType.Join:
return decodeJoinEventJson(message);
case EventType.Character:
return decodeCharacterEventJson(message);
case EventType.File:
return decodeFileEventJson(message);
case EventType.Sticker:
return decodeStickerEventJson(message);
case EventType.MassText:
return decodeMassTextEventJson(message);
case EventType.Exit:
return decodeExitEventJson(message);
case EventType.Plan:
return decodePlanEventJson(message);
case EventType.VideoConference:
return decodeVideoConferenceEventJson(message);
case EventType.Link:
return decodeLinkEventJson(message);
case EventType.RenameRoom:
return decodeRenameRoomEventJson(message);
case EventType.Translation:
return decodeTranslationEventJson(message);
case EventType.MassTranslation:
return decodeMassTranslationEventJson(message);
case EventType.RecalledMessage:
return decodeRecalledMessageEventJson(message);
case EventType.GuideForRoomTimerChanged:
return decodeGuideForRoomTimerChangedEventJson(message);
case EventType.NotificationForiOSCapture:
return message;
case EventType.NotificationForTimerRoom:
return decodeNotificationForTimerRoomEventJson(message);
case EventType.Before2MonthsAgo:
return message;
case EventType.ForcedExit:
return message;
case EventType.ChatbotStart:
return message;
case EventType.ChatbotEnd:
return message;
case EventType.ChatbotSend:
return message;
case EventType.ChatbotSendMass:
return message;
case EventType.VideoStreamming:
return decodeVideoStreammingEventJson(message);
default:
return message;
}
};