Skip to content

Commit 434474d

Browse files
authored
RTC-520 Add new notifications PeerAdded and PeerDeleted (#64)
* Add tests for new notifications * Update protos * Fix timeout in PeerDeleted notification
1 parent 5d9d457 commit 434474d

File tree

4 files changed

+68
-1
lines changed

4 files changed

+68
-1
lines changed

lib/jellyfish/notification.ex

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,30 @@ defmodule Jellyfish.Notification do
3737
}
3838
end
3939

40+
defmodule PeerAdded do
41+
@moduledoc nil
42+
43+
@enforce_keys [:room_id, :peer_id]
44+
defstruct @enforce_keys
45+
46+
@type t :: %__MODULE__{
47+
room_id: Room.id(),
48+
peer_id: Peer.id()
49+
}
50+
end
51+
52+
defmodule PeerDeleted do
53+
@moduledoc nil
54+
55+
@enforce_keys [:room_id, :peer_id]
56+
defstruct @enforce_keys
57+
58+
@type t :: %__MODULE__{
59+
room_id: Room.id(),
60+
peer_id: Peer.id()
61+
}
62+
end
63+
4064
defmodule PeerConnected do
4165
@moduledoc nil
4266

lib/protos/jellyfish/server_notifications.pb.ex

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,24 @@ defmodule Jellyfish.ServerMessage.RoomCrashed do
2626
field :room_id, 1, type: :string, json_name: "roomId"
2727
end
2828

29+
defmodule Jellyfish.ServerMessage.PeerAdded do
30+
@moduledoc false
31+
32+
use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.12.0"
33+
34+
field :room_id, 1, type: :string, json_name: "roomId"
35+
field :peer_id, 2, type: :string, json_name: "peerId"
36+
end
37+
38+
defmodule Jellyfish.ServerMessage.PeerDeleted do
39+
@moduledoc false
40+
41+
use Protobuf, syntax: :proto3, protoc_gen_elixir_version: "0.12.0"
42+
43+
field :room_id, 1, type: :string, json_name: "roomId"
44+
field :peer_id, 2, type: :string, json_name: "peerId"
45+
end
46+
2947
defmodule Jellyfish.ServerMessage.PeerConnected do
3048
@moduledoc false
3149

@@ -305,4 +323,11 @@ defmodule Jellyfish.ServerMessage do
305323
type: Jellyfish.ServerMessage.TrackMetadataUpdated,
306324
json_name: "trackMetadataUpdated",
307325
oneof: 0
326+
327+
field :peer_added, 20, type: Jellyfish.ServerMessage.PeerAdded, json_name: "peerAdded", oneof: 0
328+
329+
field :peer_deleted, 21,
330+
type: Jellyfish.ServerMessage.PeerDeleted,
331+
json_name: "peerDeleted",
332+
oneof: 0
308333
end

protos

test/jellyfish/notifier_test.exs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,9 @@ defmodule Jellyfish.NotifierTest do
1010
alias Jellyfish.Notification.{
1111
ComponentTrackAdded,
1212
ComponentTrackRemoved,
13+
PeerAdded,
1314
PeerConnected,
15+
PeerDeleted,
1416
PeerDisconnected,
1517
PeerMetadataUpdated,
1618
RoomCreated,
@@ -157,6 +159,11 @@ defmodule Jellyfish.NotifierTest do
157159
{:ok, %{peer: %Jellyfish.Peer{id: peer_id}, token: peer_token}} =
158160
Room.add_peer(client, room_id, @peer_opts)
159161

162+
assert_receive {:jellyfish, %PeerAdded{peer_id: ^peer_id, room_id: ^room_id} = peer_added},
163+
1_000
164+
165+
assert_receive {:webhook, ^peer_added}, 2_500
166+
160167
{:ok, peer_ws} = WS.start_link("ws://#{jellyfish_address}/socket/peer/websocket")
161168

162169
auth_request = %PeerMessage{content: {:auth_request, %AuthRequest{token: peer_token}}}
@@ -176,6 +183,12 @@ defmodule Jellyfish.NotifierTest do
176183

177184
assert_receive {:webhook, ^peer_disconnected}, 2_500
178185

186+
assert_receive {:jellyfish,
187+
%PeerDeleted{peer_id: ^peer_id, room_id: ^room_id} = peer_deleted},
188+
2_500
189+
190+
assert_receive {:webhook, ^peer_deleted}, 2_500
191+
179192
assert_receive {:jellyfish, %RoomDeleted{room_id: ^room_id} = room_deleted},
180193
2_500
181194

@@ -249,6 +262,11 @@ defmodule Jellyfish.NotifierTest do
249262
{:ok, %{peer: %Jellyfish.Peer{id: peer_id}, token: peer_token, ws_url: peer_ws_url}} =
250263
Room.add_peer(client, room_id, @peer_opts)
251264

265+
assert_receive {:jellyfish, %PeerAdded{peer_id: ^peer_id, room_id: ^room_id} = peer_added},
266+
1_000
267+
268+
assert_receive {:webhook, ^peer_added}, 2_500
269+
252270
{:ok, peer_ws} = WS.start_link("ws://#{peer_ws_url}")
253271

254272
auth_request = %PeerMessage{content: {:auth_request, %AuthRequest{token: peer_token}}}

0 commit comments

Comments
 (0)