Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion api/fishjam-server
2 changes: 1 addition & 1 deletion packages/python-server-sdk
2 changes: 1 addition & 1 deletion packages/web-client-sdk
Submodule web-client-sdk updated 42 files
+69 −0 .github/workflows/mobile_eas_build.yaml
+6 −7 .github/workflows/tests.yaml
+7 −0 e2e-tests/react-client/config.ts
+2 −2 e2e-tests/react-client/package.json
+3 −9 e2e-tests/react-client/playwright.config.ts
+5 −35 e2e-tests/react-client/scenarios/fishjam.spec.ts
+7 −27 e2e-tests/react-client/scenarios/utils.ts
+0 −7 e2e-tests/setup/Caddyfile
+0 −48 e2e-tests/setup/compose.yaml
+0 −9 e2e-tests/setup/config.ts
+0 −9 e2e-tests/setup/globalSetupState.ts
+0 −5 e2e-tests/setup/package.json
+0 −20 e2e-tests/setup/setupFishjam.ts
+0 −5 e2e-tests/setup/teardownFishjam.ts
+0 −17 e2e-tests/setup/tsconfig.json
+17 −0 e2e-tests/webrtc-client/config.ts
+2 −2 e2e-tests/webrtc-client/package.json
+1 −8 e2e-tests/webrtc-client/playwright.config.ts
+16 −42 e2e-tests/webrtc-client/scenarios/basic.spec.ts
+34 −69 e2e-tests/webrtc-client/scenarios/raceCondition.spec.ts
+7 −7 e2e-tests/webrtc-client/scenarios/replaceTrack.spec.ts
+44 −112 e2e-tests/webrtc-client/scenarios/utils.ts
+2 −2 e2e-tests/webrtc-client/src/App.tsx
+28 −4 examples/mobile-client/fishjam-chat/app.json
+0 −1 examples/mobile-client/fishjam-chat/app/livestream/screen-sharing.tsx
+36 −0 examples/mobile-client/fishjam-chat/eas.json
+3 −1 examples/mobile-client/fishjam-chat/package.json
+2 −2 examples/react-client/fishjam-chat/index.html
+2 −2 examples/react-client/livestreaming/index.html
+0 −1 examples/react-client/minimal-react/.tool-versions
+0 −1 examples/react-client/minimal-smelter/.tool-versions
+1 −3 packages/mobile-client/package.json
+1 −1 packages/mobile-client/plugin/src/withFishjamIos.ts
+9 −3 packages/mobile-client/src/index.ts
+3 −3 packages/mobile-client/src/useForegroundService.ts
+1 −2 packages/mobile-client/src/webrtc-polyfill.ts
+0 −1 packages/react-client/.tool-versions
+8 −2 packages/react-client/src/FishjamProvider.tsx
+4 −1 packages/ts-client/src/FishjamClient.ts
+1 −0 packages/ts-client/src/index.ts
+8 −0 packages/ts-client/src/types.ts
+6 −33 yarn.lock
12 changes: 12 additions & 0 deletions static/api/protobuf/agent_notifications.proto
Original file line number Diff line number Diff line change
Expand Up @@ -44,12 +44,17 @@ message AgentRequest {
string track_id = 1;
}

message CaptureImage {
string track_id = 1;
}

oneof content {
AuthRequest auth_request = 1;
AddTrack add_track = 2;
RemoveTrack remove_track = 3;
TrackData track_data = 4;
InterruptTrack interrupt_track = 5;
CaptureImage capture_image = 6;
}
}

Expand All @@ -65,8 +70,15 @@ message AgentResponse {
bytes data = 3;
}

message TrackImage {
string track_id = 1;
string content_type = 2;
bytes data = 3;
}

oneof content {
Authenticated authenticated = 1;
TrackData track_data = 2;
TrackImage track_image = 3;
}
}
26 changes: 24 additions & 2 deletions static/api/protobuf/server_notifications.proto
Original file line number Diff line number Diff line change
Expand Up @@ -74,7 +74,7 @@ message ServerMessage {
EVENT_TYPE_SERVER_NOTIFICATION = 1;
}

// Request sent by peer to subsribe for certain message type
// Request sent by peer to subscribe for certain message type
message SubscribeRequest {
EventType event_type = 1;
}
Expand All @@ -100,7 +100,7 @@ message ServerMessage {
string component_id = 2;
}

// Notification sent when the HLS recording is successfully uploded to AWS S3
// Notification sent when the HLS recording is successfully uploaded to AWS S3
message HlsUploaded {
string room_id = 1;
}
Expand Down Expand Up @@ -148,6 +148,26 @@ message ServerMessage {
notifications.Track track = 4;
}

