about summary refs log tree commit diff
path: root/assets/src/network/channel/messages/messages.ts
blob: 0dd817899e1f3fab389b6775bc455927252920c6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
export const eventNames = [
    "new_request",
    "request_cancelled",
    "share_accepted",
    "request_ice_candidate",

    "request_acknowledged",
    "request_accepted",
    "share_cancelled",
    "share_ice_candidate",
] as const;

export type EventName = typeof eventNames[any];

export type AnyMessage = (ShareMessage | RequestMessage) & {
    event_name: EventName;
};

// Messages for the sharer

export type ShareMessage =
    | NewRequestMessage
    | RequestCancelledMessage
    | ShareAcceptedMessage
    | RequestIceCandidateMessage;

export type NewRequestMessage = {
    event_name: "new_request";
    ip: string;
    location: string;
    client: string;
    token: string;
};

export type RequestCancelledMessage = {
    event_name: "request_cancelled";
    token: string;
};

export type ShareAcceptedMessage = {
    event_name: "share_accepted";
    token: string;
    sdp: string;
    type: RTCSdpType;
};

export type RequestIceCandidateMessage = {
    event_name: "request_ice_candidate";
    token: string;
    candidate: RTCIceCandidateInit;
};

// Messages for the requestor

export type RequestMessage =
    | RequestAcknowledgedMessage
    | RequestAcceptedMessage
    | ShareCancelledMessage
    | ShareIceCandidateMessage;

export type RequestAcknowledgedMessage = {
    event_name: "request_acknowledged";
};

export type RequestAcceptedMessage = {
    event_name: "request_accepted";
    sdp: string;
    type: RTCSdpType;
};

export type ShareCancelledMessage = {
    event_name: "share_cancelled";
};

export type ShareIceCandidateMessage = {
    event_name: "share_ice_candidate";
    candidate: RTCIceCandidateInit;
};