From 9b8cfbedfb72d9acd084bd76e7943c9a8649d2c7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20Ro=C5=BCnawski?= Date: Thu, 30 Jul 2026 11:15:16 +0200 Subject: [PATCH] Add recording status notification --- doc/docs.md | 34 +++++++++++++++++++ fishjam/server_notifications.proto | 18 ++++++++++ .../lib/fishjam/server_notifications.pb.ex | 33 ++++++++++++++++++ 3 files changed, 85 insertions(+) diff --git a/doc/docs.md b/doc/docs.md index 4da81d7..ff2adc6 100644 --- a/doc/docs.md +++ b/doc/docs.md @@ -104,6 +104,7 @@ - [ServerMessage.PeerDeleted](#fishjam-ServerMessage-PeerDeleted) - [ServerMessage.PeerDisconnected](#fishjam-ServerMessage-PeerDisconnected) - [ServerMessage.PeerMetadataUpdated](#fishjam-ServerMessage-PeerMetadataUpdated) + - [ServerMessage.RecordingStatusChanged](#fishjam-ServerMessage-RecordingStatusChanged) - [ServerMessage.RoomCrashed](#fishjam-ServerMessage-RoomCrashed) - [ServerMessage.RoomCreated](#fishjam-ServerMessage-RoomCreated) - [ServerMessage.RoomDeleted](#fishjam-ServerMessage-RoomDeleted) @@ -124,6 +125,7 @@ - [ServerMessage.EventType](#fishjam-ServerMessage-EventType) - [ServerMessage.PeerType](#fishjam-ServerMessage-PeerType) + - [ServerMessage.RecordingStatusChanged.Status](#fishjam-ServerMessage-RecordingStatusChanged-Status) - [ServerMessage.VadNotification.Status](#fishjam-ServerMessage-VadNotification-Status) - [Scalar Value Types](#scalar-value-types) @@ -1364,6 +1366,7 @@ Defines any type of message passed between FJ and server peer | viewer_disconnected | [ServerMessage.ViewerDisconnected](#fishjam-ServerMessage-ViewerDisconnected) | | | | streamer_connected | [ServerMessage.StreamerConnected](#fishjam-ServerMessage-StreamerConnected) | | | | streamer_disconnected | [ServerMessage.StreamerDisconnected](#fishjam-ServerMessage-StreamerDisconnected) | | | +| recording_status_changed | [ServerMessage.RecordingStatusChanged](#fishjam-ServerMessage-RecordingStatusChanged) | | | | notification_batch | [ServerMessage.NotificationBatch](#fishjam-ServerMessage-NotificationBatch) | | Batch | | stream_connected | [ServerMessage.StreamConnected](#fishjam-ServerMessage-StreamConnected) | | **Deprecated.** | | stream_disconnected | [ServerMessage.StreamDisconnected](#fishjam-ServerMessage-StreamDisconnected) | | **Deprecated.** | @@ -1629,6 +1632,23 @@ Notification sent when peer updates its metadata + + +### ServerMessage.RecordingStatusChanged +Notification sent when a recording changes status + + +| Field | Type | Label | Description | +| ----- | ---- | ----- | ----------- | +| recording_id | [string](#string) | | | +| status | [ServerMessage.RecordingStatusChanged.Status](#fishjam-ServerMessage-RecordingStatusChanged-Status) | | | +| metadata | [string](#string) | | JSON-encoded, as set on recording creation | + + + + + + ### ServerMessage.RoomCrashed @@ -1936,6 +1956,20 @@ Defines message groups for which peer can subscribe + + +### ServerMessage.RecordingStatusChanged.Status + + +| Name | Number | Description | +| ---- | ------ | ----------- | +| STATUS_UNSPECIFIED | 0 | | +| STATUS_FINISHED | 1 | | +| STATUS_AVAILABLE | 2 | | +| STATUS_FAILED | 3 | | + + + ### ServerMessage.VadNotification.Status diff --git a/fishjam/server_notifications.proto b/fishjam/server_notifications.proto index 80a7948..b32f91f 100644 --- a/fishjam/server_notifications.proto +++ b/fishjam/server_notifications.proto @@ -233,6 +233,20 @@ message ServerMessage { string streamer_id = 2; } + // Notification sent when a recording changes status + message RecordingStatusChanged { + enum Status { + STATUS_UNSPECIFIED = 0; + STATUS_FINISHED = 1; + STATUS_AVAILABLE = 2; + STATUS_FAILED = 3; + } + + string recording_id = 1; + Status status = 2; + string metadata = 3; // JSON-encoded, as set on recording creation + } + // Carries multiple notifications in a single wire frame. // // Constraints (documented, not schema-enforced): @@ -288,6 +302,10 @@ message ServerMessage { StreamerConnected streamer_connected = 26; StreamerDisconnected streamer_disconnected = 27; + // Recordings + + RecordingStatusChanged recording_status_changed = 34; + // Batch NotificationBatch notification_batch = 33; diff --git a/fishjam_protos/lib/fishjam/server_notifications.pb.ex b/fishjam_protos/lib/fishjam/server_notifications.pb.ex index ba1bbe9..938a990 100644 --- a/fishjam_protos/lib/fishjam/server_notifications.pb.ex +++ b/fishjam_protos/lib/fishjam/server_notifications.pb.ex @@ -40,6 +40,21 @@ defmodule Fishjam.ServerMessage.VadNotification.Status do field :STATUS_SPEECH, 2 end +defmodule Fishjam.ServerMessage.RecordingStatusChanged.Status do + @moduledoc false + + use Protobuf, + enum: true, + full_name: "fishjam.ServerMessage.RecordingStatusChanged.Status", + protoc_gen_elixir_version: "0.17.0", + syntax: :proto3 + + field :STATUS_UNSPECIFIED, 0 + field :STATUS_FINISHED, 1 + field :STATUS_AVAILABLE, 2 + field :STATUS_FAILED, 3 +end + defmodule Fishjam.ServerMessage.RoomCrashed do @moduledoc false @@ -443,6 +458,19 @@ defmodule Fishjam.ServerMessage.StreamerDisconnected do field :streamer_id, 2, type: :string, json_name: "streamerId" end +defmodule Fishjam.ServerMessage.RecordingStatusChanged do + @moduledoc false + + use Protobuf, + full_name: "fishjam.ServerMessage.RecordingStatusChanged", + protoc_gen_elixir_version: "0.17.0", + syntax: :proto3 + + field :recording_id, 1, type: :string, json_name: "recordingId" + field :status, 2, type: Fishjam.ServerMessage.RecordingStatusChanged.Status, enum: true + field :metadata, 3, type: :string +end + defmodule Fishjam.ServerMessage.NotificationBatch do @moduledoc false @@ -583,6 +611,11 @@ defmodule Fishjam.ServerMessage do json_name: "streamerDisconnected", oneof: 0 + field :recording_status_changed, 34, + type: Fishjam.ServerMessage.RecordingStatusChanged, + json_name: "recordingStatusChanged", + oneof: 0 + field :notification_batch, 33, type: Fishjam.ServerMessage.NotificationBatch, json_name: "notificationBatch",