Archived
2
0
This repository has been archived on 2024-06-24. You can view files and clone it, but cannot push or open issues or pull requests.
neko-custom/client/src/neko/messages.ts
2020-02-12 23:13:33 +00:00

189 lines
3.8 KiB
TypeScript

import {
EVENT,
WebSocketEvents,
SystemEvents,
ControlEvents,
MemberEvents,
SignalEvents,
ChatEvents,
ScreenEvents,
AdminEvents,
} from './events'
import { Member, ScreenConfigurations, ScreenResolution } from './types'
export type WebSocketMessages =
| WebSocketMessage
| SignalProvideMessage
| SignalAnswerMessage
| MemberListMessage
| MembeConnectMessage
| MembeDisconnectMessage
| ControlMessage
| ScreenResolutionMessage
| ScreenConfigurationsMessage
| ChatMessage
export type WebSocketPayloads =
| SignalProvidePayload
| SignalAnswerPayload
| MemberListPayload
| Member
| ControlPayload
| ControlClipboardPayload
| ChatPayload
| ChatSendPayload
| EmojiSendPayload
| ScreenResolutionPayload
| ScreenConfigurationsPayload
| AdminPayload
export interface WebSocketMessage {
event: WebSocketEvents | string
}
/*
SYSTEM MESSAGES/PAYLOADS
*/
// system/disconnect
export interface DisconnectMessage extends WebSocketMessage, DisconnectPayload {
event: typeof EVENT.SYSTEM.DISCONNECT
}
export interface DisconnectPayload {
message: string
}
/*
SIGNAL MESSAGES/PAYLOADS
*/
// signal/provide
export interface SignalProvideMessage extends WebSocketMessage, SignalProvidePayload {
event: typeof EVENT.SIGNAL.PROVIDE
}
export interface SignalProvidePayload {
id: string
sdp: string
}
// signal/answer
export interface SignalAnswerMessage extends WebSocketMessage, SignalAnswerPayload {
event: typeof EVENT.SIGNAL.ANSWER
}
export interface SignalAnswerPayload {
sdp: string
username: string
}
/*
MEMBER MESSAGES/PAYLOADS
*/
// member/list
export interface MemberListMessage extends WebSocketMessage, MemberListPayload {
event: typeof EVENT.MEMBER.LIST
}
export interface MemberListPayload {
members: Member[]
}
// member/connected
export interface MembeConnectMessage extends WebSocketMessage, MemberPayload {
event: typeof EVENT.MEMBER.CONNECTED
}
export type MemberPayload = Member
// member/disconnected
export interface MembeDisconnectMessage extends WebSocketMessage, MemberPayload {
event: typeof EVENT.MEMBER.DISCONNECTED
}
export interface MemberDisconnectPayload {
id: string
}
/*
CONTROL MESSAGES/PAYLOADS
*/
// control/locked & control/release & control/request
export interface ControlMessage extends WebSocketMessage, ControlPayload {
event: ControlEvents
}
export interface ControlPayload {
id: string
}
export interface ControlTargetPayload {
id: string
target: string
}
export interface ControlClipboardPayload {
text: string
}
/*
CHAT PAYLOADS
*/
// chat/message
export interface ChatMessage extends WebSocketMessage, ChatPayload {
event: typeof EVENT.CHAT.MESSAGE
}
export interface ChatSendPayload {
content: string
}
export interface ChatPayload {
id: string
content: string
}
// chat/emoji
export interface ChatEmoteMessage extends WebSocketMessage, EmotePayload {
event: typeof EVENT.CHAT.EMOTE
}
export interface EmotePayload {
id: string
emote: string
}
export interface EmojiSendPayload {
emote: string
}
/*
SCREEN PAYLOADS
*/
export interface ScreenResolutionMessage extends WebSocketMessage, ScreenResolutionPayload {
event: ScreenEvents
}
export interface ScreenResolutionPayload extends ScreenResolution {
id?: string
}
export interface ScreenConfigurationsMessage extends WebSocketMessage, ScreenConfigurationsPayload {
event: ScreenEvents
}
export interface ScreenConfigurationsPayload {
configurations: ScreenConfigurations
}
/*
ADMIN PAYLOADS
*/
export interface AdminMessage extends WebSocketMessage, AdminPayload {
event: AdminEvents
}
export interface AdminPayload {
id: string
}
export interface AdminTargetMessage extends WebSocketMessage, AdminTargetPayload {
event: AdminEvents
}
export interface AdminTargetPayload {
id: string
target?: string
}