// Notification sent when a peer creates a channel
message ChannelAdded {
string room_id = 1;
oneof endpoint_info {
string peer_id = 2;
string component_id = 3;
}
string channel_id = 4;
}

// Notification sent when a peer deletes a channel
message ChannelRemoved {
string room_id = 1;
oneof endpoint_info {
string peer_id = 2;
string component_id = 3;
}
string channel_id = 4;
}

// Notification sent when streamer successfully connects
message StreamConnected {
string stream_id = 1;
Expand Down Expand Up @@ -209,5 +229,7 @@ message ServerMessage {
ViewerDisconnected viewer_disconnected = 25;
StreamerConnected streamer_connected = 26;
StreamerDisconnected streamer_disconnected = 27;
ChannelAdded channel_added = 28;
ChannelRemoved channel_removed = 29;
}
}
6 changes: 6 additions & 0 deletions versioned_docs/version-0.25.0/_common/agents/definition.mdx
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
## What is an Agent?

An agent is a piece of software that allows your backend server to participate in a Fishjam room, similar to how the Fishjam client SDKs allow your client-side application to participate in a Fishjam room.
They can be used to implement features such as real-time audio transcription, real-time content moderation, conversations with AI agents and more.

You can simply think of an agent as a peer running within your backend application.
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
:::danger Remember to disconnect your agents!
It's important to disconnect agents, because **every connected agent generates usage** just as a normal peer.
:::
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
By default, agents **won't** receive peers' audio streams.
This is by design and aims to prevent unnecessary resource usage by the agents.

For an agent to start receiving a peer's audio, the peer must be **created** with the **subscribe** option set.
12 changes: 12 additions & 0 deletions versioned_docs/version-0.25.0/api/_category_.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"label": "API",
"position": 6,
"link": {
"type": "generated-index",
"description": "API documentation for Client and Server SDKs.",
"slug": "/api"
},
"customProps": {
"id": "generated-api"
}
}
43 changes: 43 additions & 0 deletions versioned_docs/version-0.25.0/api/mobile/enumerations/Variant.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
# Enumeration: Variant

Defined in: packages/ts-client/dist/index.d.mts:18

## Enumeration Members

### UNRECOGNIZED

> **UNRECOGNIZED**: `-1`

Defined in: packages/ts-client/dist/index.d.mts:23

***

### VARIANT\_HIGH

> **VARIANT\_HIGH**: `3`

Defined in: packages/ts-client/dist/index.d.mts:22

***

### VARIANT\_LOW

> **VARIANT\_LOW**: `1`

Defined in: packages/ts-client/dist/index.d.mts:20

***

### VARIANT\_MEDIUM

> **VARIANT\_MEDIUM**: `2`

Defined in: packages/ts-client/dist/index.d.mts:21

***

### VARIANT\_UNSPECIFIED

> **VARIANT\_UNSPECIFIED**: `0`

Defined in: packages/ts-client/dist/index.d.mts:19
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Function: FishjamProvider()

> **FishjamProvider**(`props`): `FunctionComponentElement`\<`FishjamProviderProps`\>

