From f5e727c7087b710ddfaf816df5fe1a01fb84577e Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Tue, 4 Jun 2024 19:48:58 +0530 Subject: [PATCH 01/16] docs: added intro page for flutter core --- docs/flutter-core/introduction.mdx | 38 ++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 docs/flutter-core/introduction.mdx diff --git a/docs/flutter-core/introduction.mdx b/docs/flutter-core/introduction.mdx new file mode 100644 index 000000000..f7185b51d --- /dev/null +++ b/docs/flutter-core/introduction.mdx @@ -0,0 +1,38 @@ +--- +title: Introduction +sidebar_position: 3 +sidebar_class_name: module-seperation +--- + +import ProductSection from '/docs/partials/_product-section.mdx'; + +# Introduction + +The Dyte Core SDK is designed to provide you with an easy way to incorporate live video, voice, livestream and chat capabilities into your Android apps. The Core SDK acts as a data-only layer. It provides simple APIs offering high-level primitives and abstracting away complex media and networking optimizations. + +## Why Core SDK? + +The Core SDK was developed with a user-friendly approach to eliminate the complexity of managing streams. Unlike traditional +SDKs that require knowledge of WebRTC functioning, Dyte's Core SDK provides a simple API that abstracts out the complexity, +making it easier for developers to use. For instance, enabling video with Dyte's Core SDK is as easy as calling +`dyteMobileClient.localUser.enableVideo()`. + +## Utility Modules + +The Core SDK includes various modules for in-call utilities like chat, polls, and recording that enable building a UI on top of +it. The following are the core SDK modules: + +- **meeting.localUser**: This consists of properties and methods corresponding to the current (local) user, such as enabling or disabling their audio and video, getting a list of media devices or changing the device, or sharing your mobile screen. +- **meeting.participants**: Use this module to get useful information about the other participants that are present in the meeting. A host can use this module for access control. For example, the host can mute or kick a participant. +- **meeting.chat**: It provides the methods to integrate chat features such as sending/receiving text, images, and files. +- **meeting.polls**: Meetings can have polls. This module lets you perform actions related to polls, that is create and manage + a poll within a meeting. +- **meeting.recording**: When a meeting needs to be recorded, this module can be used. It lets you start or stop a recording, + and get the current status of an ongoing recording. +- **meeting.meta**: This object consists of all the metadata related to the current meeting, such as the title, the timestamp + of when it started, and more. +- **meeting.plugins**: Provides the list of available plugins and active plugins. Use this module to enable or disable plugins as needed. + + + Flutter Core Introduction + From 5cebc4706d1894ca903dcec947039383fc22bcd1 Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Wed, 5 Jun 2024 21:01:51 +0530 Subject: [PATCH 02/16] docs: added media preview page --- .../flutter-core/pre-call/1-media-preview.mdx | 123 ++++++++++++++++++ docs/flutter-core/pre-call/_category_.json | 6 + 2 files changed, 129 insertions(+) create mode 100644 docs/flutter-core/pre-call/1-media-preview.mdx create mode 100644 docs/flutter-core/pre-call/_category_.json diff --git a/docs/flutter-core/pre-call/1-media-preview.mdx b/docs/flutter-core/pre-call/1-media-preview.mdx new file mode 100644 index 000000000..e59ee4748 --- /dev/null +++ b/docs/flutter-core/pre-call/1-media-preview.mdx @@ -0,0 +1,123 @@ +# Media Preview + +Before joining a meeting, users may want to preview and configure their media devices like camera, microphone, and audio output. +This section provides developers with the tools to prepare the media environment before joining a Dyte meeting. + +If you are using our UI Kits, this functionality can be handled by `DyteSetupScreen` or built with `DyteParticipantTile` widget. + +## Properties + +- `dyteMobileClient.localUser.audioEnabled`: A boolean value indicating if the audio currently enabled. +- `dyteMobileClient.localUser.videoEnabled`: A boolean value indicating if the video currently enabled. + +## Methods + +### Toggling Media + +The same methods used for controlling media during a meeting are also applicable for pre-call media configuration. + +**1. Mute/Unmute microphone** + +```dart +// Mute Audio +dyteMobileClient.localUser.disableAudio() + +// Unmute Audio +dyteMobileClient.localUser.enableAudio() + +``` + +```mermaid +flowchart LR + classDef basic fill:white; + + eam("enableAudio()") --> success("Gives onAudioUpdate callback to DyteSelfEventsListener") + + class eam basic; +``` + +
+ +Anytime there is an update in the audio state of the local user, the Core SDK notifies the client through the `onAudioUpdate` callback +from `DyteSelfEventsListener`. Here's how you can register the listener: + +```dart +class SelfAudioNotifier extends DyteSelfEventsListener{ + override fun onAudioUpdate(bool audioEnabled) { + // Show local user's VideoView if video is enabled + } +} + +dyteMobileClient.addSelfEventsListener(SelfAudioNotifier()) +``` + +**2. Enable/Disable camera** + +```dart +// Disable Video +dyteMobileClient.localUser.disableVideo() + +// Enable Video +dyteMobileClient.localUser.enableVideo() +``` + +```mermaid +flowchart LR + classDef basic fill:white; + + eam("enableVideo()") --> success("Gives onVideoUpdate callback to DyteSelfEventsListener") + + class eam basic; +``` + +
+ +Whenever there is an update in the video state of the local user, the Core SDK notifies the client through the `onVideoUpdate` callback +from `DyteSelfEventsListener`. Here's how you can register the listener: + +```dart +class SelfVideoNotifier extends DyteSelfEventsListener{ + override fun onVideoUpdate(bool videoEnabled) { + // Show local user's VideoView if video is enabled + } +} + +dyteMobileClient.addSelfEventsListener(SelfVideoNotifier()); +``` + +### Changing Media Device + +Media devices represent the hardware for the camera, microphone, and speaker devices. To get the list of media devices currently +available, use the following methods: + +```dart +// Get all audio devices +final audioDevices = dyteMobileClient.localUser.getAudioDevices() + +// Get all video devices +final videoDevices = dyteMobileClient.localUser.getVideoDevices() +``` + +To get the currently selected media device, use the following methods: + +```dart +// Get current audio device being used +final currentAudioDevice = dyteMobileClient.localUser.getSelectedAudioDevice() + +// Get current video device being used +final currentVideoDevice = dyteMobileClient.localUser.getSelectedVideoDevice() +``` + +Use these methods to create a UI that allows users to configure their media devices. When the user selects a device, use the below methods to set the device. + +**Set device** + +```kotlin +// Set audio device +dyteMobileClient.localUser.setAudioDevice(device) +// eg. device = audioDevices[0] + +// Set video device +dyteMobileClient.localUser.setVideoDevice(device) +// eg. device = videoDevices[0] +``` diff --git a/docs/flutter-core/pre-call/_category_.json b/docs/flutter-core/pre-call/_category_.json new file mode 100644 index 000000000..2e19b9116 --- /dev/null +++ b/docs/flutter-core/pre-call/_category_.json @@ -0,0 +1,6 @@ +{ + "position": 2, + "label": "Pre-call", + "collapsible": true, + "className": "pre-call-docs" +} From e370e89e419875a43257253c0f8be70f42707aa1 Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Wed, 5 Jun 2024 21:11:24 +0530 Subject: [PATCH 03/16] docs: added meeting metadata page --- docs/flutter-core/pre-call/3-meeting-meta.mdx | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 docs/flutter-core/pre-call/3-meeting-meta.mdx diff --git a/docs/flutter-core/pre-call/3-meeting-meta.mdx b/docs/flutter-core/pre-call/3-meeting-meta.mdx new file mode 100644 index 000000000..04b44b324 --- /dev/null +++ b/docs/flutter-core/pre-call/3-meeting-meta.mdx @@ -0,0 +1,11 @@ +# Meeting Metadata + +### Change the name of the user + +You can allow the user to edit their name by using the `setDisplayName` method. + +```dart +dyteMobileClient.localUser.setDisplayName("New Name") +``` + +**Note**: The name change will only be reflected to other participants if this method is called before joining the room. From ca54a710581669ba488680a3f58332cd0a88ec4f Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Thu, 6 Jun 2024 01:11:08 +0530 Subject: [PATCH 04/16] docs: added remote participant types, waiting room docs in pre-call section --- .../flutter-core/participants/_category_.json | 4 +- .../participants/participant-object.mdx | 2 +- .../participants/remote-participants.mdx | 39 ++++++++++++ docs/flutter-core/pre-call/4-waiting-room.mdx | 60 +++++++++++++++++++ 4 files changed, 102 insertions(+), 3 deletions(-) create mode 100644 docs/flutter-core/participants/remote-participants.mdx create mode 100644 docs/flutter-core/pre-call/4-waiting-room.mdx diff --git a/docs/flutter-core/participants/_category_.json b/docs/flutter-core/participants/_category_.json index 9edea4b27..1506bb147 100644 --- a/docs/flutter-core/participants/_category_.json +++ b/docs/flutter-core/participants/_category_.json @@ -1,5 +1,5 @@ { - "position": 5, - "label": "Participants", + "position": 7, + "label": "Remote Participants", "collapsible": true } diff --git a/docs/flutter-core/participants/participant-object.mdx b/docs/flutter-core/participants/participant-object.mdx index 3604fee88..fe7222836 100644 --- a/docs/flutter-core/participants/participant-object.mdx +++ b/docs/flutter-core/participants/participant-object.mdx @@ -1,5 +1,5 @@ --- -title: Participant object +title: Participant Object description: >- Understand the participant object and its integration in Flutter. Follow Dyte's documentation for effective implementation in your app. diff --git a/docs/flutter-core/participants/remote-participants.mdx b/docs/flutter-core/participants/remote-participants.mdx new file mode 100644 index 000000000..445ab6d84 --- /dev/null +++ b/docs/flutter-core/participants/remote-participants.mdx @@ -0,0 +1,39 @@ +--- +title: Participant Types +description: 'Events, methods and data pertaining to meeting participants.' +sidebar_position: 1 +slug: /participants/ +tags: + - flutter-core + - participants +--- + +# Participant Types + +The data regarding all meeting participants is stored under `meeting.participants`. These **does not** include the local user. Use the methods and events to consume the participants data. For example, to get all the participants who joined the meeting: + +```kotlin +// get all joined participants +final List joined = dyteMobileClient.participants.active; + +// get active participants +final List active = dyteMobileClient.participants.active; +``` + +The `dyteMobileClient.participants` object has the following **lists** of participants + +- **joined**: A list that contains all the participants who are currently in the meeting + except the local user +- **waitlisted**: A list that contains all the participants waiting to join the + meeting. +- **active**: A list that contains all the participants, **including** the local user whose media is subscribed to i.e participants who are supposed to be on the screen at the moment, including the local user. +- **pinned**: A list that contains all the pinned participants of the meeting. +- **screenShares**: A list that contains all the participants who are sharing their screen. + +Therefore if you were to make a video / audio grid of participants, you'd use the `active` list, but to display the list of all participants in the meeting you'd use the `joined` list. + +Each participant in each of the `joined`, `active`, `pinned` and `screenShares` list are of type `DyteJoinedMeetingParticipant`, `waitlisted` list is of type `DyteWaitlistedParticipant`. + + + Flutter Core Participants + diff --git a/docs/flutter-core/pre-call/4-waiting-room.mdx b/docs/flutter-core/pre-call/4-waiting-room.mdx new file mode 100644 index 000000000..5b2c4782f --- /dev/null +++ b/docs/flutter-core/pre-call/4-waiting-room.mdx @@ -0,0 +1,60 @@ +# Waiting Room + +When you call `dyteMobileClient.joinRoom()`, the user either enters the meeting room directly if allowed, or they are placed in the waiting room +if they are a waitlisted participant. + +The diagram illustrates the possible room states the local user can be in. + +```mermaid +stateDiagram-v2 + init --> joined + init --> waitlisted + waitlisted --> joined + waitlisted --> rejected +``` + +
+ +### Meeting Room Joined + +If user joins the room successfully, you receive the `onMeetingRoomJoinCompleted()` callback in `DyteMeetingRoomEventsListener`. +You can listen for this callback as follows: + +```dart + +class MeetingRoomNotifier extends DyteMeetingRoomEventsListener{ + override fun onMeetingRoomJoinCompleted() { + // Local user is in the meeting + } +} + +dyteMobileClient.addMeetingRoomEventsListener(MeetingRoomNotifier()); +``` + +### Waitlisted Participant + +If the user is waitlisted, the `onWaitListStatusUpdate` callback in `DyteSelfEventsListener` notifies you of any changes in the +user's waitlist status. You can check the `waitListStatus` to determine their status: + +- `WAITING`: Local user is in the waiting room. +- `REJECTED`: Local user's join room request is rejected by the host. + +```dart +class WaitingRoomNotifier extends DyteSelfEventsListener{ + @override + void onWaitListStatusUpdate(DyteWaitListStatus waitListStatus) { + switch (waitListStatus) { + case DyteWaitListStatus.waiting: + // Local user is in the waiting room + case DyteWaitListStatus.rejected: + // Local user's join room request was rejected by the host + default: + break; + } + } +} + +dyteMobileClient.addSelfEventsListener(WaitingRoomNotifier()); +``` + +Host can use [these methods to accept/reject participants](/flutter-core/participants#waiting-room-methods). From 06edb4e8d111cbc032ef88b5c4c3f2fad8e20155 Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Thu, 6 Jun 2024 01:23:16 +0530 Subject: [PATCH 05/16] docs: added waitlisted participants and related events in participants sections --- .../participants/waitlisted-participants.mdx | 69 +++++++++++++++++++ 1 file changed, 69 insertions(+) create mode 100644 docs/flutter-core/participants/waitlisted-participants.mdx diff --git a/docs/flutter-core/participants/waitlisted-participants.mdx b/docs/flutter-core/participants/waitlisted-participants.mdx new file mode 100644 index 000000000..6d5858edd --- /dev/null +++ b/docs/flutter-core/participants/waitlisted-participants.mdx @@ -0,0 +1,69 @@ +--- +title: Waitlisted Participants +description: 'Events, methods and data to manage waiting room participants.' +sidebar_position: 4 +tags: + - flutter-core + - participants + - waitlisted + - waiting room +--- + +Participants in the waiting room are represented by `DyteWaitlistedParticipant` objects. If the local user has the permission to +accept waiting room requests (`dyteMobileClient.permissions.waitingRoom.canAcceptRequests` is _true_), you can manage pending waiting room requests, +accepting or rejecting them as needed. +You can access the list of waitlisted participants via the `dyteMobileClient.participants.waitlisted` property. + +**Note**: If the local user is not a host, `dyteMobileClient.participants.waitlisted` property returns an empty list. + +### Accepting Requests + +To accept a waiting room request, use the `acceptWaitListedRequest()` method on a `dyteMobileClient.hostActions` object: + +```dart +final waitlistedParticipant = dyteMobileClient.participants.waitlisted[0]; +dyteMobileClient.hostActions.acceptWaitlistedParticipant(waitlistedParticipant); +``` + +### Rejecting Requests + +To deny a waiting room request, use the `rejectWaitListedRequest()` method on a `dyteMobileClient.hostActions` object: + +```dart +final waitlistedParticipant = dyteMobileClient.participants.waitlisted[0]; +dyteMobileClient.hostActions.rejectWaitListedRequest(waitlistedParticipant); +``` + +### Waiting Room Events + +Implement the `DyteWaitlistEventsListener` interface to listen for events related to the waiting room: + +```kotlin +class WaitlistStatusNotifier extends DyteWaitingRoomEventsListener { + @override + void onWaitListParticipantJoined(DyteWaitlistedParticipant participant) { + // Triggered when a new participant joins the waiting room + } + + @override + void onWaitListParticipantAccepted(DyteWaitlistedParticipant participant) { + // Triggered when a waitlisted participant is accepted into the meeting + } + + @override + void onWaitListParticipantRejected(DyteWaitlistedParticipant participant) { + // Triggered when a waitlisted participant is denied entry into the meeting + } + + @override + void onWaitListParticipantClosed(DyteWaitlistedParticipant participant) { + // Triggered when a waitlisted participant leaves the waiting room + } +} + +dyteMobileClient.addWaitingRoomListener(WaitlistStatusNotifier()); +``` + + + Flutter Core Waitlisted Participants + From 882df84e8820132eb6e38da608604d6be0ef795d Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Fri, 7 Jun 2024 02:05:40 +0530 Subject: [PATCH 06/16] docs: reworked local-user section, added manage-permissions page --- docs/flutter-core/local-user/events.mdx | 84 +++++++++++++++---- docs/flutter-core/local-user/introduction.mdx | 26 ++++-- .../local-user/manage-permissions.mdx | 53 ++++++++++++ 3 files changed, 143 insertions(+), 20 deletions(-) create mode 100644 docs/flutter-core/local-user/manage-permissions.mdx diff --git a/docs/flutter-core/local-user/events.mdx b/docs/flutter-core/local-user/events.mdx index a8ee0f3f4..19cbc110e 100644 --- a/docs/flutter-core/local-user/events.mdx +++ b/docs/flutter-core/local-user/events.mdx @@ -140,25 +140,70 @@ When the local user is removed from the meeting, the `onRemovedFromMeeting()` ca ```dart -@override -void onRemovedFromMeeting() { - // Display an alert to the user indicating that they are no longer in the meeting. +class LocalUserNotifier implements DyteSelfEventsListener { + + ... + + @override + void onRemovedFromMeeting() { + // Display an alert to the user indicating that they are no longer in the meeting. + } + + ... } ``` +## Screenshare callbacks for local user + +```dart + +class LocalUserNotifier implements DyteSelfEventsListener { + + ... + + + @override + void onScreenShareStartFailed(String reason) { + // screenshare failed to start + } + + @override + void onScreenShareStarted() { + // screenshare started presenting in the meeting + } + + @override + void onScreenShareStopped() { + // screenshared stopped by the local user + } + + ... +} + +``` + ## Change in audio/video source Whenever user changes audio/video source using `setAudioDevice(DyteAudioDevice)` and `setVideoDevice(DyteVideoDevice)` respectively [ref: [here](/flutter-core/local-user/manage-media-devices)], `onAudioDevicesUpdated()` and `onVideoDevicesChanged()` are triggered respectively. ```dart -@override -void onAudioDevicesUpdated() { - // triggered on successful execution of `setAudioDevice(DyteAudioDevice)` -} -@override -void onVideoDeviceChanged(DyteVideoDevice videoDevice) { - // triggered on successful execution of `setVideoDevice(DyteVideoDevice)` +class LocalUserNotifier implements DyteSelfEventsListener { + + ... + + @override + void onAudioDevicesUpdated() { + // triggered on successful execution of `setAudioDevice(DyteAudioDevice)` + } + + @override + void onVideoDeviceChanged(DyteVideoDevice videoDevice) { + // triggered on successful execution of `setVideoDevice(DyteVideoDevice)` + } + + ... + } ``` @@ -168,13 +213,24 @@ void onVideoDeviceChanged(DyteVideoDevice videoDevice) { Manage messages within the room using `onRoomMessage(String message)` callback. ```dart -@override -void onRoomMessage(String type, Map payload) { - // triggered when a message is sent within the room. + +class LocalUserNotifier implements DyteSelfEventsListener { + + ... + + @override + void onRoomMessage(String type, Map payload) { + // triggered when a message is sent within the room. + } + + ... } ``` Flutter Core Events - + diff --git a/docs/flutter-core/local-user/introduction.mdx b/docs/flutter-core/local-user/introduction.mdx index 1c41b8fa1..6904b1881 100644 --- a/docs/flutter-core/local-user/introduction.mdx +++ b/docs/flutter-core/local-user/introduction.mdx @@ -12,8 +12,7 @@ tags: # Introduction - Local User -`DyteSelfUser` object contain all the methods and properties about the self user including their -media controls for the current room. +The local user in the `dyteMobileClient` object has a set of methods and properties related to media controls. These can be accessed using the identifier localUser. ## Properties @@ -23,8 +22,6 @@ Here is a list of properties that local user provides: - `userId`: The `userId` of the participant. - `name`: Contains Name of the local user. - `picture`: Link to the url of the participant -- `isHost`: Boolean value indicating whether this user is host of current - meeting or not. - `clientSpecificId`: Identifier provided by the developer while adding the participant. - `flags`: Type `ParticipantFlags` and it contains two boolean values @@ -32,7 +29,6 @@ Here is a list of properties that local user provides: - `hidden`: if the participant is hidden - `audioEnabled`: Boolean value indicating if the audio currently enabled. - `videoEnabled`: Boolean value indicating if the video currently enabled. -- `stageStatus` : Stage status of the local participant. Local user properties can be fetched via `localUser` getter on the `dyteClient`. @@ -114,6 +110,21 @@ dyteClient.localUser.switchCamera(); ## Enable / Disable Screen share +:::tip Note + +### Android + +To use screenshare on Android devices running Android API 14 and above, you will need to declare the following permission in your app's AndroidManifest.xml. + +`` + +Adding above permission will require you to do extra steps on Google Play Console while submitting the app. For more information please refer [this](https://support.google.com/googleplay/android-developer/answer/13392821?hl=en#declare). + +### iOS + +Refer to screenshare setup for iOS [here](./screen-share-iOS-guide.mdx) +::: + ```dart // Enable Screenshare dyteClient.localUser.enableScreenshare(); @@ -124,5 +135,8 @@ dyteClient.localUser.disableScreenshare(); Flutter Core Introduction - + diff --git a/docs/flutter-core/local-user/manage-permissions.mdx b/docs/flutter-core/local-user/manage-permissions.mdx new file mode 100644 index 000000000..cdff16350 --- /dev/null +++ b/docs/flutter-core/local-user/manage-permissions.mdx @@ -0,0 +1,53 @@ +--- +title: Media Permissions +description: >- + Learn how to manage permissions in your Flutter application for a secure and + controlled user experience with Dyte Docs. +sidebar_position: 5 +tags: + - flutter-core + - local-user + - self + - self events +--- + +# Media Permissions + +To get media permissions (audio/video) for localUser we can do as follows + +```dart +final isCameraPermissionGranted + = dyteMobileClient.localUser.permissions.isCameraPermissionGranted; +final isMicrophonePermissionGranted + = dyteMobileClient.localUser.permissions.isMicrophonePermissionGranted; +``` + +Similarly to listen to callbacks regarding media permissions once user joins +the meeting + +```dart + +class LocalUserNotifier implements DyteSelfEventsListener { + + ... + @override + void onMeetingRoomJoinedWithoutCameraPermission() { + // when meeting room is joined without camera permission + } + + override + void onMeetingRoomJoinedWithoutMicPermission() { + // when meeting room is joined without microphone permission + } + + ... +} +``` + + + Flutter Core Media Permissions + + From 049110a47005284f5d925db594e9cc2f510e88d7 Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Wed, 26 Jun 2024 15:15:31 +0530 Subject: [PATCH 07/16] docs: refactored recording page --- docs/flutter-core/recording.mdx | 43 ++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 20 deletions(-) diff --git a/docs/flutter-core/recording.mdx b/docs/flutter-core/recording.mdx index 086d4151f..aeb5a53ee 100644 --- a/docs/flutter-core/recording.mdx +++ b/docs/flutter-core/recording.mdx @@ -14,23 +14,11 @@ tags: The `dyteClient.recording` object can be used start and stop recordings in a meeting. -The `dyteClient.recording` object has the following properties: +### Recording State -- recordingState: `DyteRecordingState`, Indicates the current recording - state of the meeting. +The `dyteClient.recording.recordingState` property indicates the current state of the recording. Possible states include `idle`, `recording`, `starting`, `stopping`. -To listen recording status updates, you need to listen for -`onMeetingRecordingStateUpdated()` event. This returns `DyteRecordingState` -object with it. - -There can be 4 states: - -- `idle` -- `starting` -- `recording` -- `stopping` - -## Start a recording +### Start a recording To start a recording, you need to call the `start()` method in the `dyteClient.recording` object, as shown below. @@ -39,7 +27,7 @@ To start a recording, you need to call the `start()` method in the dyteClient.recording.start(); ``` -## Stop a recording +### Stop a recording To stop a recording, you need to call the `stop()` method in the `dyteClient.recording` object, as shown below. @@ -48,10 +36,22 @@ To stop a recording, you need to call the `stop()` method in the dyteClient.recording.stop(); ``` -## Listen to recording state changes +### Listening for Recording Events + +To handle recording-related updates, you need to listen for +`onMeetingRecordingStateUpdated()` event. This returns `DyteRecordingState` +object with it. + +### Listen to recording state changes + +To handle recording-related updates, you need to implement `DyteMeetingRoomEventsListener`. This interface provides callbacks for various recording events as described in excerpt below: -The changes to recording state can be listened by implementing -`onMeetingRecordingStateUpdated` from `DyteMeetingRoomEventsListener`. +- `onMeetingRecordingStarted()`: Called when the recording is started or resumed, either by the user or their peer. +- `onMeetingRecordingEnded()`: Called when the recording is stopped or paused, either by the user or their peer. +- `onMeetingRecordingStateUpdated(DyteRecordingState` recordingState): Notifies when there is a change in the recording state. +- `onMeetingRecordingStopError(String error)`: Indicates an error occurred while stopping an active recording. +- `onMeetingRecordingPauseError(String error)`: Indicates an error occurred while pausing an active recording. +- `onMeetingRecordingResumeError(String error)`: Indicates an error occurred while resuming a paused recording. ```dart @@ -89,5 +89,8 @@ dyteClient.addRecordingListener(RecordingListener()); Flutter Core Recording - + From 6792ef28bf9a83d1255f8d1fc9f6728960f483e1 Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Wed, 26 Jun 2024 15:31:09 +0530 Subject: [PATCH 08/16] docs: refactored poll docs --- docs/flutter-core/polls/creating-a-poll.mdx | 19 ------ docs/flutter-core/polls/introduction.mdx | 70 ++++++++++++++++++--- docs/flutter-core/polls/receiving-polls.mdx | 47 -------------- 3 files changed, 61 insertions(+), 75 deletions(-) delete mode 100644 docs/flutter-core/polls/receiving-polls.mdx diff --git a/docs/flutter-core/polls/creating-a-poll.mdx b/docs/flutter-core/polls/creating-a-poll.mdx index 115fdc7b1..6563a3b8c 100644 --- a/docs/flutter-core/polls/creating-a-poll.mdx +++ b/docs/flutter-core/polls/creating-a-poll.mdx @@ -34,25 +34,6 @@ dyteClient.polls.create( ); ``` -# Voting on a poll - -The `dyteClient.polls.vote()` method can be used to register a vote on a poll. -It accepts the following params. - -| Param | Type | Default Value | Required | Description | -| ----------- | --------------- | ------------- | -------- | ---------------------------------------------------------- | -| pollMessage | DytePollMessage | - | yes | Contains all the poll properties (question, options, etc.) | -| pollOption | DytePollOption | yes | yes | Option on which the user voted | - -The following snippet votes for the 1st option on the 1st poll created in the -meeting. - -```dart -final poll = dyteClient.polls.polls[0]; -final selectedPollOption = poll.options[0]; -dyteClient.polls.vote(poll, selectedPollOption); -``` - Flutter Core creating/voting a poll options; + final List voted; +} +``` + The `DytePollMessage` class has the following properties: - `id`: Unique ID assigned to each poll. @@ -29,19 +41,59 @@ The `DytePollMessage` class has the following properties: - `options`: Array of `DytePollOption` object, contains all the options to the poll question. -`DytePollOption` has the following properties: +The type `DytePollMessage` represents a poll in a Dyte meeting. It also +contains list of `DytePollOption` which are _options_ for a given poll. And every +`DytePollOption` has list of votes inside of it. Votes are objects of class +`DytePollVote` which internally has id and name of the vote. + +```dart +class DytePollOption( + final String text; // Option text. + final List votes; // List of votes. + final int count; // Number of votes. +); + +class DytePollVote { + final String id; // ID of the voter. + final String name; // Name of the voter. +} +``` + +### Listening to new polls in a meeting + +To be able to receive new poll messages you need to implement a method +`onPollUpdates()` method from callback `DytePollEventsListener`: + +To get poll updates, listen to `onPollUpdates()` callback: + +```dart + +class PollEventsListeners extends DytePollEventsListener { + + @override + void onPollUpdates(List polls) { + /// code to handle polls + } + + @override + void onNewPoll(DytePollMessage poll) { + /// code to handle new poll + } + +} -- `text` : Contains the option text. -- `votes` : List of `DytePollVote` object, which contains info about voters of - this option. -- `count` : Int of number of votes given to this option. +``` -`DytePollVote` has the following properties: +You can subscribe to these events as follows: -- `id` : ID of the voter. -- `name` : Name of the voter. +```dart +dyteClient.addPollEventsListener(PollEventsListeners()); +``` Flutter Core Introduction - + diff --git a/docs/flutter-core/polls/receiving-polls.mdx b/docs/flutter-core/polls/receiving-polls.mdx deleted file mode 100644 index f16ffa66d..000000000 --- a/docs/flutter-core/polls/receiving-polls.mdx +++ /dev/null @@ -1,47 +0,0 @@ ---- -title: Receiving polls -description: >- - Understand how users can vote on polls in Flutter with Dyte's features. Follow - our documentation for effective implementation in your app. -sidebar_position: 3 -tags: - - flutter-core - - polls - - votes ---- - -To be able to receive new poll messages you need to implement a method -`onPollUpdates()` method from callback `DytePollEventsListener`: - -To get poll updates, listen to `onPollUpdates()` callback: - -```dart - -class PollEventsListeners extends DytePollEventsListener { - - ... - - @override - void onPollUpdates(List polls) { - /// code to handle polls - } - - @override - void onNewPoll(DytePollMessage poll) { - /// code to handle new poll - } - - ... -} - -``` - -You can subscribe to this events by `addPollEventsListener` method: - -```dart -dyteClient.addPollEventsListener(PollEventsListeners()); -``` - - - Flutter Core listening to polls - From 7af1be4eb1a266bf825ae32eedfa47a00fbbc831 Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Wed, 26 Jun 2024 17:52:31 +0530 Subject: [PATCH 09/16] docs: remove redundant waiting room page --- docs/flutter-core/waiting-room.mdx | 37 ------------------------------ 1 file changed, 37 deletions(-) delete mode 100644 docs/flutter-core/waiting-room.mdx diff --git a/docs/flutter-core/waiting-room.mdx b/docs/flutter-core/waiting-room.mdx deleted file mode 100644 index ebd3247dd..000000000 --- a/docs/flutter-core/waiting-room.mdx +++ /dev/null @@ -1,37 +0,0 @@ ---- -title: Waiting room -sidebar_position: 11 -tags: - - flutter-core - - stage - - livestream - - webinar ---- - -## Events - -To subscribe to waiting room events, you need to attach a waiting room listener as: - -```dart - -class WaitingRoomListener extends DyteWaitingRoomEventsListener { - ... - void onWaitListParticipantAccepted(DyteWaitlistedParticipant participant){ - // manage state/UI to show that participant has been accepted - } - ... -} - -dyteClient.addWaitingRoomListener(WaitingRoomListener()); -``` - -| **Event** | **Description** | -| ------------------------------- | ------------------------------------------------------------------------------------------------------------------------ | -| `onWaitListParticipantJoined` | Emitted when a participant joins the waitlisted queue. This event also contain participant details in the payload | -| `onWaitListParticipantClosed` | Emitted when a waitlisted participant withdraws it's request. This event also contain participant details in the payload | -| `onWaitListParticipantAccepted` | Emitted when a waitlisted participant is accepted. This event also contain participant details in the payload. | -| `onWaitListParticipantRejected` | Emitted when a waitlisted participant is rejected. This event also contain participant details in the payload. | - - - Flutter Core Waiting room - From 89a2c8d16b9a645ae8d3c089e43480ccd2ab6d73 Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Wed, 26 Jun 2024 17:53:23 +0530 Subject: [PATCH 10/16] docs: fix create poll heading --- docs/flutter-core/polls/creating-a-poll.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/flutter-core/polls/creating-a-poll.mdx b/docs/flutter-core/polls/creating-a-poll.mdx index 6563a3b8c..e78fcdffe 100644 --- a/docs/flutter-core/polls/creating-a-poll.mdx +++ b/docs/flutter-core/polls/creating-a-poll.mdx @@ -1,5 +1,5 @@ --- -title: Create & Vote a poll +title: Creating a poll description: >- Learn how to create polls in Flutter using Dyte's features. Follow our documentation for seamless integration and effective poll creation. From bd51c275ee532a45fba9eac4db37a30cfa1ef3f5 Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Wed, 26 Jun 2024 17:53:55 +0530 Subject: [PATCH 11/16] docs: added stage management section --- .../stage-management/_category_.json | 6 + .../stage-management/host-controls.mdx | 115 ++++++++++++++ .../stage-management/introduction.mdx | 140 ++++++++++++++++++ .../stage-management/viewer-participants.mdx | 39 +++++ 4 files changed, 300 insertions(+) create mode 100644 docs/flutter-core/stage-management/_category_.json create mode 100644 docs/flutter-core/stage-management/host-controls.mdx create mode 100644 docs/flutter-core/stage-management/introduction.mdx create mode 100644 docs/flutter-core/stage-management/viewer-participants.mdx diff --git a/docs/flutter-core/stage-management/_category_.json b/docs/flutter-core/stage-management/_category_.json new file mode 100644 index 000000000..064be588f --- /dev/null +++ b/docs/flutter-core/stage-management/_category_.json @@ -0,0 +1,6 @@ +{ + "position": 7, + "label": "Stage Management", + "collapsible": true, + "className": "pre-call-docs" +} diff --git a/docs/flutter-core/stage-management/host-controls.mdx b/docs/flutter-core/stage-management/host-controls.mdx new file mode 100644 index 000000000..77e3118dc --- /dev/null +++ b/docs/flutter-core/stage-management/host-controls.mdx @@ -0,0 +1,115 @@ +--- +title: Stage Host Controls +description: Stage management APIs for Host in Dyte meetings. +sidebar_position: 2 +tags: + - flutter-core + - stage +--- + +In a stage management-enabled meeting, a user with the `selfPermissions.host.canAcceptStageRequests` permission as `true` is +considered a host. The `dyteMobileClient.stage` object in Dyte's Flutter Core SDK provides stage management APIs that allow hosts to +manage stage access requests, invite participants to the stage, and remove participants from the stage. + +### List of Stage Access Requests + +You can retrieve the list of pending stage access requests by accessing the `dyteMobileClient.stage.accessRequests` property. This property +provides a list of `DyteJoinedMeetingParticipant` objects who have requested stage access. + +:::note +If the local user is not a host, this property returns an empty list. +::: + +### Grant stage access + +A privileged user can grant access to stage for a set of users with `grantAccess` method. + +| **Parameters** | **Type** | +| -------------- | ------------------------------ | +| peer | _DyteJoinedMeetingParticipant_ | + +```dart +dyteClient.stage.grantAccess(peer); +``` + +To grant access to all stage requests at a time, you can user `grantAccessToAll()` method. This method takes no parameters. + +```dart +dyteClient.stage.grantAccessToAll(); +``` + +### Deny stage access + +A privileged user can deny access to stage for a set of users with `denyAccess` method. + +| **Parameters** | **Type** | +| -------------- | ------------------------------ | +| peer | _DyteJoinedMeetingParticipant_ | + +```dart +dyteClient.stage.denyAccess(peer); +``` + +To deny all stage requests at a time, you can user `denyAccessToAll()` method. This method takes no parameters. + +```dart +dyteClient.stage.denyAccessToAll(); +``` + +### Kick participant from stage + +A privileged user can kick a participant from stage with `kick` method. + +| **Parameters** | **Type** | +| -------------- | ------------------------------ | +| peer | _DyteJoinedMeetingParticipant_ | + +```dart +dyteClient.stage.kick(peer); +``` + +### Listening to Stage Access Requests + +You can listen to incoming stage access requests or changes in the access requests list if you are a host. The SDK provides the +following callbacks to `DyteStageEventsListener`: + +```dart +class StageEventListener extends DyteStageEventsListener { + @override + void onPresentRequestAdded(DyteJoinedMeetingParticipant participant) { + // Called when a participant requests to join the stage. Triggered only if the local user is a host. + } + + @override + void onPresentRequestClosed(DyteJoinedMeetingParticipant participant) { + // Called when a participant with a pending stage access request leaves the meeting. + // Triggered only if the local user is a host. + } + + @override + void onPresentRequestRejected(DyteJoinedMeetingParticipant participant) { + // Called when a participant's stage access request is denied by the host. + // Triggered only if the local user is a host. + } + + @override + void onPresentRequestWithdrawn(DyteJoinedMeetingParticipant participant) { + // Called when a participant cancels their stage access request. + // Triggered only if the local user is a host. + } + + @override + void onStageRequestsUpdated(List accessRequests) { + // Called when the list of stage access requests is updated. + } +} +``` + +You need to attach the listener to meeting client as follows: + +```dart +dyteClient.addStageEventsListener(StageEventsListener()) +``` + +These APIs enable you to manage stage access requests and participants effectively in Dyte meetings. Next, we'll explore the +Stage APIs available to Viewer participants. diff --git a/docs/flutter-core/stage-management/introduction.mdx b/docs/flutter-core/stage-management/introduction.mdx new file mode 100644 index 000000000..90ed3ded8 --- /dev/null +++ b/docs/flutter-core/stage-management/introduction.mdx @@ -0,0 +1,140 @@ +--- +title: Introduction +description: Stage management in Dyte meetings. +sidebar_position: 1 +tags: + - flutter-core + - stage +--- + +_Below documentation is relevant for Interactive Livestream(LHLS) and Webinar(WebRTC) use cases._ + +Instead of a traditional publish-subscribe model, where a user can publish their media and others can choose to subscribe, Dyte +comes with an optional managed configuration. In this managed configuration, a less privileged user can be configured with a +default behavior to not publish media. The user can then request permission to publish their media, which a privileged user can +choose to grant or deny. + +### Accessing the Stage APIs + +Dyte's stage management APIs allow users to perform actions such as joining and leaving the stage, managing stage requests and +permissions, and kicking participants from the stage. These APIs are accessible through the `dyteMobileClient.stage` object. + +### Stage Status + +In meetings where stage management is enabled, a user's stage status can change within the values represented by the `DyteStageStatus` +enum. These status values include: + +- `onStage`: Indicates that the user is currently on the stage and is allowed to publish media. +- `offStage`: Indicates that the user is a viewer and is not on the stage. They can see and listen to those on stage. +- `requestedToJoinStage`: Indicates that the user has a pending request to join the stage. This status is assigned to the user + until the host accepts or rejects their request. +- `acceptedToJoinStage`: Indicates that the host has accepted the user's request to join the stage. +- `rejectedToJoinStage`: Indicates that the host has rejected the user's request to join the stage. The user can request again + to join from this status. + +The `dyteMobileClient.stage.status` property provides the current stage status of the local user. + +### Viewers + +You can retrieve a list of off-stage participants (viewers) in a stage-enabled meeting by accessing the `meeting.stage.viewers` +property. This property provides a list of `DyteJoinedMeetingParticipant` objects whose stage status is not `onStage`. + +### Joining the Stage + +To interact with peers and publish media, users can join the stage. This action is only possible if the user's preset allows them +to publish media or if their request to join the stage has been accepted by a host (i.e., their stage status is `acceptedToJoinStage`). + +```dart +dyteClient.stage.join(); +``` + +### Leaving the Stage + +When users want to stop interacting with peers, they can leave the stage. This action stops their media from being published, +and their audio and video are no longer received by others in the room. + +```dart +dyteClient.stage.leave(); +``` + +### List of Stage Events + +The `DyteStageEventListener` interface provides callback methods for various stage events. Implement these callbacks to handle +stage-related events in your application: + +```dart +class StageEventListener extends DyteStageEventsListener { + @override + void onAddedToStage() { + // Called when the local user successfully joins the stage. + } + + @override + void onParticipantRemovedFromStage( + DyteJoinedMeetingParticipant participant) { + // Called when a participant is removed from the stage by the host. + } + + @override + void onPresentRequestAdded(DyteJoinedMeetingParticipant participant) { + // Called when a participant requests to join the stage. Triggered only if the local user is a host. + } + + @override + void onPresentRequestClosed(DyteJoinedMeetingParticipant participant) { + // Called when a participant with a pending stage access request leaves the meeting. + // Triggered only if the local user is a host. + } + + @override + void onPresentRequestReceived() { + // Called when the local user's stage access request is accepted by the host, + // or when the local user, who is a viewer, is invited to the stage by the host. + } + + @override + void onPresentRequestRejected(DyteJoinedMeetingParticipant participant) { + // Called when a participant's stage access request is denied by the host. + // Triggered only if the local user is a host. + } + + @override + void onPresentRequestWithdrawn(DyteJoinedMeetingParticipant participant) { + // Called when a participant cancels their stage access request. + // Triggered only if the local user is a host. + } + + @override + void onRemovedFromStage() { + // Called when the local user is removed from the stage. + } + + @override + void onStageRequestsUpdated(List accessRequests) { + // Called when the list of stage access requests is updated. + } + + @override + void onStageStatusUpdated(DyteStageStatus stageStatus) { + // Called when the local user's stage status is updated. + } + + @override + void onParticipantStartedPresenting(DyteJoinedMeetingParticipant participant) { + // Called when a participant joins the stage. + } + + @override + void onParticipantStoppedPresenting(DyteJoinedMeetingParticipant participant) { + // Called when a participant leaves the stage. + } +} +``` + +You need to attach the listener to meeting client as follows: + +```dart +dyteClient.addStageEventsListener(StageEventsListener()) +``` + +Next, we'll explore the Stage Management APIs for hosts, allowing them to manage stage requests, participants in Dyte meetings. diff --git a/docs/flutter-core/stage-management/viewer-participants.mdx b/docs/flutter-core/stage-management/viewer-participants.mdx new file mode 100644 index 000000000..387ed81e1 --- /dev/null +++ b/docs/flutter-core/stage-management/viewer-participants.mdx @@ -0,0 +1,39 @@ +--- +title: Stage Access for Viewers +description: Stage APIs for Viewers in Dyte meetings. +sidebar_position: 3 +tags: + - flutter-core + - stage +--- + +Viewer participants in a stage-enabled meeting are users whose preset permission for media production is set as `canRequest`. +The `dyteMobileClient.stage` object provides APIs for viewer participants to request stage access and withdraw their join stage request. + +### Request access + +This method is used to create a new stage request which can be approved by the host. + +```dart +dyteClient.stage.requestAccess(); +``` + +When a host accepts the user's stage access request or allows the user directly to the stage, the SDK triggers the +`onPresentRequestReceived` callback in `DyteStageEventListener`. You can listen to this event: + +```dart +class StageEventListener with DyteStageEventsListener { + @override + void onPresentRequestReceived() { + // Host accepted the join stage request or invited user directly to stage + } +} +``` + +### Withdraw join request + +To cancel or withdraw a pending stage access request, you can call the `withdrawJoinRequest()` method: + +```dart +dyteClient.stage.withdrawJoinRequest(); +``` From a31c3d6cdb4441db00c5ae77fd3af10f1207331f Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Wed, 26 Jun 2024 17:54:17 +0530 Subject: [PATCH 12/16] docs: removed older redundant stage-management page --- docs/flutter-core/stage-management.mdx | 173 ------------------------- 1 file changed, 173 deletions(-) delete mode 100644 docs/flutter-core/stage-management.mdx diff --git a/docs/flutter-core/stage-management.mdx b/docs/flutter-core/stage-management.mdx deleted file mode 100644 index 0fc9ff0fb..000000000 --- a/docs/flutter-core/stage-management.mdx +++ /dev/null @@ -1,173 +0,0 @@ ---- -title: Stage management -sidebar_position: 10 -tags: - - flutter-core - - stage - - livestream - - webinar ---- - -## Access the stage APIs - -Stage feature is useful when you're using webinar/livestream. We allow central stage methods for both call types. - -Using Dyte's stage management APIs a user can do actions such as request to join, join/leave stage, grant/deny stage access to other users, etc. - -All stage APIs are accessible by following excerpt: - -```dart -final stage = dyteClient.stage; -``` - -## Properties - -### Status - -The following method returns the current stage status of the local user. - -```dart -final DyteStageStatus stageStatus = dyteClient.stage.status; -``` - -It can have the following values: - -- DyteStageStatus.onStage : This value indicates that the user is currently on the stage. -- DyteStageStatus.offStage : This value means that the user is viewing the webinar/livestream but is not on the stage. -- DyteStageStatus.requestedToJoinStage : The user has a pending request to join stage. This value will be assigned to their status until the host accepts or rejects their request. -- DyteStageStatus.acceptedToJoinStage : The host has accepted user's request to join stage. If the host accepts the user's request to join the stage, this value will be assigned to the user's status. - -## Host Controls - -:::tip Note - -These methods are preset dependent, hence if a user's preset doesn't allow certain host actions, calling the API won't change anything. - -::: - -Dyte's stage management APIs allow hosts to receive and manage stage requests as well as leave and join the stage. - -### Join stage - -This method enables the user to be on stage and let them interact with other peers in the meeting. - -```dart -dyteClient.stage.join(); -``` - -### Leave stage - -This method lets user leave the stage and. Additionally, their audio/video will no longet be visible to others in the room. - -```dart -dyteClient.stage.leave(); -``` - -### Grant stage access - -A privileged user can grant access to stage for a set of users with `grantAccess` method. - -| **Parameters** | **Type** | -| -------------- | ------------------------------ | -| peer | _DyteJoinedMeetingParticipant_ | - -```dart -dyteClient.stage.grantAccess(peer); -``` - -To grant access to all stage requests at a time, you can user `grantAccessToAll()` method. This method takes no parameters. - -```dart -dyteClient.stage.grantAccessToAll(); -``` - -### Deny stage access - -A privileged user can deny access to stage for a set of users with `denyAccess` method. - -| **Parameters** | **Type** | -| -------------- | ------------------------------ | -| peer | _DyteJoinedMeetingParticipant_ | - -```dart -dyteClient.stage.denyAccess(peer); -``` - -To deny all stage requests at a time, you can user `denyAccessToAll()` method. This method takes no parameters. - -```dart -dyteClient.stage.denyAccessToAll(); -``` - -### Kick participant from stage - -A privileged user can kick a participant from stage with `kick` method. - -| **Parameters** | **Type** | -| -------------- | ------------------------------ | -| peer | _DyteJoinedMeetingParticipant_ | - -```dart -dyteClient.stage.kick(peer); -``` - -## Participant controls - -Dyte's stage management APIs allow participant to receive and manage stage requests as well as leave and join the stage. - -### Request access - -This method is used to create a new stage request which can be approved by the host. - -```dart -dyteClient.stage.requestAccess(); -``` - -### Withdraw join request - -You can call this method in order to cancel your stage request. - -```dart -dyteClient.stage.withdrawJoinRequest(); -``` - -## Stage Events - -To be able to listen to stage events, you need to attach a stage events listener as: - -```dart -class StageEventListener extends DyteStageEventsListener { - ... - - @override - void onStageStatusUpdated(DyteStageStatus status) { - // Update your UI as per this stage status. - } - ... -} -``` - -```dart -dyteClient.addStageEventsListener(StageEventsListener()) -``` - -When the stage status of local user is updated, this event is triggered. It contains updated stage status as an argument. - -```dart -@override -void onStageStatusUpdated(DyteStageStatus status){ - // Update your UI/ manage you state as per this stage status. -} -``` - -Here are a list of events the stage occurs: - -| **Event** | **Description** | -| ------------------------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| `onStageRequestsUpdated` | Emitted when stageRequests changes. This event also contain a list of updated requests in the payload as `accessRequests` | -| `onStageStatusUpdated` | Emitted when the user's stage status changes. It contains the updated stage status in the payload as `stageStatus`. | -| `onParticipantRemovedFromStage` | Emitted when a participant is removed from stage. It contains the participant that is removed in the payload as `participant` | - - - Flutter Core Stage management - From 128408b470d534690cd417088591379ba606e488 Mon Sep 17 00:00:00 2001 From: Palash Date: Wed, 5 Jun 2024 14:19:34 +0530 Subject: [PATCH 13/16] Revert "fix: hide livestream, chat SDK docs" This reverts commit 86097d2265cca72606cb7ef161378744092b547e. --- docs/android-core/livestream/_category_.json | 3 +- docs/flutter-core/livestream.mdx | 9 ------ docs/guides/capabilities/_category_.json | 1 - docs/guides/livestream/_category_.json | 2 +- .../livestream/build-livestream-app.mdx | 6 ---- .../guides/livestream/livestream-overview.mdx | 6 ---- docs/guides/realtime-chat/_category_.json | 2 +- .../rest-apis/livestream-dyte-meeting.mdx | 7 ----- docs/ios-core/livestreaming.mdx | 7 ----- docs/partials/_product-section.mdx | 4 +-- docs/react-web-core/livestreaming.mdx | 7 ----- docs/rn-core/livestreaming.mdx | 8 ----- docs/web-core/livestreaming.mdx | 7 ----- src/components/homepage/HeroSection.tsx | 30 +++++++++++++++---- src/css/custom.css | 11 ++----- 15 files changed, 32 insertions(+), 78 deletions(-) diff --git a/docs/android-core/livestream/_category_.json b/docs/android-core/livestream/_category_.json index da74a09d3..85f0f0dd3 100644 --- a/docs/android-core/livestream/_category_.json +++ b/docs/android-core/livestream/_category_.json @@ -1,6 +1,5 @@ { "position": 10, "label": "Livestream", - "collapsible": true, - "className": "hide_sidebar" + "collapsible": true } diff --git a/docs/flutter-core/livestream.mdx b/docs/flutter-core/livestream.mdx index 8c4c12d7d..bba76655f 100644 --- a/docs/flutter-core/livestream.mdx +++ b/docs/flutter-core/livestream.mdx @@ -1,20 +1,11 @@ --- title: Livestreaming sidebar_position: 7 -sidebar_class_name: hide_sidebar tags: - flutter-core - livestream --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - - ## Introduction - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. diff --git a/docs/guides/capabilities/_category_.json b/docs/guides/capabilities/_category_.json index ec48aefc3..f03d7a7f8 100644 --- a/docs/guides/capabilities/_category_.json +++ b/docs/guides/capabilities/_category_.json @@ -2,6 +2,5 @@ "position": 5, "label": "Capabilities", "collapsible": true, - "collapsed": false, "className": "releaseSidebarHeading" } diff --git a/docs/guides/livestream/_category_.json b/docs/guides/livestream/_category_.json index 276631ce0..a189ba8d3 100644 --- a/docs/guides/livestream/_category_.json +++ b/docs/guides/livestream/_category_.json @@ -2,5 +2,5 @@ "position": 3, "label": "Interactive Livestream", "collapsible": true, - "className": "hide_sidebar" + "className": "ils_sidebar_header" } diff --git a/docs/guides/livestream/build-livestream-app.mdx b/docs/guides/livestream/build-livestream-app.mdx index b9324d9a3..adddab6c0 100644 --- a/docs/guides/livestream/build-livestream-app.mdx +++ b/docs/guides/livestream/build-livestream-app.mdx @@ -6,12 +6,6 @@ description: >- guide for effective app development and integration. --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - import IntegrateDyte from '/docs/partials/_integrate-dyte.mdx'; import Admonition from '@theme/Admonition'; diff --git a/docs/guides/livestream/livestream-overview.mdx b/docs/guides/livestream/livestream-overview.mdx index 4c4beda85..5af1df84a 100644 --- a/docs/guides/livestream/livestream-overview.mdx +++ b/docs/guides/livestream/livestream-overview.mdx @@ -6,12 +6,6 @@ description: >- comprehensive understanding of livestreaming features. --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - Livestreaming is the real-time broadcasting of video or audio content over the internet, enabling viewers to watch and interact with events as they happen. Dyte offers livestreaming services to facilitates one-to-many communication, where a single source streams the content to multiple viewers or participants. It enables the hosts and participants to engage and interact during the stream, creating an interactive live streaming (ILS) experience. - Explore Dyte's REST APIs for livestreaming Dyte meetings. Follow our guide for effective integration and management of REST APIs. --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - This guide provides step-by-step instructions on starting and stopping livestreaming for your Dyte meetings using simple API calls. ## Prerequisites diff --git a/docs/ios-core/livestreaming.mdx b/docs/ios-core/livestreaming.mdx index 467ef8443..ac72254fc 100644 --- a/docs/ios-core/livestreaming.mdx +++ b/docs/ios-core/livestreaming.mdx @@ -1,15 +1,8 @@ --- title: Livestreaming sidebar_position: 10 -sidebar_class_name: hide_sidebar --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/docs/partials/_product-section.mdx b/docs/partials/_product-section.mdx index 031d2a330..ffdeebee7 100644 --- a/docs/partials/_product-section.mdx +++ b/docs/partials/_product-section.mdx @@ -22,12 +22,12 @@ import { to="/guides/voice-conf/intro-voice-conf" description="Integrate reliable voice calling experiences into your product." /> - {/* } to="/guides/livestream/livestream-overview" description="Get started with interactive livestreaming and broadcast to a large audience" - /> */} + /> {/* } diff --git a/docs/react-web-core/livestreaming.mdx b/docs/react-web-core/livestreaming.mdx index f90377687..14da2efcd 100644 --- a/docs/react-web-core/livestreaming.mdx +++ b/docs/react-web-core/livestreaming.mdx @@ -1,15 +1,8 @@ --- title: Livestreaming sidebar_position: 10 -sidebar_class_name: hide_sidebar --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/docs/rn-core/livestreaming.mdx b/docs/rn-core/livestreaming.mdx index 7b1427255..469776bd0 100644 --- a/docs/rn-core/livestreaming.mdx +++ b/docs/rn-core/livestreaming.mdx @@ -1,16 +1,8 @@ --- title: Livestreaming sidebar_position: 11 -sidebar_class_name: hide_sidebar --- - -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/docs/web-core/livestreaming.mdx b/docs/web-core/livestreaming.mdx index 9f1494ef1..9995e929c 100644 --- a/docs/web-core/livestreaming.mdx +++ b/docs/web-core/livestreaming.mdx @@ -1,15 +1,8 @@ --- title: Livestreaming sidebar_position: 10 -sidebar_class_name: hide_sidebar --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/src/components/homepage/HeroSection.tsx b/src/components/homepage/HeroSection.tsx index 090efa124..198392fc4 100644 --- a/src/components/homepage/HeroSection.tsx +++ b/src/components/homepage/HeroSection.tsx @@ -1,6 +1,8 @@ import React from 'react'; import Link from '@docusaurus/Link'; import { + ChatMultipleRegular, + LiveRegular, MicRegular, VideoRegular, } from '@fluentui/react-icons'; @@ -15,7 +17,6 @@ const PRODUCTS = [ lightImage: '/static/landing-page/hero/video-graphic.png', darkImage: '/static/landing-page/hero/video-graphic-dark.png', text: 'Enable live video communication within your application. Perfect for education, telemedicine, social networks and gaming', - beta: false, }, { title: 'Voice', @@ -24,7 +25,24 @@ const PRODUCTS = [ lightImage: '/static/landing-page/hero/voice-graphic.png', darkImage: '/static/landing-page/hero/voice-graphic-dark.png', text: 'Incorporate high-quality real-time audio into your application. Build voice calls, audio conferences, voice chats in games and more', - } + }, + { + title: 'Interactive Live Streaming', + link: '/guides/livestream/livestream-overview', + icon: LiveRegular, + lightImage: '/static/landing-page/hero/livestream-graphic.png', + darkImage: '/static/landing-page/hero/livestream-graphic-dark.png', + text: 'Integrate highly scalable live video broadcasting capabilities into your app, ideal for apps that involve streaming webinars, sports or live events', + }, + { + title: 'Chat', + beta: true, + link: '/guides/realtime-chat/intro-chat', + icon: ChatMultipleRegular, + lightImage: '/static/landing-page/hero/chat-graphic.png', + darkImage: '/static/landing-page/hero/chat-graphic-dark.png', + text: 'Add real-time chat functionalities to your application. Be it customer support, social networks or any other colloboration use case, we got you covered', + }, ]; function HeroProduct({ @@ -71,8 +89,8 @@ function HeroProduct({ export default function HeroSection() { return ( -
-
+ <> +

