Files
jitsi-meet/react/features/visitors/functions.ts
Дамян Минков f0fc63f573 feat(visitors): Handles live conference and queue service. (#14869)
* feat(visitors): Handling of live conference and queue service.

* squash: Small refactor mobile code.

* squash: Drop debug log.

* chore(deps) lib-jitsi-meet@latest

https://github.com/jitsi/lib-jitsi-meet/compare/v1836.0.0+d05325f3...v1839.0.0+ea523fc6

* squash: Adds a count function.

* squash: Drop debug print.

* squash: Skip if queueService is not enabled.

* squash: Avoids double subscribing for visitorsWaiting.

* squash: Fixes lint error.

* squash: Fixes showing dialog.
2024-06-28 07:29:41 -05:00

92 lines
2.7 KiB
TypeScript

import { IReduxState } from '../app/types';
import { IStateful } from '../base/app/types';
import { toState } from '../base/redux/functions';
/**
* A short string to represent the number of visitors.
* Over 100 we show numbers like 0.2 K or 9.5 K.
*
* @param {number} visitorsCount - The number of visitors to shorten.
*
* @returns {string} Short string representing the number of visitors.
*/
export function getVisitorsShortText(visitorsCount: number) {
return visitorsCount > 100 ? `${Math.round(visitorsCount / 100) / 10} K` : String(visitorsCount);
}
/**
* Selector to return a list of promotion requests from visitors.
*
* @param {IReduxState} state - State object.
* @returns {Array<Object>}
*/
export function getPromotionRequests(state: IReduxState) {
return state['features/visitors'].promotionRequests;
}
/**
* Whether current UI is in visitor mode.
*
* @param {Function|Object} stateful - The redux store or {@code getState}
* function.
* @returns {boolean} Whether iAmVisitor is set.
*/
export function iAmVisitor(stateful: IStateful) {
return toState(stateful)['features/visitors'].iAmVisitor;
}
/**
* Returns the number of visitors.
*
* @param {Function|Object} stateful - The redux store or {@code getState}
* function.
* @returns {number} - The number of visitors.
*/
export function getVisitorsCount(stateful: IStateful) {
return toState(stateful)['features/visitors'].count ?? 0;
}
/**
* Returns the number of visitors that are waiting in queue.
*
* @param {Function|Object} stateful - The redux store or {@code getState}
* function.
* @returns {number} - The number of visitors in queue.
*/
export function getVisitorsInQueueCount(stateful: IStateful) {
return toState(stateful)['features/visitors'].inQueueCount ?? 0;
}
/**
* Whether visitor mode is supported.
*
* @param {Function|Object} stateful - The redux store or {@code getState}
* function.
* @returns {boolean} Whether visitor moder is supported.
*/
export function isVisitorsSupported(stateful: IStateful) {
return toState(stateful)['features/visitors'].supported;
}
/**
* Whether visitor mode is live.
*
* @param {Function|Object} stateful - The redux store or {@code getState}
* function.
* @returns {boolean} Whether visitor moder is live.
*/
export function isVisitorsLive(stateful: IStateful) {
return toState(stateful)['features/base/conference'].metadata?.visitors?.live;
}
/**
* Whether to show visitor queue screen.
*
* @param {Function|Object} stateful - The redux store or {@code getState}
* function.
* @returns {boolean} Whether current participant is visitor and is in queue.
*/
export function showVisitorsQueue(stateful: IStateful) {
return toState(stateful)['features/visitors'].inQueue;
}