Defined in: [packages/mobile-client/src/index.ts:91](https://github.com/fishjam-cloud/web-client-sdk/blob/d78484b4f189e2789ab2da373043d6e3c10800de/packages/mobile-client/src/index.ts#L91)

## Parameters

| Parameter | Type |
| ------ | ------ |
| `props` | [`FishjamProviderProps`](../type-aliases/FishjamProviderProps.md) |

## Returns

`FunctionComponentElement`\<`FishjamProviderProps`\>
15 changes: 15 additions & 0 deletions versioned_docs/version-0.25.0/api/mobile/functions/RTCPIPView.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Function: RTCPIPView()

> **RTCPIPView**(`__namedParameters`): `Element`

Defined in: [packages/mobile-client/src/overrides/RTCView.tsx:32](https://github.com/fishjam-cloud/web-client-sdk/blob/d78484b4f189e2789ab2da373043d6e3c10800de/packages/mobile-client/src/overrides/RTCView.tsx#L32)

## Parameters

| Parameter | Type |
| ------ | ------ |
| `__namedParameters` | [`RTCPIPViewProps`](../type-aliases/RTCPIPViewProps.md) |

## Returns

`Element`
15 changes: 15 additions & 0 deletions versioned_docs/version-0.25.0/api/mobile/functions/RTCView.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
# Function: RTCView()

> **RTCView**(`__namedParameters`): `Element`

Defined in: [packages/mobile-client/src/overrides/RTCView.tsx:27](https://github.com/fishjam-cloud/web-client-sdk/blob/d78484b4f189e2789ab2da373043d6e3c10800de/packages/mobile-client/src/overrides/RTCView.tsx#L27)

## Parameters

| Parameter | Type |
| ------ | ------ |
| `__namedParameters` | [`RTCVideoViewProps`](../type-aliases/RTCVideoViewProps.md) |

## Returns

`Element`
122 changes: 122 additions & 0 deletions versioned_docs/version-0.25.0/api/mobile/functions/useCamera.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,122 @@
# Function: useCamera()

> **useCamera**(): `object`

Defined in: packages/react-client/dist/hooks/devices/useCamera.d.ts:5

This hook can toggle camera on/off, change camera, provides current camera and other.

## Returns

### ~~activeCamera~~

> **activeCamera**: `null` \| [`DeviceItem`](../type-aliases/DeviceItem.md)

#### Deprecated

Use `currentCamera` and `isCameraOn` instead
Indicates which camera is now turned on and streaming

### cameraDeviceError

> **cameraDeviceError**: `null` \| [`DeviceError`](../type-aliases/DeviceError.md)

Possible error thrown while setting up the camera

### cameraDevices

> **cameraDevices**: [`DeviceItem`](../type-aliases/DeviceItem.md)[]

List of available camera devices

### cameraStream

> **cameraStream**: `null` \| `MediaStream`

The MediaStream object containing the current stream

### currentCamera

> **currentCamera**: `null` \| `MediaDeviceInfo`

Indicates which camera is now selected

### currentCameraMiddleware

> **currentCameraMiddleware**: [`TrackMiddleware`](../type-aliases/TrackMiddleware.md)

The currently set camera middleware function

### isCameraOn

> **isCameraOn**: `boolean`

Indicates whether the camera is streaming video

### selectCamera()

> **selectCamera**: (`deviceId`) => `Promise`\<`undefined` \| [`DeviceError`](../type-aliases/DeviceError.md)\>

Selects the camera device

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `deviceId` | `string` |

#### Returns

`Promise`\<`undefined` \| [`DeviceError`](../type-aliases/DeviceError.md)\>

### setCameraTrackMiddleware()

> **setCameraTrackMiddleware**: (`middleware`) => `Promise`\<`void`\>

Sets the camera middleware

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `middleware` | [`TrackMiddleware`](../type-aliases/TrackMiddleware.md) |

#### Returns

`Promise`\<`void`\>

### startCamera()

> **startCamera**: (`deviceId?`) => `Promise`\<\[`MediaStreamTrack`, `null`\] \| \[`null`, [`DeviceError`](../type-aliases/DeviceError.md)\]\>

Starts the camera

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `deviceId?` | `null` \| `string` |

#### Returns

`Promise`\<\[`MediaStreamTrack`, `null`\] \| \[`null`, [`DeviceError`](../type-aliases/DeviceError.md)\]\>

### stopCamera()

> **stopCamera**: () => `void`

Stops the camera

#### Returns

`void`

### toggleCamera()

> **toggleCamera**: () => `Promise`\<`undefined` \| [`DeviceError`](../type-aliases/DeviceError.md)\>

Toggles current camera on/off

#### Returns

`Promise`\<`undefined` \| [`DeviceError`](../type-aliases/DeviceError.md)\>
Original file line number Diff line number Diff line change
@@ -0,0 +1,53 @@
# Function: useConnection()

> **useConnection**(): `object`

Defined in: packages/react-client/dist/hooks/useConnection.d.ts:17

Hook allows to join or leave a room and check the current connection status.

## Returns

### joinRoom()

> **joinRoom**: \<`PeerMetadata`\>(`__namedParameters`) => `Promise`\<`void`\>

Join room and start streaming camera and microphone

#### Type Parameters

| Type Parameter | Default type |
| ------ | ------ |
| `PeerMetadata` *extends* `GenericMetadata` | `GenericMetadata` |

#### Parameters

| Parameter | Type |
| ------ | ------ |
| `__namedParameters` | [`JoinRoomConfig`](../interfaces/JoinRoomConfig.md)\<`PeerMetadata`\> |

#### Returns

`Promise`\<`void`\>

### leaveRoom()

> **leaveRoom**: () => `void`

Leave room and stop streaming

#### Returns

`void`

### peerStatus

> **peerStatus**: [`PeerStatus`](../type-aliases/PeerStatus.md)

Current peer connection status

### reconnectionStatus

> **reconnectionStatus**: [`ReconnectionStatus`](../type-aliases/ReconnectionStatus.md)

Current reconnection status
Loading
Loading