Build with Dyte @@ -86,11 +104,11 @@ export default function HeroSection() {

-
+
{PRODUCTS.map((product) => ( ))}
-
+ ); } diff --git a/src/css/custom.css b/src/css/custom.css index cd56455b9..e882ba714 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -1161,12 +1161,12 @@ article ul { content: url('data:image/svg+xml,'); } -.hide_sidebar > div > a::before { +.chat_sidebar_header > div > a::before { @apply mt-1 mr-2; content: url('data:image/svg+xml,'); } -html[data-theme='dark'] .hide_sidebar > div > a::before { +html[data-theme='dark'] .chat_sidebar_header > div > a::before { content: url('data:image/svg+xml,'); } @@ -1327,7 +1327,7 @@ h2.anchor > code { opacity: 0.5; } -.hide_sidebar { +.chat_sidebar_header { display: none; } @@ -1435,8 +1435,3 @@ h2.anchor > code, h3.anchor > code { .module-seperation { @apply border-t; } - -/* Hide livestream API */ -div > div[title="Live streams"] { - display: none; -} \ No newline at end of file From 8de4783d6856dd4ffa3c41a5df81c519997eeb72 Mon Sep 17 00:00:00 2001 From: Palash Date: Thu, 6 Jun 2024 09:22:10 +0530 Subject: [PATCH 14/16] Revert "Revert "fix: hide livestream, chat SDK docs"" This reverts commit 525b893325dc50af7cdf60afbbbc656888f3d2e3. --- docs/android-core/livestream/_category_.json | 3 +- docs/flutter-core/livestream.mdx | 9 ++++++ docs/guides/capabilities/_category_.json | 1 + docs/guides/livestream/_category_.json | 2 +- .../livestream/build-livestream-app.mdx | 6 ++++ .../guides/livestream/livestream-overview.mdx | 6 ++++ docs/guides/realtime-chat/_category_.json | 2 +- .../rest-apis/livestream-dyte-meeting.mdx | 7 +++++ docs/ios-core/livestreaming.mdx | 7 +++++ docs/partials/_product-section.mdx | 4 +-- docs/react-web-core/livestreaming.mdx | 7 +++++ docs/rn-core/livestreaming.mdx | 8 +++++ docs/web-core/livestreaming.mdx | 7 +++++ src/components/homepage/HeroSection.tsx | 30 ++++--------------- src/css/custom.css | 11 +++++-- 15 files changed, 78 insertions(+), 32 deletions(-) diff --git a/docs/android-core/livestream/_category_.json b/docs/android-core/livestream/_category_.json index 85f0f0dd3..da74a09d3 100644 --- a/docs/android-core/livestream/_category_.json +++ b/docs/android-core/livestream/_category_.json @@ -1,5 +1,6 @@ { "position": 10, "label": "Livestream", - "collapsible": true + "collapsible": true, + "className": "hide_sidebar" } diff --git a/docs/flutter-core/livestream.mdx b/docs/flutter-core/livestream.mdx index bba76655f..8c4c12d7d 100644 --- a/docs/flutter-core/livestream.mdx +++ b/docs/flutter-core/livestream.mdx @@ -1,11 +1,20 @@ --- title: Livestreaming sidebar_position: 7 +sidebar_class_name: hide_sidebar tags: - flutter-core - livestream --- +:::danger + +Outdated documentation, contact support@dyte.io for more information. + +::: + + + ## Introduction - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. diff --git a/docs/guides/capabilities/_category_.json b/docs/guides/capabilities/_category_.json index f03d7a7f8..ec48aefc3 100644 --- a/docs/guides/capabilities/_category_.json +++ b/docs/guides/capabilities/_category_.json @@ -2,5 +2,6 @@ "position": 5, "label": "Capabilities", "collapsible": true, + "collapsed": false, "className": "releaseSidebarHeading" } diff --git a/docs/guides/livestream/_category_.json b/docs/guides/livestream/_category_.json index a189ba8d3..276631ce0 100644 --- a/docs/guides/livestream/_category_.json +++ b/docs/guides/livestream/_category_.json @@ -2,5 +2,5 @@ "position": 3, "label": "Interactive Livestream", "collapsible": true, - "className": "ils_sidebar_header" + "className": "hide_sidebar" } diff --git a/docs/guides/livestream/build-livestream-app.mdx b/docs/guides/livestream/build-livestream-app.mdx index adddab6c0..b9324d9a3 100644 --- a/docs/guides/livestream/build-livestream-app.mdx +++ b/docs/guides/livestream/build-livestream-app.mdx @@ -6,6 +6,12 @@ description: >- guide for effective app development and integration. --- +:::danger + +Outdated documentation, contact support@dyte.io for more information. + +::: + import IntegrateDyte from '/docs/partials/_integrate-dyte.mdx'; import Admonition from '@theme/Admonition'; diff --git a/docs/guides/livestream/livestream-overview.mdx b/docs/guides/livestream/livestream-overview.mdx index 5af1df84a..4c4beda85 100644 --- a/docs/guides/livestream/livestream-overview.mdx +++ b/docs/guides/livestream/livestream-overview.mdx @@ -6,6 +6,12 @@ description: >- comprehensive understanding of livestreaming features. --- +:::danger + +Outdated documentation, contact support@dyte.io for more information. + +::: + Livestreaming is the real-time broadcasting of video or audio content over the internet, enabling viewers to watch and interact with events as they happen. Dyte offers livestreaming services to facilitates one-to-many communication, where a single source streams the content to multiple viewers or participants. It enables the hosts and participants to engage and interact during the stream, creating an interactive live streaming (ILS) experience. - Explore Dyte's REST APIs for livestreaming Dyte meetings. Follow our guide for effective integration and management of REST APIs. --- +:::danger + +Outdated documentation, contact support@dyte.io for more information. + +::: + This guide provides step-by-step instructions on starting and stopping livestreaming for your Dyte meetings using simple API calls. ## Prerequisites diff --git a/docs/ios-core/livestreaming.mdx b/docs/ios-core/livestreaming.mdx index ac72254fc..467ef8443 100644 --- a/docs/ios-core/livestreaming.mdx +++ b/docs/ios-core/livestreaming.mdx @@ -1,8 +1,15 @@ --- title: Livestreaming sidebar_position: 10 +sidebar_class_name: hide_sidebar --- +:::danger + +Outdated documentation, contact support@dyte.io for more information. + +::: + - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/docs/partials/_product-section.mdx b/docs/partials/_product-section.mdx index ffdeebee7..031d2a330 100644 --- a/docs/partials/_product-section.mdx +++ b/docs/partials/_product-section.mdx @@ -22,12 +22,12 @@ import { to="/guides/voice-conf/intro-voice-conf" description="Integrate reliable voice calling experiences into your product." /> - } to="/guides/livestream/livestream-overview" description="Get started with interactive livestreaming and broadcast to a large audience" - /> + /> */} {/* } diff --git a/docs/react-web-core/livestreaming.mdx b/docs/react-web-core/livestreaming.mdx index 14da2efcd..f90377687 100644 --- a/docs/react-web-core/livestreaming.mdx +++ b/docs/react-web-core/livestreaming.mdx @@ -1,8 +1,15 @@ --- title: Livestreaming sidebar_position: 10 +sidebar_class_name: hide_sidebar --- +:::danger + +Outdated documentation, contact support@dyte.io for more information. + +::: + - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/docs/rn-core/livestreaming.mdx b/docs/rn-core/livestreaming.mdx index 469776bd0..7b1427255 100644 --- a/docs/rn-core/livestreaming.mdx +++ b/docs/rn-core/livestreaming.mdx @@ -1,8 +1,16 @@ --- title: Livestreaming sidebar_position: 11 +sidebar_class_name: hide_sidebar --- + +:::danger + +Outdated documentation, contact support@dyte.io for more information. + +::: + - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/docs/web-core/livestreaming.mdx b/docs/web-core/livestreaming.mdx index 9995e929c..9f1494ef1 100644 --- a/docs/web-core/livestreaming.mdx +++ b/docs/web-core/livestreaming.mdx @@ -1,8 +1,15 @@ --- title: Livestreaming sidebar_position: 10 +sidebar_class_name: hide_sidebar --- +:::danger + +Outdated documentation, contact support@dyte.io for more information. + +::: + - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/src/components/homepage/HeroSection.tsx b/src/components/homepage/HeroSection.tsx index 198392fc4..090efa124 100644 --- a/src/components/homepage/HeroSection.tsx +++ b/src/components/homepage/HeroSection.tsx @@ -1,8 +1,6 @@ import React from 'react'; import Link from '@docusaurus/Link'; import { - ChatMultipleRegular, - LiveRegular, MicRegular, VideoRegular, } from '@fluentui/react-icons'; @@ -17,6 +15,7 @@ const PRODUCTS = [ lightImage: '/static/landing-page/hero/video-graphic.png', darkImage: '/static/landing-page/hero/video-graphic-dark.png', text: 'Enable live video communication within your application. Perfect for education, telemedicine, social networks and gaming', + beta: false, }, { title: 'Voice', @@ -25,24 +24,7 @@ const PRODUCTS = [ lightImage: '/static/landing-page/hero/voice-graphic.png', darkImage: '/static/landing-page/hero/voice-graphic-dark.png', text: 'Incorporate high-quality real-time audio into your application. Build voice calls, audio conferences, voice chats in games and more', - }, - { - title: 'Interactive Live Streaming', - link: '/guides/livestream/livestream-overview', - icon: LiveRegular, - lightImage: '/static/landing-page/hero/livestream-graphic.png', - darkImage: '/static/landing-page/hero/livestream-graphic-dark.png', - text: 'Integrate highly scalable live video broadcasting capabilities into your app, ideal for apps that involve streaming webinars, sports or live events', - }, - { - title: 'Chat', - beta: true, - link: '/guides/realtime-chat/intro-chat', - icon: ChatMultipleRegular, - lightImage: '/static/landing-page/hero/chat-graphic.png', - darkImage: '/static/landing-page/hero/chat-graphic-dark.png', - text: 'Add real-time chat functionalities to your application. Be it customer support, social networks or any other colloboration use case, we got you covered', - }, + } ]; function HeroProduct({ @@ -89,8 +71,8 @@ function HeroProduct({ export default function HeroSection() { return ( - <> -
+
+

Build with Dyte @@ -104,11 +86,11 @@ export default function HeroSection() {

-
+
{PRODUCTS.map((product) => ( ))}
- +
); } diff --git a/src/css/custom.css b/src/css/custom.css index e882ba714..cd56455b9 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -1161,12 +1161,12 @@ article ul { content: url('data:image/svg+xml,'); } -.chat_sidebar_header > div > a::before { +.hide_sidebar > div > a::before { @apply mt-1 mr-2; content: url('data:image/svg+xml,'); } -html[data-theme='dark'] .chat_sidebar_header > div > a::before { +html[data-theme='dark'] .hide_sidebar > div > a::before { content: url('data:image/svg+xml,'); } @@ -1327,7 +1327,7 @@ h2.anchor > code { opacity: 0.5; } -.chat_sidebar_header { +.hide_sidebar { display: none; } @@ -1435,3 +1435,8 @@ h2.anchor > code, h3.anchor > code { .module-seperation { @apply border-t; } + +/* Hide livestream API */ +div > div[title="Live streams"] { + display: none; +} \ No newline at end of file From 45169a558900c066f106b52c4ba6ce715353159f Mon Sep 17 00:00:00 2001 From: Palash Date: Fri, 21 Jun 2024 17:26:22 +0530 Subject: [PATCH 15/16] Revert "Revert "Revert "fix: hide livestream, chat SDK docs""" This reverts commit 3c1d0b00d2c7cc7632f9082984c2b9306daecf41. --- docs/android-core/livestream/_category_.json | 3 +- docs/flutter-core/livestream.mdx | 9 ------ docs/guides/capabilities/_category_.json | 1 - docs/guides/livestream/_category_.json | 2 +- .../livestream/build-livestream-app.mdx | 6 ---- .../guides/livestream/livestream-overview.mdx | 6 ---- docs/guides/realtime-chat/_category_.json | 2 +- .../rest-apis/livestream-dyte-meeting.mdx | 7 ----- docs/ios-core/livestreaming.mdx | 7 ----- docs/partials/_product-section.mdx | 4 +-- docs/react-web-core/livestreaming.mdx | 7 ----- docs/rn-core/livestreaming.mdx | 8 ----- docs/web-core/livestreaming.mdx | 7 ----- src/components/homepage/HeroSection.tsx | 30 +++++++++++++++---- src/css/custom.css | 11 ++----- 15 files changed, 32 insertions(+), 78 deletions(-) diff --git a/docs/android-core/livestream/_category_.json b/docs/android-core/livestream/_category_.json index da74a09d3..85f0f0dd3 100644 --- a/docs/android-core/livestream/_category_.json +++ b/docs/android-core/livestream/_category_.json @@ -1,6 +1,5 @@ { "position": 10, "label": "Livestream", - "collapsible": true, - "className": "hide_sidebar" + "collapsible": true } diff --git a/docs/flutter-core/livestream.mdx b/docs/flutter-core/livestream.mdx index 8c4c12d7d..bba76655f 100644 --- a/docs/flutter-core/livestream.mdx +++ b/docs/flutter-core/livestream.mdx @@ -1,20 +1,11 @@ --- title: Livestreaming sidebar_position: 7 -sidebar_class_name: hide_sidebar tags: - flutter-core - livestream --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - - ## Introduction - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. diff --git a/docs/guides/capabilities/_category_.json b/docs/guides/capabilities/_category_.json index ec48aefc3..f03d7a7f8 100644 --- a/docs/guides/capabilities/_category_.json +++ b/docs/guides/capabilities/_category_.json @@ -2,6 +2,5 @@ "position": 5, "label": "Capabilities", "collapsible": true, - "collapsed": false, "className": "releaseSidebarHeading" } diff --git a/docs/guides/livestream/_category_.json b/docs/guides/livestream/_category_.json index 276631ce0..a189ba8d3 100644 --- a/docs/guides/livestream/_category_.json +++ b/docs/guides/livestream/_category_.json @@ -2,5 +2,5 @@ "position": 3, "label": "Interactive Livestream", "collapsible": true, - "className": "hide_sidebar" + "className": "ils_sidebar_header" } diff --git a/docs/guides/livestream/build-livestream-app.mdx b/docs/guides/livestream/build-livestream-app.mdx index b9324d9a3..adddab6c0 100644 --- a/docs/guides/livestream/build-livestream-app.mdx +++ b/docs/guides/livestream/build-livestream-app.mdx @@ -6,12 +6,6 @@ description: >- guide for effective app development and integration. --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - import IntegrateDyte from '/docs/partials/_integrate-dyte.mdx'; import Admonition from '@theme/Admonition'; diff --git a/docs/guides/livestream/livestream-overview.mdx b/docs/guides/livestream/livestream-overview.mdx index 4c4beda85..5af1df84a 100644 --- a/docs/guides/livestream/livestream-overview.mdx +++ b/docs/guides/livestream/livestream-overview.mdx @@ -6,12 +6,6 @@ description: >- comprehensive understanding of livestreaming features. --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - Livestreaming is the real-time broadcasting of video or audio content over the internet, enabling viewers to watch and interact with events as they happen. Dyte offers livestreaming services to facilitates one-to-many communication, where a single source streams the content to multiple viewers or participants. It enables the hosts and participants to engage and interact during the stream, creating an interactive live streaming (ILS) experience. - Explore Dyte's REST APIs for livestreaming Dyte meetings. Follow our guide for effective integration and management of REST APIs. --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - This guide provides step-by-step instructions on starting and stopping livestreaming for your Dyte meetings using simple API calls. ## Prerequisites diff --git a/docs/ios-core/livestreaming.mdx b/docs/ios-core/livestreaming.mdx index 467ef8443..ac72254fc 100644 --- a/docs/ios-core/livestreaming.mdx +++ b/docs/ios-core/livestreaming.mdx @@ -1,15 +1,8 @@ --- title: Livestreaming sidebar_position: 10 -sidebar_class_name: hide_sidebar --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/docs/partials/_product-section.mdx b/docs/partials/_product-section.mdx index 031d2a330..ffdeebee7 100644 --- a/docs/partials/_product-section.mdx +++ b/docs/partials/_product-section.mdx @@ -22,12 +22,12 @@ import { to="/guides/voice-conf/intro-voice-conf" description="Integrate reliable voice calling experiences into your product." /> - {/* } to="/guides/livestream/livestream-overview" description="Get started with interactive livestreaming and broadcast to a large audience" - /> */} + /> {/* } diff --git a/docs/react-web-core/livestreaming.mdx b/docs/react-web-core/livestreaming.mdx index f90377687..14da2efcd 100644 --- a/docs/react-web-core/livestreaming.mdx +++ b/docs/react-web-core/livestreaming.mdx @@ -1,15 +1,8 @@ --- title: Livestreaming sidebar_position: 10 -sidebar_class_name: hide_sidebar --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/docs/rn-core/livestreaming.mdx b/docs/rn-core/livestreaming.mdx index 7b1427255..469776bd0 100644 --- a/docs/rn-core/livestreaming.mdx +++ b/docs/rn-core/livestreaming.mdx @@ -1,16 +1,8 @@ --- title: Livestreaming sidebar_position: 11 -sidebar_class_name: hide_sidebar --- - -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/docs/web-core/livestreaming.mdx b/docs/web-core/livestreaming.mdx index 9f1494ef1..9995e929c 100644 --- a/docs/web-core/livestreaming.mdx +++ b/docs/web-core/livestreaming.mdx @@ -1,15 +1,8 @@ --- title: Livestreaming sidebar_position: 10 -sidebar_class_name: hide_sidebar --- -:::danger - -Outdated documentation, contact support@dyte.io for more information. - -::: - - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc diff --git a/src/components/homepage/HeroSection.tsx b/src/components/homepage/HeroSection.tsx index 090efa124..198392fc4 100644 --- a/src/components/homepage/HeroSection.tsx +++ b/src/components/homepage/HeroSection.tsx @@ -1,6 +1,8 @@ import React from 'react'; import Link from '@docusaurus/Link'; import { + ChatMultipleRegular, + LiveRegular, MicRegular, VideoRegular, } from '@fluentui/react-icons'; @@ -15,7 +17,6 @@ const PRODUCTS = [ lightImage: '/static/landing-page/hero/video-graphic.png', darkImage: '/static/landing-page/hero/video-graphic-dark.png', text: 'Enable live video communication within your application. Perfect for education, telemedicine, social networks and gaming', - beta: false, }, { title: 'Voice', @@ -24,7 +25,24 @@ const PRODUCTS = [ lightImage: '/static/landing-page/hero/voice-graphic.png', darkImage: '/static/landing-page/hero/voice-graphic-dark.png', text: 'Incorporate high-quality real-time audio into your application. Build voice calls, audio conferences, voice chats in games and more', - } + }, + { + title: 'Interactive Live Streaming', + link: '/guides/livestream/livestream-overview', + icon: LiveRegular, + lightImage: '/static/landing-page/hero/livestream-graphic.png', + darkImage: '/static/landing-page/hero/livestream-graphic-dark.png', + text: 'Integrate highly scalable live video broadcasting capabilities into your app, ideal for apps that involve streaming webinars, sports or live events', + }, + { + title: 'Chat', + beta: true, + link: '/guides/realtime-chat/intro-chat', + icon: ChatMultipleRegular, + lightImage: '/static/landing-page/hero/chat-graphic.png', + darkImage: '/static/landing-page/hero/chat-graphic-dark.png', + text: 'Add real-time chat functionalities to your application. Be it customer support, social networks or any other colloboration use case, we got you covered', + }, ]; function HeroProduct({ @@ -71,8 +89,8 @@ function HeroProduct({ export default function HeroSection() { return ( -
-
+ <> +

Build with Dyte @@ -86,11 +104,11 @@ export default function HeroSection() {

-
+
{PRODUCTS.map((product) => ( ))}
-
+ ); } diff --git a/src/css/custom.css b/src/css/custom.css index cd56455b9..e882ba714 100644 --- a/src/css/custom.css +++ b/src/css/custom.css @@ -1161,12 +1161,12 @@ article ul { content: url('data:image/svg+xml,'); } -.hide_sidebar > div > a::before { +.chat_sidebar_header > div > a::before { @apply mt-1 mr-2; content: url('data:image/svg+xml,'); } -html[data-theme='dark'] .hide_sidebar > div > a::before { +html[data-theme='dark'] .chat_sidebar_header > div > a::before { content: url('data:image/svg+xml,'); } @@ -1327,7 +1327,7 @@ h2.anchor > code { opacity: 0.5; } -.hide_sidebar { +.chat_sidebar_header { display: none; } @@ -1435,8 +1435,3 @@ h2.anchor > code, h3.anchor > code { .module-seperation { @apply border-t; } - -/* Hide livestream API */ -div > div[title="Live streams"] { - display: none; -} \ No newline at end of file From 3d4c5bd43a81ff8562d8ba8702f46fbb22d177ec Mon Sep 17 00:00:00 2001 From: saksham gupta Date: Tue, 2 Jul 2024 13:32:28 +0530 Subject: [PATCH 16/16] docs: fix link in livestream --- docs/flutter-core/livestream.mdx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docs/flutter-core/livestream.mdx b/docs/flutter-core/livestream.mdx index bba76655f..1ef7a72b9 100644 --- a/docs/flutter-core/livestream.mdx +++ b/docs/flutter-core/livestream.mdx @@ -11,7 +11,7 @@ tags: - Livestreaming is often used for events, such as concerts, conferences, and sports games, as well as for online classes, gaming, and social media platforms. - Dyte uses LHLS to deliver low latency one way streams. - The Interactive Livestream product delivers interactivity via chat, polls, reactions etc. -- Viewer can also be pulled in the livestream by the host using Stage Management APIs [ref: [here](/flutter-core/stage-management)]. +- Viewer can also be pulled in the livestream by the host using Stage Management APIs [ref: [here](/flutter-core/stage-management/introduction)]. This section will guide you through the process of integrating the livestreaming feature into your product. @@ -142,5 +142,4 @@ Here are a list of events the livestream listener emits: Flutter Core Livestreaming -