diff --git a/docs/ios-core/Introduction.mdx b/docs/ios-core/Introduction.mdx
deleted file mode 100644
index f9ca8a560..000000000
--- a/docs/ios-core/Introduction.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-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 iOS 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 internals, 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
-`meeting.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.
-
-
- iOS Core Introduction
-
diff --git a/docs/ios-core/chat/_category_.json b/docs/ios-core/chat/_category_.json
deleted file mode 100644
index 175c0faae..000000000
--- a/docs/ios-core/chat/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 6,
- "label": "Chat",
- "collapsible": true
-}
\ No newline at end of file
diff --git a/docs/ios-core/chat/introduction.mdx b/docs/ios-core/chat/introduction.mdx
deleted file mode 100644
index e099c40e2..000000000
--- a/docs/ios-core/chat/introduction.mdx
+++ /dev/null
@@ -1,67 +0,0 @@
----
-title: Introducing chat
-description: >-
- Learn the basics of integrating Dyte's chat functionality into your iOS
- application – a step towards immersive real-time communication.
-sidebar_position: 1
-tags:
- - ios-core
- - chat
----
-
-# Introducing chat
-
-The meeting chat object is stored in `meeting.chat`, which has methods for sending and receiving messages. There are 3 types of messages that can be sent in chat - text messages, images, and files.
-
-The `meeting.chat.messages` array contains all the messages that have been sent
-in the chat. This is an array of objects, where each object is of type
-`DyteChatMessage`.
-
-We support three types of chat messages, they are as follows
-
-- Text Message
-
-```swift
-class DyteTextMessage {
- let userId: String
- let displayName: String
- let read: Bool
- let pluginId: String?
- let message: String
- let time: String
- let channelId: String? = null
-}
-```
-
-- Image Message
-
-```swift
-class DyteImageMessage{
- let userId: String
- let displayName: String
- let read: Bool
- let pluginId: String?
- let link: String
- let time: String
- let channelId: String? = null
-}
-```
-
-- File Message
-
-```swift
-class DyteFileMessage{
- let userId: String
- let displayName: String
- let read: Bool
- let pluginId: String?
- let name: String
- let time: String
- let link: String
- let size: Int64
- let channelId: String? = null
-}
-```
-
-All above objects are of type `DyteChatMessage` along with their own class
-variables.
diff --git a/docs/ios-core/chat/receiving-chat-messages.mdx b/docs/ios-core/chat/receiving-chat-messages.mdx
deleted file mode 100644
index 15f32866d..000000000
--- a/docs/ios-core/chat/receiving-chat-messages.mdx
+++ /dev/null
@@ -1,33 +0,0 @@
----
-title: Receiving chat messages
-description: >-
- "Discover how to implement the functionality to receive chat messages in your
- iOS app using Dyte
-sidebar_position: 3
-tags:
- - ios-core
- - chat
----
-
-# Receiving chat messages
-
-To be able to receive chat messages you need to implement a method
-`onChatUpdates()` method from callback `DyteChatEventsListener`. You can
-subscribe to this events by calling
-`meeting.addChatEventsListener(dyteChatEventsListener)`
-
-```swift
-extension MeetingViewModel: DyteChatEventsListener {
- func onChatUpdates(messages: [DyteChatMessage]) {
- // to load chat messages
- }
-
- func onNewChatMessage(message: DyteChatMessage) {
- // when a new chat message is shared in the meeting
- }
-}
-```
-
-The `onChatUpdates()` method will be called whenever there is a change in the chat messages. The `messages` parameter is a list of `DyteChatMessage` objects that have been sent in the chat.
-
-The `onNewChatMessage()` method will be called whenever a new chat message is shared in the meeting. The `message` parameter is a `DyteChatMessage` object that has been sent in the chat.
diff --git a/docs/ios-core/chat/sending-a-chat-message.mdx b/docs/ios-core/chat/sending-a-chat-message.mdx
deleted file mode 100644
index 7853d4ac8..000000000
--- a/docs/ios-core/chat/sending-a-chat-message.mdx
+++ /dev/null
@@ -1,44 +0,0 @@
----
-title: Sending a chat message
-description: >-
- "Master the process of sending chat messages within your iOS application
- with Dyte
-sidebar_position: 2
-tags:
- - ios-core
- - chat
----
-
-# Sending a chat message
-
-As mentioned in [introduction](./introduction), there are 3 types of chat messages - text messages, images, and files. There is a method in `meeting.chat` to send a message of each type.
-
-## Send a text message
-
-To send a text message, the `meeting.chat.sendTextMessage()` method can be used. This accepts a string `message` and sends it to the room.
-
-```swift
-var message = "Is this the real life?"
-meeting.chat.sendTextMessage(message)
-```
-
-## Send an image
-
-You can send an image with the help of `meeting.chat.sendImageMessage()` and
-sends it to the participants in the meeting.
-
-```swift
-var filePath = "file_path_of_image"
-var fileName = "file_name"
-meeting.chat.sendImageMessage(filePath, fileName)
-```
-
-## Send a file
-
-Sending a file is quite similar to sending an image. The only difference is that when you send an image, a preview will be shown in the meeting chat, which is not the case for sending files. That being said, an image can be sent as a file too using `meeting.chat.sendFileMessage()`.
-
-```swift
-var filePath = "file_path_of_image"
-var fileName = "file_name"
-meeting.chat.sendFileMessage(filePath, fileName)
-```
diff --git a/docs/ios-core/error-codes.mdx b/docs/ios-core/error-codes.mdx
deleted file mode 100644
index 6fedc0ab4..000000000
--- a/docs/ios-core/error-codes.mdx
+++ /dev/null
@@ -1,39 +0,0 @@
----
-title: System Error Codes
-sidebar_position: 11
----
-
-:::info Note
-
-This information is intended for developers debugging or troubleshooting Dyte's mobile core system errors.
-
-:::
-
-Error codes are a standardized method for developers to convey application errors and issues to users or other developers in a structured manner. Error codes typically consist of a numerical or alphanumeric code and a description that provides more information about the error.
-
-This document lists Dyte's iOS core error codes that you may encounter in various scenarios. System error codes can arise in different parts of the system, and their descriptions may not always provide exact details. To address these codes effectively, you must first understand the programmatic and runtime contexts in which these errors occurred.
-
-## Error codes and format
-
-Error codes consist of a number that are categorized by the type of error and a message that provides more information about the error. The error code format is as follows:
-
-```swift
-class DyteError {
- let code: Int
- let message: String
-}
-```
-
-### Meeting error codes
-
-Meeting error codes are used to indicate errors that occur during meeting operations. These errors are typically returned by the methods of the `meeting` object such as `init()`, `join()`.
-
-- 1000: Invalid auth token.
-- 1002: Failed to initialize meeting.
-- 1003: Invalid base URL.
-- 1005: Failed to join room.
-- 4000: Something went wrong.
-
-
- iOS Core System Error Codes
-
diff --git a/docs/ios-core/livestreaming.mdx b/docs/ios-core/livestreaming.mdx
deleted file mode 100644
index ac72254fc..000000000
--- a/docs/ios-core/livestreaming.mdx
+++ /dev/null
@@ -1,191 +0,0 @@
----
-title: Livestreaming
-sidebar_position: 10
----
-
-- 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
-
-This topic talks about how you can use livestreaming properties, events, and functions.
-
-`DyteLivestream` object obtained by `meeting.livestream` method. The objects and methods it contains are defined below.
-
-## Objects
-
-### roomName [*String*]
-
-The name of the room.
-
-### state [*LiveStreamState*]
-
-The current status of the livestream, possible values can be:
-
-- `LiveStreamState.NONE`
-- `LiveStreamState.STARTING`
-- `LiveStreamState.STARTED`
-- `LiveStreamState.STOPPING`
-- `LiveStreamState.STOPPED`
-- `LiveStreamState.ERRORED`
-
-### stage requests [*_List<DyteLiveStreamStageRequestPeer>_*]
-
-object accessed via `meeting.livestream.stageRequestPeers` contains the list of requests to join the stage. Each request contains 3 properties:
-
-1. `peerId`: [*String*] The peerId of the user who requested to join the stage.
-2. `userId`: [*String*] The userId of the user who requested to join the stage.
-3. `displayName`: [*String*] The display name of the user who requested to join the stage.
-
-### liveStreamUrl [*String*]
-
-List of URL which can be used to consume livestream.
-
-## **Host Controls Methods**
-
-Dyte's stage management APIs allow hosts to receive and manage stage requests as well as leave and join the stage.
-
-### Accept request
-
-This method lets the host accept a request to join the stage. It takes the _DyteLiveStreamStageRequestPeer.id_ as an argument whose request has to be accepted.
-
-```swift
-meeting.livestream.acceptRequest(peer: peer.id);
-```
-
-### Reject request
-
-This method lets the host reject a request to join the stage. It takes the _DyteLiveStreamStageRequestPeer.id_ as an argument whose request has to be rejected.
-
-```swift
-meeting.livestream.rejectRequest(peer: peer.id);
-```
-
-### Accept all requests
-
-This method lets the host accept all the requests to join the stage.
-
-```swift
-meeting.livestream.acceptAll();
-```
-
-### Reject all requests
-
-This method lets the host reject all the requests to join the stage.
-
-```swift
-meeting.livestream.rejectAll();
-```
-
-You can listen to livestream events by attaching a listener by calling `addLivestreamEventsListener` on `meeting` object where `meeting` is an instance of `DyteMobileClient()`.
-
-```swift
-meeting.addLiveStreamEventsListener(liveStreamEventsListener: self)
-```
-
-```swift
-extension LivestreamViewController: DyteLiveStreamEventsListener {
- public func onJoinRequestAccepted(peer: LiveStreamStagePeer) {
- // when localUser's join request is accepted by host
- }
-
- public func onJoinRequestRejected(peer: LiveStreamStagePeer) {
- // when localUser's join request is rejected by host
- }
-
- public func onLiveStreamEnded() {
- // when livestream is ended
- }
-
- public func onLiveStreamEnding() {
- // when livestream is ending
- }
-
- public func onLiveStreamErrored() {
- // errored livestream
- }
-
- public func onLiveStreamStarted() {
- // when livestream is started
- }
-
- public func onLiveStreamStarting() {
- // when livestream is starting
- }
-
- public func onLiveStreamStateUpdate(data: DyteLivestreamData) {
- // when there is an update in state of the livestream
- }
-
- public func onStageCountUpdated(count: Int32) {
- // when stage count updates in livestream
- }
-
- public func onStageRequestsUpdated(requests: [LiveStreamStageRequestPeer]) {
- // when there are updates in stage requests
- }
-
- public func onViewerCountUpdated(count: Int32) {
- // when viewer count updates in livestream
- }
-
-}
-```
-
-## Livestream events
-
-- ### onLiveStreamStarting
-
- This event is triggered when the livestream is about to start.
-
-- ### onLiveStreamStarted
-
- This event is triggered when the livestream has started.
-
-- ### onLiveStreamStateUpdate
-
- This event is triggered when the livestream state is updated.
-
-- ### onViewerCountUpdated
-
- This event is triggered when the viewer count is updated.
-
-- ### onLiveStreamEnding
-
- This event is triggered when the livestream is about to end.
-
-- ### onLiveStreamEnded
-
- This event is triggered when the livestream has ended.
-
-- ### onLiveStreamErrored
-
- This event is triggered when their is an error while starting/stopping the livestream.
-
-- ### onStageCountUpdated
-
- This event is triggered when the number of users on stage is updated. The `count` object contains the updated stage count.
-
-- ### onStageRequestsUpdated
-
- This event is triggered when the stage requests are updated. The `requests` object contains the updated list of stage requests.
-
-- ### onJoinRequestAccepted
-
- This event is triggered when a stage request is accepted. The `peer` object contains the peer whose request is accepted.
-
- ```swift
- public func onJoinRequestAccepted(peer: LiveStreamStagePeer) {}
- ```
-
-- ### onJoinRequestRejected
-
- This event is triggered when a stage request is rejected. The `peer` object contains the peer whose request is rejected.
-
- ```swift
- public func onJoinRequestRejected(peer: LiveStreamStagePeer) {}
- ```
-
-
- iOS Core Livestreaming
-
diff --git a/docs/ios-core/local-user/_category_.json b/docs/ios-core/local-user/_category_.json
deleted file mode 100644
index 38f1722fd..000000000
--- a/docs/ios-core/local-user/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Local User",
- "collapsible": true
-}
\ No newline at end of file
diff --git a/docs/ios-core/local-user/events.mdx b/docs/ios-core/local-user/events.mdx
deleted file mode 100644
index fd9a074c2..000000000
--- a/docs/ios-core/local-user/events.mdx
+++ /dev/null
@@ -1,151 +0,0 @@
----
-title: Events
-description: >-
- Explore local user events in iOS Core with Dyte Docs. Understand how to
- leverage these events for enhanced user experiences within your app.
-sidebar_position: 2
-tags:
- - ios-core
- - local-user
- - self
----
-
-# Local User - Events
-
-You can subscribe to various events on the local user by implementing
-`DyteSelfEventsListener` and passing the object to
-`meeting.addSelfEventsListener(dyteSelfEventsListener)`.
-
-### Video update
-
-Triggered when the user starts / stops the video using `enableVideo` or
-`disableVideo`
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onVideoUpdate(videoEnabled: Bool) {
- if (videoEnabled) {
- // video is enabled, and other participants in room can see local user
- } else {
- // video is disabled, and other participants in room can not see local user.
- }
- }
-}
-```
-
-### Audio update
-
-Triggered when the user starts / stops the audio using `enableAudio` or
-`disableAudio`
-
-```swift
-
-extension MeetingViewModel: DyteSelfEventsListener {
- func onAudioUpdate(audioEnabled: Bool) {
- if (audioEnabled) {
- // audio is enabled, and other participants in room can hear local user
- } else {
- // audio is disabled, and other participants in room can not hear local user.
- }
- }
-}
-```
-
-### Room disconnected update
-
-Triggered when the user is disconnected due to media/network errors
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onMeetingRoomDisconnected() {
- //disconnected
- }
-}
-```
-
-### Proximity changed
-
-Triggered when there is any change in proximity. Meaning if device is near ear
-piece which triggers display on/off.
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onProximityChanged(isNear: Bool) {
- // isNear
- // if true, display should be turned off, as user might be speaking through earpiece
- // if false, display should be turned on, as user might be looking at display and listening through speaker/earphones.
- }
-}
-```
-
-### Waitlist status
-
-For meetings whose waiting room is enabled:
-
-To get status of localUser in waiting room we can use
-
-```swift
-let waitListStatus = meeting.localUser.waitListStatus
-```
-
-Developers can listen to those changes in `onWaitListStatusUpdate()` callbacks
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onWaitListStatusUpdate(waitListStatus: WaitListStatus) {
-
- }
-}
-```
-
-## Webinar Request
-
-The `onWebinarPresentRequestReceived()` callback is triggered when the local user receives a request to join the webinar, while the `onStoppedPresenting()` callback is triggered when the local user ends their presentation.
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onWebinarPresentRequestReceived() {
- // Display an alert to the user here, allowing them to accept or reject the request.
- }
- func onStoppedPresenting() {
- //Display an alert to the user indicating that they are no longer presenting.
- }
-}
-```
-
-## LocalUser removed
-
-Whenever local user is removed from the meeting, `onRemovedFromMeeting()` callback is triggered.
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onRemovedFromMeeting() {
- // Display an alert here that user no longer in the meeting.
- }
-}
-```
-
-## Listen to Broadcast message within the room
-
-Get broadcast messages within the room using `onRoomMessage` callback.
-
-_Parameters_:
-
-`type`: A client-specific type to differentiate between custom messages like "emoji" or "greetings"
-
-`payload`: A dictionary containing the message payload, where keys are strings and values are of any type.
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onRoomMessage(type: String, payload: [String : Any]) {
- // triggered when a message is sent within the room.
- }
-```
-
-
- iOS Core Events
-
-
diff --git a/docs/ios-core/local-user/introduction.mdx b/docs/ios-core/local-user/introduction.mdx
deleted file mode 100644
index f82cd9fea..000000000
--- a/docs/ios-core/local-user/introduction.mdx
+++ /dev/null
@@ -1,150 +0,0 @@
----
-title: Introduction
-description: >-
- Learn about local user management in iOS Core with Dyte Docs. Understand the
- fundamentals for effective integration and app customization.
-sidebar_position: 3
-tags:
- - ios-core
- - local-user
- - self
----
-
-# Introduction - Local User
-
-The local user has the methods and properties on the local user media controls.
-Accessible via `localUser` within the `meeting` object.
-
-## Properties
-
-Here is a list of properties that `meeting.localUser` user provides:
-
-- `id`: The ID of the participant pertaining to local user.
-- `name`: Contains Name of the local user.
-- `clientSpecificId`: Identifier provided by the developer while adding the
- participant.
-- `permissions`: The permissions related to various capabilities within a
- meeting context for the local user.
-- `audioTrack`: The audio track for the local user.
-- `videoTrack`: The video track for the local user.
-- `screenShareTrack`: The screen share video tracks for the local user.
-- `audioEnabled`: A boolean value indicating if the audio currently enabled.
-- `videoEnabled`: A boolean value indicating if the video currently enabled.
-- `isScreenShareParticipant`: A boolean value indicating if the participant is a
- screen share participant in this meeting.
-
-## Change default audio / video settings
-
-By default as soon as you join the meeting the SDK will produce your video and
-audio streams. To change this behaviour use the `audioEnabled` & `videoEnabled`
-parameter
-
-```swift
-let meetingInfo = DyteMeetingInfo(
- roomName = MEETING_ROOM_NAME,
- authToken = AUTH_TOKEN,
- audioEnabled = false,
- videoEnabled = true)
-```
-
-## Get local user video view
-
-To show localUser preview inside a view. Use `getSelfPreview()` method on
-localUser. This method returns a View which can be added in any View.
-
-```swift
-meeting.localUser.getSelfPreview()
-```
-
-## Turn audio/video tracks after joining the room
-
-If audio and video tracks are disabled during the `DyteMobileClient`
-initialization process. You can setup the audio and video tracks by simply
-calling `enableAudio()` and `enableVideo()` like below:
-
-```swift
-meeting.localUser.enableAudio()
-meeting.localUser.enableVideo()
-```
-
-## Change the name of the local user
-
-Change the user's name by calling `setDisplayName` method. The changed name will
-reflect across all participants ONLY if the change happens before `joinRoom()`
-the meeting and after `init()`.
-
-```swift
-meeting.localUser.setDisplayName("New Name")
-```
-
-## Mute/Unmute microphone
-
-```swift
-// Mute Audio
-meeting.localUser.disableAudio()
-
-// Unmute Audio
-meeting.localUser.enableAudio()
-
-// Get current status
-meeting.localUser.audioEnabled
-```
-
-## Enable/Disable camera
-
-```swift
-// Disable Video
-meeting.localUser.disableVideo()
-
-// Enable Video
-meeting.localUser.enableVideo()
-
-// Get current status
-meeting.localUser.videoEnabled
-```
-
-## Pinning & unpinning
-
-You can pin or unpin yourself given you have the appropriate permissions. You
-can check the pinned status of the local user using `meeting.localUser.isPinned`.
-
-```swift
-meeting.localUser.pin();
-```
-
-```swift
-meeting.localUser.unpin();
-```
-
-## Enable / Disable Screen share
-
-```swift
-// Enable Screenshare
-meeting.localUser.enableScreenshare();
-
-// Disable Screenshare
-meeting.localUser.disableScreenshare();
-```
-
-## Switch camera between primary and secondary
-
-```swift
-// switch camera
-meeting.localUser.switchCamera()
-```
-
-OR
-
-If you want to set video device yourself:
-
-```swift
-meeting.localUser.setVideoDevice(videoDevice: DyteVideoDevice)
-```
-
-
- iOS Core Introduction
-
-
diff --git a/docs/ios-core/local-user/manage-media-devices.mdx b/docs/ios-core/local-user/manage-media-devices.mdx
deleted file mode 100644
index 338fb8081..000000000
--- a/docs/ios-core/local-user/manage-media-devices.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Manage Media Devices
-description: >-
- Discover how to manage media devices for local users in iOS Core with Dyte
- Docs. Optimize your app's media handling capabilities seamlessly.
-sidebar_position: 3
-tags:
- - ios-core
- - local-user
- - localUser
- - localUser events
----
-
-# Manage Media Devices
-
-Media devices represents the hardware for the camera, microphone and speaker
-devices. To get the list of media devices that are currently being used, you can
-use the following methods:
-
-```swift
-// Get all audio devices
-let audioDevices = meeting.localUser.getAudioDevices();
-
-// Get all video devices
-let videoDevices = meeting.localUser.getVideoDevices();
-```
-
-## Set device
-
-To set a device as an active device, you can call `setDevice` method. This takes
-a `MediaDeviceInfo` object, and replaces the same `kind` device.
-
-```swift
-meeting.localUser.setDevice(device);
-```
-
-
- iOS Core Manage Media Devices
-
-
diff --git a/docs/ios-core/local-user/manage-permissions.mdx b/docs/ios-core/local-user/manage-permissions.mdx
deleted file mode 100644
index 74085e6a3..000000000
--- a/docs/ios-core/local-user/manage-permissions.mdx
+++ /dev/null
@@ -1,46 +0,0 @@
----
-title: Media Permissions
-description: >-
- Learn how to manage permissions for local users in iOS Core with Dyte Docs.
- Ensure a smooth and secure user experience within your app.
-sidebar_position: 4
-tags:
- - ios-core
- - local-user
- - self
- - self events
----
-
-# Media Permissions
-
-To get media permissions (audio/video) for localUser we can do as follows
-
-```swift
-let isCameraPermissionGranted
- = meeting.localUser.isCameraPermissionGranted
-let isMicrophonePermissionGranted
- = meeting.localUser.isMicrophonePermissionGranted
-```
-
-Similarly to listen to callbacks regarding media permissions once user joins the
-meeting
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onMeetingRoomJoinedWithoutCameraPermission() {
- // when meeting room is joined without camera permission
- }
-
- func onMeetingRoomJoinedWithoutMicPermission() {
- // when meeting room is joined without microphone permission
- }
-}
-```
-
-
- iOS Core Media Permissions
-
-
diff --git a/docs/ios-core/local-user/screen-share-guide.mdx b/docs/ios-core/local-user/screen-share-guide.mdx
deleted file mode 100644
index 1a48d55e0..000000000
--- a/docs/ios-core/local-user/screen-share-guide.mdx
+++ /dev/null
@@ -1,110 +0,0 @@
----
-title: Sharing screen on iOS
-sidebar_position: 12
-tags:
- - ios-core
----
-
-This document explains how to setup screen sharing on a iOS App using Dyte SDK
-
-:::warning
-
-This guide is being updated, and might not work as expected in its current form
-
-:::
-
-## Overview
-
-1. Add a new Broadcast Upload Extension to your project.
-2. Setup app groups
-3. Have your SampleHandler class initialize DyteBroadcastHandler and proxy a few methods.
-4. Update Info.plist
-
-### Add a new Broadcast Upload Extension to your project.
-
-Add a Broadcast Upload Extension through `File` -> `New` -> `Target`.
-Choose `iOS` -> `Broadcast Upload Extension` and fill out the required information for your extension and click `Finish`.
-
-
-
-
-### Setup app groups
-
-Add your extension to an app group by going to your extension's target in the project; in the Signings & Capabilities tab, click the + button in the top left and add App Groups. If you haven't done so already, add App Groups to your main app as well, ensuring that the App Group identifier is the same for both.
-
-
-
-
-### Setup SampleHandler
-
-- Edit your SampleHandler class to look something like this.
-
-```swift
-import ReplayKit
-import DyteiOSCore
-
-class SampleHandler: RPBroadcastSampleHandler {
-
- let dyteBroadcast: DyteBroadcastHandler = DyteBroadcastHandler();
-
- override init() {
- super.init()
- }
- override func broadcastPaused() {
- dyteBroadcast.broadcastPaused()
- }
-
- override func broadcastResumed() {
- dyteBroadcast.broadcastResumed()
- }
-
- override func broadcastFinished() {
- dyteBroadcast.broadcastFinished()
- }
-
- override func broadcastStarted(withSetupInfo setupInfo: [String : NSObject]?) {
- dyteBroadcast.broadcastStartedWithSetupInfo(setupInfo: setupInfo)
- }
-
- override func processSampleBuffer(_ sampleBuffer: CMSampleBuffer, with sampleBufferType: RPSampleBufferType) {
- let rawPointer = Unmanaged.passUnretained(sampleBuffer).toOpaque()
- dyteBroadcast.processSampleBuffer(sampleBuffer: rawPointer, withType: Int64(sampleBufferType.rawValue))
-
- }
-
-}
-```
-
-### Modify Info.plist
-
-Make sure **both of them** (App and Extension Info.plist) contains these keys
-
-```
- RTCAppGroupIdentifier
- (name of the group)
- RTCScreenSharingExtension
- (Bundle Identifier)
-```
-
-
-
-### Start the Screenshare
-
-Launch the broadcast extension and call the method `enableScreenshare()`
-
-```swift
-
-let screenShareExtensionId = Bundle.main.infoDictionary?["RTCScreenSharingExtension"] as? String;
-let view = RPSystemBroadcastPickerView()
-view.preferredExtension = screenShareExtensionId
-view.showsMicrophoneButton = false
-let selector = NSSelectorFromString("buttonPressed:")
-if view.responds(to: selector) {
- view.perform(selector, with: nil)
-}
-
-dyteClient.localUser.enableScreenshare()
-```
-
-
-
diff --git a/docs/ios-core/participants/_category_.json b/docs/ios-core/participants/_category_.json
deleted file mode 100644
index 2599bb6c6..000000000
--- a/docs/ios-core/participants/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 5,
- "label": "Remote Participants",
- "collapsible": true
-}
\ No newline at end of file
diff --git a/docs/ios-core/participants/events.mdx b/docs/ios-core/participants/events.mdx
deleted file mode 100644
index 6ba4bdc88..000000000
--- a/docs/ios-core/participants/events.mdx
+++ /dev/null
@@ -1,226 +0,0 @@
----
-title: Participant Events
-description: >-
- Dive into the details of handling participant events in your iOS
- application using Dyte's comprehensive documentation.
-sidebar_position: 3
-tags:
- - ios-core
- - participants
- - self
----
-
-# All Participant Events
-
-You can subscribe to events for all participants by implementing
-`DyteParticipantEventsListener` protocol and then passing that object to
-`meeting.addParticipantEventsListener(dyteParticipantEventsListener)` method.
-
-Here are the supported methods:
-
-## Participant joined
-
-Triggers an event when any participant joins the meeting.
-
-```swift
- extension MeetingViewModel: DyteParticipantEventsListener {
- func onParticipantJoin(participant: DyteMeetingParticipant) {
- // your code here to handle new participant
- }
- }
-```
-
-## Participant left
-
-Triggers an event when any participant leaves the meeting.
-
-```swift
- extension MeetingViewModel: DyteParticipantEventsListener {
- func onParticipantLeave(participant: DyteMeetingParticipant) {
- // your code here to handle participant left from meeting
- }
- }
-```
-
-## Participant update
-
-Triggers an event whenever there is any change in participant.
-
-```swift
- extension MeetingViewModel: DyteParticipantEventsListener {
- func onUpdate(participants: DyteParticipants) {
- // your code here to handle participant update
- }
- }
-```
-
-## Video update
-
-Trigger an event when any participant starts / stops video.
-
-```swift
- extension MeetingViewModel: DyteParticipantEventsListener {
- func onVideoUpdate(videoEnabled: Bool, participant: DyteMeetingParticipant) {
- // your code here to handle participant video toggle update
- }
- }
-```
-
-## Audio update
-
-Trigger an event when any participant starts / stops audio.
-
-```swift
- extension MeetingViewModel: DyteParticipantEventsListener {
- func onAudioUpdate(audioEnabled: Bool, participant: DyteMeetingParticipant) {
- // your code here to handle participant audio toggle update
- }
- }
-```
-
-## Screenshare updates
-
-Triggers an event when there is any change in screenshares in a meeting.
-
-```swift
- extension MeetingViewModel: DyteParticipantEventsListener {
- func onScreenSharesUpdated() {
- // your code here to handle screenshares from meeting
- // you can use `meeting.participants.screenshares` to get latest screenshare participants
- }
-
- func onScreenShareStarted(participant: DyteJoinedMeetingParticipant) {
- // participant stared presenting screen in the meeting
- }
-
- func onScreenShareEnded(participant: DyteJoinedMeetingParticipant) {
- // participant stopped presenting screen in the meeting
- }
- }
-```
-
-## Active speaker
-
-Triggers an event when any is change in active speaker in the meeting.
-
-```swift
- extension MeetingViewModel: DyteParticipantEventsListener {
- func onActiveSpeakerChanged(participant: DyteMeetingParticipant) {
- // your code here to handle active speaker
- }
-
- func onNoActiveSpeaker() {
- // your code here to handle no active speaker
- }
- }
-```
-
-## Pinned participant
-
-Triggers an event when there is any change in pinned participant in the meeting.
-
-```swift
- extension MeetingViewModel: DyteParticipantEventsListener {
- func onParticipantPinned(participant: DyteMeetingParticipant) {
- // your code here to show pinned participant
- }
-
- func onParticipantUnpinned(participant: DyteJoinedMeetingParticipant) {
- // your code here to remove pinned participant
- }
- }
-```
-
-## Active participants list change
-
-Triggers an event when any is change in active participants list in the meeting.
-
-```swift
- extension MeetingViewModel: DyteParticipantEventsListener {
- func onActiveParticipantsChanged(active: [DyteMeetingParticipant]) {
- // your code here to refresh active participants
- }
- }
-```
-
-# Single Participant Events
-
-You can also subscribe to events for a single participant by implementing `DyteParticipantUpdateListener` protocol and then passing that object to `participant.addParticipantUpdateListener(dyteParticipantUpdateListener)` method.
-
-Here are the supported methods:
-
-### Participant update
-
-Triggers an event whenever there is any change in participant.
-
-```swift
- extension MeetingViewModel: DyteParticipantUpdateListener {
- func onUpdate() {
- // your code here to handle participant update
- }
- }
-```
-
-### Video update
-
-Triggers an event when the participant starts / stops video.
-
-```swift
- extension MeetingViewModel: DyteParticipantUpdateListener {
- func onVideoUpdate(isEnabled: Bool) {
- // your code here to handle participant video toggle update
- }
- }
-```
-
-### Audio update
-
-Triggers an event when the participant starts / stops audio.
-
-```swift
- extension MeetingViewModel: DyteParticipantUpdateListener {
- func onAudioUpdate(isEnabled: Bool) {
- // your code here to handle participant audio toggle update
- }
- }
-```
-
-### Pinned & Unpinned participant
-
-Triggers an event when the participant is pinned / unpinned.
-
-```swift
- extension MeetingViewModel: DyteParticipantUpdateListener {
- func onPinned() {
- // your code here to show pinned participant
- }
-
- func onUnpinned() {
- // your code here to remove pinned participant
- }
- }
-```
-
-### Screen share started & ended
-
-Triggers an event when the participant starts / stops screen sharing.
-
-```swift
- extension MeetingViewModel: DyteParticipantUpdateListener {
- func onScreenShareStarted() {
- // your code here to handle screen share started
- }
-
- func onScreenShareEnded() {
- // your code here to handle screen share ended
- }
- }
-```
-
-
- iOS Core The participant events
-
-
diff --git a/docs/ios-core/participants/participant-object.mdx b/docs/ios-core/participants/participant-object.mdx
deleted file mode 100644
index 91f34d37f..000000000
--- a/docs/ios-core/participants/participant-object.mdx
+++ /dev/null
@@ -1,135 +0,0 @@
----
-title: Participant Object
-description: The object corresponding to a particular participant.
-sidebar_position: 2
-slug: /participants/participant-object
-tags:
- - ios-core
- - participants
----
-
-# The participant object
-
-The `participant` object consists of all the information related to a particular participant. For instance, it contains a participants video/audio/screenshare stream, and the participant's name. It also contains state variables that indicate whether a participant's camera is on or off, and whether they are muted or unmuted.
-
-The participant object has the following properties.
-
-- `id`: The `participantId` of the participant (aka `peerId`).
-- `userId`: The `userId` of the participant.
-- `name`: The participant's name.
-- `picture`: The participant's picture (if any).
-- `clientSpecificId`: An arbitrary ID that can be set to identify the
- participant.
-- `videoTrack`: The video track of the participant.
-- `screenShareTrack`: The video and audio (if any) track of the participant's
- screen share stream.
-- `videoEnabled`: Set to true if the participant's camera is on.
-- `audioEnabled`: Set to true if the participant is unmuted.
-- `isPinned`: True if current user is pinned in the meeting room.
-- `presetName`: Name of the preset associated with the participant.
-- `stageStatus`: Status of stage for the participant
-
-## To get video view of a given participant
-
-You can call `participant.getVideoView()` which will return a View which further
-can used to add in any view.
-
-Similarly one can use `participant.getScreenShareView()` which will return a
-View which further can used to add in any view.
-
-## Host Controls
-
-If you are the host of the room, you can use the **host controls**. The host controls allow you to manage the participants in the room.
-
-The host controls include the following options:
-
-- **Mute/Unmute**: Mute or unmute a participant.
-- **Kick**: Kick a participant from the room.
-- **Pin**: Pin a participant's video.
-- **Turn off video**: Turn off a participant's video.
-
-You can also use these methods from our participant object to
-perform these actions programmatically.
-
-```swift
-if let participant = meeting.participants.joined.first(where: { $0.id == participantId }) {
- // To disable a participant's video stream
- participant.disableVideo()
-
- // To disable a participant's audio stream
- participant.disableAudio()
-
- // To kick a participant from the meeting
- participant.kick()
-}
-```
-
-## Waiting Room
-
-Host can use these waiting room methods from our participant object to
-perform these actions programmatically.
-
-```swift
-// Accept the request and let the participant in the meeting
-participant.acceptWaitListedRequest()
-
-// Reject the request, do not permit the participant to join the meeting
-participant.rejectWaitListedRequest()
-```
-
-## pin/unpin
-
-You can also `pin` or `unpin` a participant in the meeting. All "pinned"
-participants are added to the `meeting.participants.pinned`.
-
-```swift
-if let participant = meeting.participants.joined.first(where: { $0.id == participantId }) {
- // To pin a participant
- participant.pin()
-
- // To unpin a participant
- participant.unpin()
-}
-```
-
-## Move between pages in paginated mode
-
-The `setPage(pageNumber: Int)` method allows you to switch between pages of
-participants present in the meeting.
-
-```swift
-// switch to 1st page
-meeting.participants.setPage(1)
-```
-
-## Broadcast message to all participants
-
-Send a broadcast message to all `joined` participants
-
-_Parameters_:
-
-`type`: A client-specific type to differentiate between custom messages like "emoji" or "greetings"
-
-`payload`: A dictionary containing the message payload, where keys are strings and values are of any type.
-
-```swift
-// broadcast message
-meeting.participants.broadcastMessage(type, payload)
-```
-
-# Receiving Broadcast messages
-
-To be able to receive broadcast messages you need to implement a method
-`onRoomMessage` method from callback `DyteSelfEventsListener`. You can
-subscribe to this events by calling
-`meeting.addChatEventsListener(dyteSelfEventsListener)`
-
-[check this dyteSelfEventsListener broadcastMessage documentation](/ios-core/local-user/events#listen-to-broadcast-message-within-the-room)
-
-
- iOS Core The participant object
-
-
diff --git a/docs/ios-core/participants/remote-participants.mdx b/docs/ios-core/participants/remote-participants.mdx
deleted file mode 100644
index dc5136fb5..000000000
--- a/docs/ios-core/participants/remote-participants.mdx
+++ /dev/null
@@ -1,41 +0,0 @@
----
-title: Participant Types
-description: 'Events, methods and data pertaining to meeting participants.'
-sidebar_position: 1
-slug: /participants/
-tags:
- - ios-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:
-
-```swift
-// get all joined participants
-var joined: [DyteJoinedMeetingParticipant] = meeting.participants.joined
-
-// get all participants
-var all: [DyteParticipant] = meeting.participants.all
-```
-
-The `meeting.participants` object has the following **lists** of participants
-
-- **all**: A list that contains all the participants who have joined the meeting except the local user
-- **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 except the local user whose media is subscribed to i.e
- participants are supposed to be on the screen at the moment except 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` map, but to display the list of all participants in the meeting you'd use the `joined` map.
-
-Each participant in each of the `joined`, `active`, `pinned` and `screenShares` list are of type `DyteJoinedMeetingParticipant`, `waitlisted` list is of type `DyteWaitlistedParticipant` and `all` list is of type `DyteParticipant`.
-
-
- iOS Core Participants
-
diff --git a/docs/ios-core/plugins/_category_.json b/docs/ios-core/plugins/_category_.json
deleted file mode 100644
index 072077b2d..000000000
--- a/docs/ios-core/plugins/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 7,
- "label": "Plugins",
- "collapsible": true
-}
\ No newline at end of file
diff --git a/docs/ios-core/plugins/disable-plugin.mdx b/docs/ios-core/plugins/disable-plugin.mdx
deleted file mode 100644
index a56659b31..000000000
--- a/docs/ios-core/plugins/disable-plugin.mdx
+++ /dev/null
@@ -1,28 +0,0 @@
----
-title: Functions to disable plugins
-description: Methods on a plugin in a meeting.
-sidebar_position: 3
-tags:
- - ios-core
- - plugins
----
-
-# Functions to disable plugins
-
-Each plugin in `meeting.plugins` object is of type
-[`DytePlugin`](./introduction) and exposes the following functions to disable
-plugins.
-
-### Deactivate Plugin
-
-The `deactivate()` method deactivates the plugin for all users in the meeting. When you deactivate a plugin, it moves out of the active plugins list and can only be accessed from `meeting.plugins.all`.
-
-```swift
-let plugin = meeting.plugins.active[0]
-
-plugin.deactivate()
-```
-
-
- Mobile Core Function to disable plugins
-
diff --git a/docs/ios-core/plugins/enable-plugin.mdx b/docs/ios-core/plugins/enable-plugin.mdx
deleted file mode 100644
index dc09e4233..000000000
--- a/docs/ios-core/plugins/enable-plugin.mdx
+++ /dev/null
@@ -1,62 +0,0 @@
----
-title: Functions to enable plugins
-description: Methods on a plugin in a meeting.
-sidebar_position: 2
-tags:
- - ios-core
- - plugins
----
-
-# Functions to enable plugins
-
-Each plugin in `meeting.plugins` object is of type
-[`DytePlugin`](./introduction) and exposes the following functions to enable
-plugins.
-
-### Get Plugin View
-
-This method adds the communication layer between the plugin inside the WebView and
-the core SDK (meeting object) in your application.
-
-```swift
-let plugin = meeting.plugins.active[0]
-
-plugin.getPluginView() // This will return a WebView
-```
-
-The `getPluginView()` method returns a WebView that can be added to a UIView.
-
-### Activate Plugins
-
-The `activate()` method activates a plugin for all users in the meeting. When
-you activate a plugin, it moves into the active plugins map and can be accessed
-from `meeting.plugins.active`.
-
-The snippet below retrieves the first plugin from the list and activates it.
-
-```swift
-var plugin: DytePlugin = meeting.plugins.all[0]
-
-plugin.activate()
-```
-
-This directly activates the plugin without any user interaction.
-
-### Activate a plugin on click
-
-You can also show a list of all plugins and activate a plugin on click programmatically.
-
-```swift
-func togglePlugin(index: Int) {
- let plugin = plugins[index]
- if plugin.isActive {
- plugin.deactivate()
- }else {
- plugin.activate()
- }
-}
-```
-
-
- Mobile Core Function to enable plugins
-
diff --git a/docs/ios-core/plugins/extra.mdx b/docs/ios-core/plugins/extra.mdx
deleted file mode 100644
index b97dc638b..000000000
--- a/docs/ios-core/plugins/extra.mdx
+++ /dev/null
@@ -1,49 +0,0 @@
----
-title: Other methods
-description: Methods on a plugin in a meeting.
-sidebar_position: 4
-tags:
- - ios-core
- - plugins
----
-
-## Send data to the plugin
-
-You can send data (type `any`) to a plugin using the `sendData()` method. This method comes in handy when building your own plugin.
-
-```swift
-let pluginId = "..."
-if let plugin = meeting.plugins.active.first(where: { $0.id == pluginId }) {
- plugin.sendData(eventName: "my-custom-event", data: "Hello world")
-}
-```
-
-## Receive data from the plugin
-
-You can receive data from a plugin by implementing the methods defined in `DytePluginEventsListener` interface.
-This method comes in handy when building your own plugin. Listen Plugin events
-using `meeting.addPluginEventsListener(meetingViewModel)`
-
-```swift
-extension MeetingViewModel: DytePluginEventsListener {
- func onPluginActivated(plugin: DytePlugin) {
- ...
- }
-
- func onPluginDeactivated(plugin: DytePlugin) {
- ...
- }
-
- func onPluginMessage(plugin: DytePlugin, eventName: String, data: Any?) {
- ...
- }
-
- func onPluginFileRequest(plugin: DytePlugin) {
- ...
- }
-}
-```
-
-
- iOS Core extra plugins Function
-
diff --git a/docs/ios-core/plugins/introduction.mdx b/docs/ios-core/plugins/introduction.mdx
deleted file mode 100644
index f02758149..000000000
--- a/docs/ios-core/plugins/introduction.mdx
+++ /dev/null
@@ -1,53 +0,0 @@
----
-title: Introduction
-description: Manage plugins in a meeting.
-sidebar_position: 1
-tags:
- - ios-core
- - plugins
----
-
-# Introduction
-
-Plugins are one-click add-ons that can make your meetings more immersive and collaborative. Dyte provides a bunch of inbuilt plugins to choose from, you can also build your own plugins using the [Plugin SDK](../../plugin-sdk/).
-
-The meeting plugins can be accessed from the `meeting.plugins` object, it exposes the following.
-
-| Property | Type | Description |
-| -------- | ---- | -------------------------------------- |
-| active | List | All plugins that are currently in use. |
-| all | List | All plugins the meeting has access to. |
-
-Each plugin in the list is of type `DytePlugin` which has the following public fields and methods:
-
-```swift
-class DytePlugin {
- let id: String
- let name: String
- let description: String
- let picture: String
- let isPrivate: Bool
- let staggered: Bool
- let baseURL: String
- let config: PluginConfig
- let isActive: Bool
- let enabledBy: String?
-
- func activate()
- func deactivate()
- func getPluginView(): WebView
- func sendData(eventName: String, data: Any?)
-}
-```
-
-The `PluginConfig` type consists of the following fields:
-
-```swift
-class PluginConfig {
- let accessControl: String = "FULL_ACCESS"
-}
-```
-
-
- Mobile Core Introduction
-
diff --git a/docs/ios-core/polls/_category_.json b/docs/ios-core/polls/_category_.json
deleted file mode 100644
index fe2eed0b0..000000000
--- a/docs/ios-core/polls/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 10,
- "label": "Polls",
- "collapsible": true
-}
diff --git a/docs/ios-core/polls/creating-a-poll.mdx b/docs/ios-core/polls/creating-a-poll.mdx
deleted file mode 100644
index f09921d8d..000000000
--- a/docs/ios-core/polls/creating-a-poll.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
----
-title: Creating a poll
-description: >-
- Create and manage polls in your iOS app using Dyte's documentation on
- Polls Creation.
-sidebar_position: 2
-tags:
- - ios-core
- - polls
- - create
----
-
-# Creating a poll
-
-A new poll can be created using the `create` method from the
-[`meeting.polls`](./introduction) object. The `meeting.polls.create()` method
-accepts the following params.
-
-| Param | Type | Default Value | Required | Description |
-| --------- | -------- | ------------- | -------- | ------------------------------------------ |
-| question | string | - | yes | The question that is to be voted for. |
-| options | string[] | - | yes | The options of the poll. |
-| anonymous | boolean | - | no | If true, the poll votes are anonymous. |
-| hideVotes | boolean | - | no | If true, the votes on the poll are hidden. |
-
-The following snippet creates a poll where votes are anonymous.
-
-```swift
-meeting.polls.create(
- question: "Are you an early bird or a night owl?",
- options: ["Early bird", "Night owl"],
- anonymous: true,
- hideVotes: false
-)
-```
-
-
- Mobile Core Creating a poll
-
-
diff --git a/docs/ios-core/polls/introduction.mdx b/docs/ios-core/polls/introduction.mdx
deleted file mode 100644
index 84667d670..000000000
--- a/docs/ios-core/polls/introduction.mdx
+++ /dev/null
@@ -1,69 +0,0 @@
----
-title: Introduction
-description: >-
- Learn the fundamentals of integrating polls into your iOS application with
- Dyte's Polls Introduction guide.
-sidebar_position: 1
-tags:
- - ios-core
- - polls
----
-
-# Introduction
-
-The meetings polls object can be accessed using `meeting.polls`. It provides
-methods to create polls, vote, and more.
-
-`meeting.polls.polls` returns an array of all polls created in a meeting, where
-each element is an object of type `DytePollMessage`.
-
-```swift
-class DytePollMessage{
- let id: String
- let question: String
- let anonymous: Bool
- let hideVotes: Bool
- let createdBy: String
- let options: [DytePollOption]
-}
-```
-
-The type `DytePollMessage` is the main class for any poll in Dyte. 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.
-
-```swift
-class DytePollOption{
- let text: String
- let votes: [DytePollVote]
- let count: Int
-}
-
-class DytePollVote{
- let id: String
- let name: String
-}
-```
-
-One can easily create, vote and view polls by listening to callbacks on
-`meeting` object.
-
-## 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 `DyteMeetingRoomEventsListener`. You can
-subscribe to this events by calling
-`meeting.addMeetingEventsListener(meetingViewModel)`
-
-```swift
-extension MeetingViewModel: DyteMeetingRoomEventsListener {
- func onNewPoll(poll: DytePollMessage) {
- // code to handle new poll
- }
-
- func onPollUpdates(pollMessages: [DytePollMessage]) {
- // code to handle polls and their vote updates.
- }
-}
-```
diff --git a/docs/ios-core/polls/voting-on-a-poll.mdx b/docs/ios-core/polls/voting-on-a-poll.mdx
deleted file mode 100644
index a424c5c05..000000000
--- a/docs/ios-core/polls/voting-on-a-poll.mdx
+++ /dev/null
@@ -1,31 +0,0 @@
----
-title: Voting on a poll
-description: >-
- Understand the process of voting on polls within your iOS app using Dyte's
- documentation on Polls Voting.
-sidebar_position: 3
-tags:
- - ios-core
- - polls
- - votes
----
-
-# Voting on a poll
-
-The `meeting.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 | The poll message to vote on. |
-| pollOption | DytePollOption | - | yes | The option to vote for. |
-
-The following snippet votes for the 1st option on the 1st poll created in the
-meeting.
-
-```swift
-let poll: DytePollMessage = meeting.polls.items[0]
-let selectedPollOption: DytePollOption = poll.options[0]
-
-meeting.poll.vote(poll, selectedPollOption)
-```
diff --git a/docs/ios-core/pre-call/1-media-preview.mdx b/docs/ios-core/pre-call/1-media-preview.mdx
deleted file mode 100644
index 88d2b6fb9..000000000
--- a/docs/ios-core/pre-call/1-media-preview.mdx
+++ /dev/null
@@ -1,119 +0,0 @@
-# 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 `DyteSetupViewController` or built with `DyteParticipantTileView`
-and `DyteSettingViewController` components.
-
-## Properties
-
-- `meeting.localUser.audioEnabled`: A boolean value indicating if the audio currently enabled.
-- `meeting.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**
-
-```swift
-// Mute Audio
-meeting.localUser.disableAudio()
-
-// Unmute Audio
-meeting.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:
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onAudioUpdate(audioEnabled: Boolean) {
- // Show a visual preview of the audio to the user if enabled
- }
-}
-```
-
-**2. Enable/Disable camera**
-
-```swift
-// Disable Video
-meeting.localUser.disableVideo()
-
-// Enable Video
-meeting.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:
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onVideoUpdate(videoEnabled: Boolean) {
- // Show local user's VideoView if video is enabled
- }
-}
-```
-
-### 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:
-
-```swift
-// Get all audio devices
-let audioDevices = meeting.localUser.getAudioDevices()
-
-// Get all video devices
-let videoDevices = meeting.localUser.getVideoDevices()
-```
-
-To get the currently selected media device, use the following methods:
-
-```swift
-// Get current audio device being used
-let currentAudioDevice = meeting.localUser.getSelectedAudioDevice()
-
-// Get current video device being used
-let currentVideoDevice = meeting.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**
-
-```swift
-// Set audio device
-meeting.localUser.setAudioDevice(device)
-// eg. device = audioDevices[0]
-
-// Set video device
-meeting.localUser.setVideoDevice(device)
-// eg. device = videoDevices[0]
-```
diff --git a/docs/ios-core/pre-call/2-handling-permissions.mdx b/docs/ios-core/pre-call/2-handling-permissions.mdx
deleted file mode 100644
index c734ab634..000000000
--- a/docs/ios-core/pre-call/2-handling-permissions.mdx
+++ /dev/null
@@ -1,43 +0,0 @@
-# Handling Device Permissions
-
-Before allowing users to interact with their camera and microphone, it's important to check if the necessary permissions are
-granted on their iOS device. Dyte's iOS Core SDK provides easy-to-use APIs to check the status of these permissions.
-
-### Checking Permissions
-
-Use the following APIs to check if the camera and microphone permissions are granted:
-
-```swift
-// Check if CAMERA permission is granted
-let cameraPermissionGranted = meeting.localUser.isCameraPermissionGranted
-
-// Check if RECORD_AUDIO (microphone) permission is granted
-let micPermissionGranted = meeting.localUser.isMicrophonePermissionGranted
-```
-
-Alternatively, you can also use standard way to check if these permissions are granted:
-
-```swift
-if AVCaptureDevice.authorizationStatusForMediaType(AVMediaTypeVideo) == AVAuthorizationStatus.Authorized {
- // Already Authorized
-} else {
- AVCaptureDevice.requestAccessForMediaType(AVMediaTypeVideo, completionHandler: { (granted: Bool) -> Void in
- if granted == true {
- // User granted
- } else {
- // User rejected
- }
- })
-}
-```
-
-Refer to the [iOS official documentation](https://developer.apple.com/documentation/avfoundation/capture_setup/requesting_authorization_to_capture_and_save_media)
-for more information on checking permissions.
-
-You can use the permission status to enable or disable camera and microphone buttons in the pre-call UI, or provide visual
-feedback to indicate the availability of these media devices.
-
-### Automatic Permission Request
-
-When the Dyte SDK is initialised, it automatically checks for the required media permissions. If the permissions are not granted,
-the SDK requests them on behalf of the developers.
diff --git a/docs/ios-core/pre-call/3-meeting-meta.mdx b/docs/ios-core/pre-call/3-meeting-meta.mdx
deleted file mode 100644
index dd3aa7630..000000000
--- a/docs/ios-core/pre-call/3-meeting-meta.mdx
+++ /dev/null
@@ -1,11 +0,0 @@
-# Meeting Metadata
-
-### Change the name of the user
-
-You can allow the user to edit their name by using the `setDisplayName` method.
-
-```swift
-meeting.localUser.setDisplayName("New Name")
-```
-
-**Note**: The name change will only be reflected to other participants if this method is called before joining the room.
diff --git a/docs/ios-core/pre-call/4-waiting-room.mdx b/docs/ios-core/pre-call/4-waiting-room.mdx
deleted file mode 100644
index 496380246..000000000
--- a/docs/ios-core/pre-call/4-waiting-room.mdx
+++ /dev/null
@@ -1,88 +0,0 @@
-# Waiting Room
-
-When you call `meeting.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
-```
-
-
-
-### Waitlist Events Listener
-
-To listen for waitlisting events, implement `DyteWaitlistEventsListener` on the `meeting` object.
-
-```swift
-meeting.addWaitlistEventListener(waitlistEventListener: self)
-```
-
-When registered, callbacks can be observed as follows:
-
-```swift
-
-extension MeetingViewModel: DyteWaitlistEventsListener {
-
- func onWaitListParticipantJoined(participant: DyteMeetingParticipant) {
- // triggered when waitList peer is joined
- }
-
- func onWaitListParticipantAccepted(participant: DyteMeetingParticipant) {
- // triggered when waitListed peer is accepted by host
- }
-
- func onWaitListParticipantRejected(participant: DyteMeetingParticipant) {
- // triggered when entry of waitListed peer declined by host
- }
-
- func onWaitListParticipantClosed(participant: DyteMeetingParticipant) {
- // triggered when waitListed peer get's disconnected
- }
-}
-```
-
-### Meeting Room Joined
-
-If user joins the room successfully, you receive the `onMeetingRoomJoinCompleted` callback in `DyteMeetingRoomEventsListener`.
-You can listen for this callback as follows:
-
-```swift
-extension MeetingViewModel: DyteMeetingRoomEventsListener {
- func onMeetingRoomJoinCompleted() {
- // Local user is in the meeting
- }
-}
-```
-
-### 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.
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onWaitListStatusUpdate(waitListStatus: WaitListStatus) {
- switch waitListStatus {
- case .accepted:
- // Local user's join room request was accepted by the host
- case .waiting:
- // Local user is in the waiting room
- case .rejected:
- // Local user's join room request was rejected by the host
- default:
- return .none
- }
- }
-}
-```
-
-Host can use [these methods to accept/reject participants](/ios-core/participants/participant-object#waiting-room).
diff --git a/docs/ios-core/pre-call/_category_.json b/docs/ios-core/pre-call/_category_.json
deleted file mode 100644
index 5539de8b0..000000000
--- a/docs/ios-core/pre-call/_category_.json
+++ /dev/null
@@ -1,6 +0,0 @@
-{
- "position": 2,
- "label": "Pre-call",
- "collapsible": true,
- "className": "pre-call-docs"
-}
\ No newline at end of file
diff --git a/docs/ios-core/quickstart.mdx b/docs/ios-core/quickstart.mdx
deleted file mode 100644
index 7a0de3504..000000000
--- a/docs/ios-core/quickstart.mdx
+++ /dev/null
@@ -1,256 +0,0 @@
----
-tags:
- - ios-core
- - quickstart
- - setup
-slug: /
-sidebar_position: 1
----
-
-import Tabs from '@theme/Tabs';
-import TabItem from '@theme/TabItem';
-import { MavenLatestInstallation } from '@site/src/components/LatestInstallation';
-import { CocoaPodInstallation } from '@site/src/components/LatestInstallation';
-
-# Quickstart
-
-This quickstart shows how to use Dyte's core SDKs to add live video and audio to
-your iOS applications.
-
-To get started quickly, you can use our sample code. You can clone and run a sample application from the iOS Core samples,
-available in both [Swift](https://github.com/dyte-io/ios-samples/tree/main/iOS-core) and [SwiftUI](https://github.com/dyte-io/ios-samples/tree/main/DyteSwiftUI-Core).
-
-## Objective
-
-You'll learn how to:
-
-- [Install the Dyte SDK](#step-1-install-the-sdk)
-- [Initialize the SDK](#step-2-initialize-the-sdk)
-- [Configure a Dyte meeting](#step-3-configure-a-dyte-meeting)
-- [Initialize the Dyte meeting](#step-4-initialize-the-dyte-meeting)
-- [Go live with your Dyte meeting](#step-5-go-live-with-your-dyte-meeting)
-
-## Before Getting Started
-
-Make sure you've read the [Getting Started with Dyte](/getting-started) topic and completed the following steps:
-
-- Create a [Dyte Developer Account](https://dev.dyte.io/)
-- Create a [Dyte Meeting](/api/?v=v2#/operations/create_meeting)
-- [Add Participant](/api/?v=v2#/operations/add_participant) to the meeting
-- Install [Xcode](https://apps.apple.com/in/app/xcode/id497799835)
-
-## Step 1: Install the SDK
-
-
-
-
-1. Set your platform to iOS 13.0 or above in your Podfile.
-
-```ruby
-platform :ios, '13.0'
-```
-
-2. Add 'DyteiOSCore' to your Podfile.
-
-
-
-3. Install the client SDK from pod.
-
-```shell
-pod install
-```
-
-
-
-
-Add `DyteiOSCore` SDK through Swift Package Manager in Xcode. Use https://github.com/dyte-in/DyteMobileCoreiOS.git as the package source.
-
-
-
-
-Add the following entries to the info.plist file. This gives permission to your app to access the camera and microphone, access photos, install the required fonts and icons.
-
-```xml
-NSBluetoothPeripheralUsageDescription
-We will use your Bluetooth to access your Bluetooth headphones.
-NSBluetoothAlwaysUsageDescription
-We will use your Bluetooth to access your Bluetooth headphones.
-NSCameraUsageDescription
-For people to see you during meetings, we need access to your camera.
-NSMicrophoneUsageDescription
-For people to hear you during meetings, we need access to your microphone.
-NSPhotoLibraryUsageDescription
-For people to share, we need access to your photos.
-UIBackgroundModes
-
- audio
- voip
- fetch
- remote-notification
-
-```
-
-The `UIBackgroundModes` key is used in the `Info.plist` file of an iOS app to declare the app's supported background execution modes. This key is an array of strings that specifies the types of background tasks that the app supports. By declaring the background modes, the app can continue to run in the background and perform specific tasks even when it is not in the foreground.
-It's important to note that the use of background modes should be justified and comply with Apple's App Store Review Guidelines. Apps that misuse background modes or unnecessarily run in the background may be rejected during the app review process.
-
-Sources: Apple Developer Documentation: [Declaring Your App's Supported Background Tasks](https://developer.apple.com/documentation/bundleresources/information_property_list/uibackgroundmodes)
-
-## Step 2: Initialize the SDK
-
-1. The `DyteMobileClient` is the main class of the SDK. It is the main entry
- point of the SDK. It is the only class that you need to instantiate in order
- to use the SDK. To instantiate DyteMobileClient, you should use
- `DyteiOSClientBuilder().build()`.
-
-```swift
-let meeting = DyteiOSClientBuilder().build()
-```
-
-2. Add the required listeners and implement callback stubs as per requirement
-
-```swift
-meeting.addMeetingRoomEventsListener(meetingRoomEventsListener: self)
-meeting.addParticipantEventsListener(participantEventsListener: self)
-meeting.addSelfEventsListener(selfEventsListener: self)
-meeting.addChatEventsListener(chatEventsListener: self)
-meeting.addPollEventsListener(pollEventsListener: self)
-meeting.addRecordingEventsListener(recordingEventsListener: self)
-meeting.addWaitlistEventListener(waitlistEventListener: self)
-meeting.addLiveStreamEventsListener(liveStreamEventsListener: self)
-```
-
-## Step 3: Configure a Dyte meeting
-
-Add `authToken` that you got from the REST API to constructor of DyteMeetingInfoV2 - [Add Participant API](/api#/operations/addParticipant)
-
-| Name | Description |
-| ------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
-| `authToken` | After you've created the meeting, add each participant to the meeting using the [Add Participant API](/api?v=v2#/operations/add_participant) The API response contains the `authToken`. |
-| `enableAudio` | Set whether to join the meeting with your Mic ON or OFF by passing `true` or `false`. |
-| `enableVideo` | Set whether to join the meeting with your Camera ON or OFF by passing `true` or `false`. |
-| `baseUrl` | Base URL of the dyte's enviorment you have created the meeting on. |
-
-```swift
-let meetingInfo = DyteMeetingInfoV2(authToken: authToken,
- enableAudio: true,
- enableVideo: true,
- baseUrl: "dyte.io")
-```
-
-## Step 4: Initialize the Dyte meeting
-
-To initialize the connection request, call the `doInit()` method obtained on
-`meeting` with the `meetingInfo` argument. This will establish the connection
-with the Dyte meeting server.
-
-```swift
-meeting.doInit(dyteMeetingInfo_: meetingInfo)
-```
-
-Note: This is the asynchronous method, You will have to attached observer (meeting.addMeetingRoomEventsListener(meetingRoomEventsListener: self)
-) to know its completion state, success or failure, Listen to below callbacks of 'DyteMeetingRoomEventsListener'.
-
-```swift
-func onMeetingInitCompleted() {
- // init complete
-}
-
-func onMeetingInitFailed(exception: KotlinException) {
- // init failed
-}
-```
-
-OR
-
-```swift
-meeting.doInit(dyteMeetingInfo: DyteMeetingInfoV2,
- onInitCompleted: () -> Void,
- onInitFailed_: () -> Void)
-```
-
-To initialize the connection request, call the `doInit` method
-which is asynchronous and callback based.
-
-## Step 5: Go live with your Dyte meeting
-
-### Connect to the meeting
-
-Now, you have established the connection with the Dyte meeting server
-successfully. Once `onMeetingInitCompleted()` is triggered, next step is to join
-the room.
-
-### Join the room
-
-To join the meeting room, do the following only after you received the doInit completion callbacks.
-
-```swift
-func onMeetingInitCompleted() {
- meeting.joinRoom()
- }
-```
-
-Or
-
-```swift
- meeting.doInit(dyteMeetingInfo: meetingInfo) {
- self.meeting.joinRoom {
- print("Room Joined successfully")
- } onRoomJoinFailed: {
- print("Room Joined failed")
- }
- } onInitFailed_: {
- print("Meeting Initialisation got failed")
- }
-```
-
-Join room event listeners: Once you call `joinRoom()`, you can listen to
-callbacks for this action on meeting object if you have done
-`meeting.addSelfEventsListener(selfEventsListener: self)`.
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onMeetingRoomJoinStarted() {
- // meeting join started
- }
-
- func onMeetingRoomJoined() {
- // meeting room joined successfully
- }
-
- func onMeetingRoomJoinFailed(exception: KotlinException) {
- // error in joining meeting room.
- }
-}
-```
-
-### Leave the room
-
-Once the meeting is over, you can leave the meeting room. To leave the meeting
-call `leaveRoom()` on `meeting` object.
-
-```swift
-meeting.leaveRoom()
-```
-
-Leave room event listeners: You can listen to `leaveRoom()` callbacks by
-registering obsever on meeting object as follows:
-
-```swift
-extension MeetingViewModel: DyteSelfEventsListener {
- func onMeetingRoomLeaveStarted() {
- // meeting room leave started
- }
-
- func onMeetingRoomLeft() {
- // meeting room leave completed
- }
-}
-```
-
-
- iOS Core Quickstart
-
-
diff --git a/docs/ios-core/recording.mdx b/docs/ios-core/recording.mdx
deleted file mode 100644
index 1f297ad72..000000000
--- a/docs/ios-core/recording.mdx
+++ /dev/null
@@ -1,95 +0,0 @@
----
-title: Recording
-description: Control recordings in a meeting.
-sidebar_position: 8
-tags:
- - ios-core
- - recording
----
-
-# Recording
-
-The `meeting.recording` object in Dyte's iOS Core SDK provides APIs to manage recording within a meeting.
-
-### Recording State
-
-The `meeting.recording.recordingState` property indicates the current state of the recording. Possible states include `IDLE`,
-`STARTING`, `RECORDING`, `PAUSED`, and `STOPPING`.
-
-### Starting a Recording
-
-To start a recording, use the `start()` method of the `meeting.recording` object.
-
-```swift
-meeting.recording.start()
-```
-
-### Stopping a Recording
-
-To stop an active recording, use the `stop()` method.
-
-```swift
-meeting.recording.stop()
-```
-
-### Pausing a Recording
-
-To temporarily pause a recording, use the `pause()` method.
-
-```swift
-meeting.recording.pause()
-```
-
-### Resuming a Recording
-
-To resume a paused recording, use the `resume()` method.
-
-```swift
-meeting.recording.resume()
-```
-
-### Listening for Recording Events
-
-To handle recording-related events, implement the `DyteRecordingEventsListener` interface. This interface provides callbacks for
-various recording events:
-
-- `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(state: DyteRecordingState)`: Notifies when there is a change in the recording state.
-- `onMeetingRecordingStopError(e: Exception)`: Indicates an error occurred while stopping an active recording.
-- `onMeetingRecordingPauseError(e: Exception)`: Indicates an error occurred while pausing an active recording.
-- `onMeetingRecordingResumeError(e: Exception)`: Indicates an error occurred while resuming a paused recording.
-
-```swift
-extension MeetingViewModel: DyteRecordingEventsListener {
- func onMeetingRecordingStarted() {
- // Handle recording started
- }
-
- func onMeetingRecordingEnded() {
- // Handle recording stopped
- }
-
- func onMeetingRecordingStateUpdated(state: DyteRecordingState) {
- // Handle recording state update
- }
-
- func onMeetingRecordingStopError(e: Exception) {
- // Handle recording stop error
- }
-
- func onMeetingRecordingPauseError(e: Exception) {
- // Handle recording pause error
- }
-
- func onMeetingRecordingResumeError(e: Exception) {
- // Handle recording resume error
- }
-}
-```
-
-Implement these callbacks to handle recording events and errors appropriately in your application.
-
-
- iOS Core Recording
-
diff --git a/docs/ios-core/release-notes.mdx b/docs/ios-core/release-notes.mdx
deleted file mode 100644
index bd3528da6..000000000
--- a/docs/ios-core/release-notes.mdx
+++ /dev/null
@@ -1,18 +0,0 @@
----
-title: Release Notes
-sidebar_position: 101
-sidebar_class_name: releaseSidebarHeading
-tags:
- - ios-core
- - releasenotes
----
-
-import ReleaseNotesGenerator from '@site/src/components/ReleaseNotesGenerator';
-
-The release notes lists all new features, resolved issues, and known issues of iOS Core in chronological order.
-
-
-
-
- iOS Core Release Notes
-
diff --git a/docs/ios-core/room-metadata.mdx b/docs/ios-core/room-metadata.mdx
deleted file mode 100644
index 482985b65..000000000
--- a/docs/ios-core/room-metadata.mdx
+++ /dev/null
@@ -1,47 +0,0 @@
----
-title: Room Metadata
-description: >-
- Learn about managing room metadata in your iOS application using Dyte
- Docs.
-sidebar_position: 6
-tags:
- - ios-core
- - room-metadata
----
-
-# Room Metadata
-
-All metadata pertaining to a meeting is stored in `meeting.meta`. This includes:
-
-- `meetingId`: The unique identifier of the meeting.
-- `meetingType`: Indicates the meeting is a group-call or a webinar.
-- `meetingTitle`: The title of the meeting.
-- `meetingStartedTimestamp`: The timestamp when the meeting started.
-- `meetingState`: The state of the meeting of type `DyteMeetingState`.
-- `authToken`: The authentication token for the meeting.
-- `meetingConfig`: The configuration of the meeting of type `MeetingConfig`.
-
-```swift
-enum DyteMeetingState {
- case notInitialised
- case initStarted
- case initCompleted
- case initFailed
-}
-
-struct MeetingConfig {
- let enableAudio: Bool
- let enableVideo: Bool
-}
-```
-
-For example, if you want to get the name of the meeting the current participant is
-connected to, you can do so by doing:
-
-```swift
-let meetingTitle = meeting.meta.meetingTitle
-```
-
-
- Mobile Core Room Metadata
-
diff --git a/docs/ios-core/stage-management/1-introduction.mdx b/docs/ios-core/stage-management/1-introduction.mdx
deleted file mode 100644
index b79225fa9..000000000
--- a/docs/ios-core/stage-management/1-introduction.mdx
+++ /dev/null
@@ -1,125 +0,0 @@
----
-title: Introduction
-description: Stage management in Dyte meetings.
-sidebar_position: 1
-tags:
- - ios-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 `meeting.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:
-
-- `ON_STAGE`: Indicates that the user is currently on the stage and is allowed to publish media.
-- `OFF_STAGE`: Indicates that the user is a viewer and is not on the stage. They can see and listen to those on stage.
-- `REQUESTED_TO_JOIN_STAGE`: 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.
-- `ACCEPTED_TO_JOIN_STAGE`: Indicates that the host has accepted the user's request to join the stage.
-- `REJECTED_TO_JOIN_STAGE`: 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 `meeting.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 `ON_STAGE`.
-
-### 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 `ACCEPTED_TO_JOIN_STAGE`).
-
-```swift
-meeting.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.
-
-```swift
-meeting.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:
-
-```swift
-extension WebinarViewModel: DyteStageEventListener {
- func 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.
- }
-
- func onAddedToStage() {
- // Called when the local user successfully joins the stage.
- }
-
- func onRemovedFromStage() {
- // Called when the local user is removed from the stage.
- }
-
- func onPresentRequestAdded(participant: DyteJoinedMeetingParticipant) {
- // Called when a participant requests to join the stage. Triggered only if the local user is a host.
- }
-
- func onPresentRequestClosed(participant: DyteJoinedMeetingParticipant) {
- // Called when a participant with a pending stage access request leaves the meeting.
- // Triggered only if the local user is a host.
- }
-
- func onPresentRequestRejected(participant: DyteJoinedMeetingParticipant) {
- // Called when a participant's stage access request is denied by the host.
- // Triggered only if the local user is a host.
- }
-
- func onPresentRequestWithdrawn(participant: DyteJoinedMeetingParticipant) {
- // Called when a participant cancels their stage access request.
- // Triggered only if the local user is a host.
- }
-
- func onParticipantRemovedFromStage(participant: DyteJoinedMeetingParticipant) {
- // Called when a participant is removed from the stage by the host.
- }
-
- func onStageRequestsUpdated(accessRequests: [DyteJoinedMeetingParticipant]) {
- // Called when the list of stage access requests is updated.
- }
-
- func onParticipantStartedPresenting(participant: DyteJoinedMeetingParticipant) {
- // Called when a participant joins the stage.
- }
-
- func onParticipantStoppedPresenting(participant: DyteJoinedMeetingParticipant) {
- // Called when a participant leaves the stage.
- }
-
- func onStageStatusUpdated(stageStatus: DyteStageStatus) {
- // Called when the local user's stage status is updated.
- }
-}
-```
-
-Next, we'll explore the Stage Management APIs for hosts, allowing them to manage stage requests, participants in Dyte meetings.
-
-
- iOS Core Stage Introduction
-
diff --git a/docs/ios-core/stage-management/2-host-controls.mdx b/docs/ios-core/stage-management/2-host-controls.mdx
deleted file mode 100644
index 4ac6629c3..000000000
--- a/docs/ios-core/stage-management/2-host-controls.mdx
+++ /dev/null
@@ -1,89 +0,0 @@
----
-title: Stage Host Controls
-description: Stage management APIs for Host in Dyte meetings.
-sidebar_position: 2
-tags:
- - ios-core
- - stage
----
-
-In a stage management-enabled meeting, a user with the `selfPermissions.host.canAcceptStageRequests` permission as `true` is
-considered a host. The `meeting.stage` object in Dyte's iOS 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 `meeting.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 Access
-
-To accept stage access requests or allow a participant directly to the stage, you can use the `grantAccess()` method.
-Alternatively, the `grantAccessAll()` method can be used to grant stage access to all participants with pending stage access requests.
-
-```swift
-// Grants stage access to a participant
-// id: peer id of the stage access requesting participant
-meeting.stage.grantAccess(id)
-
-// Grants stage access to all participants with pending stage access requests
-meeting.stage.grantAccessAll()
-```
-
-### Deny Access
-
-To reject stage access requests, you can use the `denyAccess()` method. Similarly, the `denyAccessAll()` method can be used to
-deny all pending stage access requests.
-
-```swift
-// Denies stage access request of a participant
-// id: peer id of the stage access requesting participant
-meeting.stage.denyAccess(id)
-
-// Denies all pending stage access requests
-meeting.stage.denyAccessAll()
-```
-
-### Kick Users
-
-You can remove a participant from the stage by using the `kick()` method.
-
-```swift
-// Kicks a participant from stage
-// id: peer id of the ON_STAGE participant to kick
-meeting.stage.kick(id)
-```
-
-### 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 `DyteStageEventListener`:
-
-```swift
-extension WebinarViewModel: DyteStageEventListener {
- func onPresentRequestAdded(participant: DyteStageParticipant) {
- // Called when a user is requesting to join the stage
- }
-
- func onPresentRequestClosed(participant: DyteStageParticipant) {
- // Called when a user who was trying to join the stage leaves the call
- }
-
- func onPresentRequestRejected(participant: DyteStageParticipant) {
- // Called when a join stage request is denied by the host
- }
-
- func onPresentRequestWithdrawn(participant: DyteStageParticipant) {
- // Called when a user who was trying to join the stage withdraws their request to join
- }
-
- func onStageRequestsUpdated(accessRequests: [DyteJoinedMeetingParticipant]) {
- // Called when the access requests list is updated
- }
-}
-```
-
-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/ios-core/stage-management/3-viewer-participants.mdx b/docs/ios-core/stage-management/3-viewer-participants.mdx
deleted file mode 100644
index bd09754a9..000000000
--- a/docs/ios-core/stage-management/3-viewer-participants.mdx
+++ /dev/null
@@ -1,42 +0,0 @@
----
-title: Stage Access for Viewers
-description: Stage APIs for Viewers in Dyte meetings.
-sidebar_position: 3
-tags:
- - ios-core
- - stage
----
-
-Viewer participants in a stage-enabled meeting are users whose preset permission for media production is set as `CAN_REQUEST`.
-The `meeting.stage` object provides APIs for viewer participants to request stage access and withdraw their join stage request.
-
-### Request Access
-
-To request access to the stage, you can call the `requestAccess()` method:
-
-```swift
-meeting.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:
-
-```swift
-extension WebinarViewModel: DyteStageEventListener {
- func onPresentRequestReceived() {
- // Host accepted the join stage request or invited user directly to stage
- }
-}
-```
-
-You can then call the `join()` method to finally join the stage.
-
-**Note**: If the host has directly allowed the user to join the stage and they want to decline, you should use the `leave()` method.
-
-### Cancel Access Request
-
-To cancel or withdraw a pending stage access request, you can call the `cancelRequestAccess()` method:
-
-```swift
-meeting.stage.cancelRequestAccess()
-```
diff --git a/docs/ios-core/stage-management/_category_.json b/docs/ios-core/stage-management/_category_.json
deleted file mode 100644
index 753fc8761..000000000
--- a/docs/ios-core/stage-management/_category_.json
+++ /dev/null
@@ -1,5 +0,0 @@
-{
- "position": 9,
- "label": "Stage Management",
- "collapsible": true
-}
\ No newline at end of file