jitsi-meet/react/features/recording/actions.native.ts
theluyuan 38ba663466
Some checks failed
Close stale issues and PRs / stale (push) Has been cancelled
init
2025-09-02 14:49:16 +08:00

73 lines
2.4 KiB
TypeScript

import { IStore } from '../app/types';
import { openSheet } from '../base/dialog/actions';
import JitsiMeetJS from '../base/lib-jitsi-meet';
import { navigate } from '../mobile/navigation/components/conference/ConferenceNavigationContainerRef';
import { screen } from '../mobile/navigation/routes';
import { showNotification } from '../notifications/actions';
import { NOTIFICATION_TIMEOUT_TYPE } from '../notifications/constants';
import { showStartRecordingNotificationWithCallback } from './actions.any';
import HighlightDialog from './components/Recording/native/HighlightDialog';
export * from './actions.any';
/**
* Opens the highlight dialog.
*
* @returns {Function}
*/
export function openHighlightDialog() {
return (dispatch: IStore['dispatch']) => {
dispatch(openSheet(HighlightDialog));
};
}
/**
* Signals that a started recording notification should be shown on the
* screen for a given period.
*
* @param {string} streamType - The type of the stream ({@code file} or
* {@code stream}).
* @returns {showNotification}
*/
export function showRecordingLimitNotification(streamType: string) {
return (dispatch: IStore['dispatch'], getState: IStore['getState']) => {
const isLiveStreaming = streamType === JitsiMeetJS.constants.recording.mode.STREAM;
let descriptionKey, titleKey;
if (isLiveStreaming) {
descriptionKey = 'liveStreaming.limitNotificationDescriptionNative';
titleKey = 'dialog.liveStreaming';
} else {
descriptionKey = 'recording.limitNotificationDescriptionNative';
titleKey = 'dialog.recording';
}
const { recordingLimit = {} } = getState()['features/base/config'];
const { limit, appName } = recordingLimit;
return dispatch(showNotification({
descriptionArguments: {
limit,
app: appName
},
descriptionKey,
titleKey,
maxLines: 2
}, NOTIFICATION_TIMEOUT_TYPE.LONG));
};
}
/**
* Displays the notification suggesting to start the recording.
*
* @returns {void}
*/
export function showStartRecordingNotification() {
return (dispatch: IStore['dispatch']) => {
const openDialogCallback = () => navigate(screen.conference.recording);
dispatch(showStartRecordingNotificationWithCallback(openDialogCallback));
};
}