mediasfu-reactjs
Version:
MediaSFU Prebuilt ReactJS SDK - Compatible with React 18 & 19, TypeScript & JavaScript
75 lines • 2.73 kB
TypeScript
import React from "react";
import { Socket } from "socket.io-client";
import { Request, RespondToRequestsType } from "../../@types/types";
export interface RenderRequestComponentOptions {
request: Request;
onRequestItemPress: RespondToRequestsType;
requestList: Request[];
updateRequestList: (newRequestList: Request[]) => void;
roomName: string;
socket: Socket;
/** Optional dark-mode toggle for theme-aware styling */
isDarkMode?: boolean;
/** Enable native title tooltips on controls */
showTooltips?: boolean;
/** Accent color used for the icon background */
accentColor?: string;
}
export type RenderRequestComponentType = (options: RenderRequestComponentOptions) => React.JSX.Element;
/**
* RenderRequestComponent displays a request item with the request's name, icon,
* and action buttons for acceptance or rejection. It enables real-time
* updates for request actions, such as accepting or rejecting,
* through the socket instance.
*
* @component
* @param {RenderRequestComponentOptions} props - Properties passed to the component.
* @param {Request} props.request - The request object with request details.
* @param {RespondToRequestsType} props.onRequestItemPress - Callback for request item actions.
* @param {Array<Request>} props.requestList - Array of all request items.
* @param {Function} props.updateRequestList - Updates the request list state.
* @param {string} props.roomName - The name of the room where the request is made.
* @param {Socket} props.socket - The socket instance for real-time communication.
*
* @returns {React.JSX.Element} The rendered request component.
*
* @example
* ```tsx
* import React from 'react';
* import { io } from 'socket.io-client';
* import { RenderRequestComponent } from 'mediasfu-reactjs';
*
* const request = {
* id: "1",
* name: "Enable Microphone",
* icon: "fa-microphone",
* };
*
* const requestList = [
* request,
* { id: "2", name: "Enable Video", icon: "fa-video" }
* ];
*
* const socket = io("http://localhost:3000");
*
* const handleRequestItemPress = ({ request, action }) => {
* console.log(`${action} request for ${request.name}`);
* };
*
* const updateRequestList = (newRequestList) => {
* console.log("Updated request list:", newRequestList);
* };
*
* <RenderRequestComponent
* request={request}
* onRequestItemPress={handleRequestItemPress}
* requestList={requestList}
* updateRequestList={updateRequestList}
* roomName="Room 1"
* socket={socket}
* />
* ```
*/
declare const RenderRequestComponent: React.FC<RenderRequestComponentOptions>;
export default RenderRequestComponent;
//# sourceMappingURL=RenderRequestComponent.d.ts.map