import { NativeModules } from 'react-native'; import type { LiveTranscriptionStatus } from './ZoomVideoSdk'; import { ZoomVideoSdkLiveTranscriptionLanguage } from './ZoomVideoSdkLiveTranscriptionLanguage'; import type { Errors } from '../native/ZoomVideoSdk'; import {ZoomVideoSdkLiveTranscriptionMessageInfo} from "./ZoomVideoSdkLiveTranscriptionMessageInfo"; const { RNZoomVideoSdkLiveTranscriptionHelper } = NativeModules; export type ZoomVideoSdkLiveTranscriptionHelperType = { /** * Query if the user can start live transcription. */ canStartLiveTranscription: () => Promise; /** * Get the current live transcription status. */ getLiveTranscriptionStatus: () => Promise; /** * Start live transcription. If the session allows multi-language transcription, all users can start live transcription. */ startLiveTranscription: () => Promise; /** * Stop live transcription. If the session allows multi-language transcription, all users can stop live transcription. */ stopLiveTranscription: () => Promise; /** * Get the list of all available spoken languages in a session. */ getAvailableSpokenLanguages: () => Promise< ZoomVideoSdkLiveTranscriptionLanguage[] >; /** * Set the spoken language of the current user. */ setSpokenLanguage: (languageId: number) => void; /** * Get the spoken language of the current user. */ getSpokenLanguage: () => Promise; /** * Get the list of all available translation languages in a session. */ getAvailableTranslationLanguages: () => Promise< ZoomVideoSdkLiveTranscriptionLanguage[] >; /** * Set the translation language of the current user. */ setTranslationLanguage: (languageId: number) => void; /** * Get the translation language of the current user. */ getTranslationLanguage: () => Promise; /** * Determine whether the view history translation message is available. */ isAllowViewHistoryTranslationMessageEnabled: () => Promise; /** * Get the all history list of translation messages in a session. */ getHistoryTranslationMessageList: () => Promise< ZoomVideoSdkLiveTranscriptionMessageInfo[] >; /** * Determine whether the feature to receive original and translated is available. */ isReceiveSpokenLanguageContentEnabled: () => Promise; /** * Enable or disable to receive original and translated content. If you enable this feature, you must start live transcription. */ enableReceiveSpokenLanguageContent: (enable: boolean) => Promise; }; export class ZoomVideoSdkLiveTranscriptionHelper implements ZoomVideoSdkLiveTranscriptionHelperType { async canStartLiveTranscription() { return await RNZoomVideoSdkLiveTranscriptionHelper.canStartLiveTranscription(); } async getLiveTranscriptionStatus() { return await RNZoomVideoSdkLiveTranscriptionHelper.getLiveTranscriptionStatus(); } async startLiveTranscription() { return await RNZoomVideoSdkLiveTranscriptionHelper.startLiveTranscription(); } async stopLiveTranscription() { return await RNZoomVideoSdkLiveTranscriptionHelper.stopLiveTranscription(); } async getAvailableSpokenLanguages() { const languages = await RNZoomVideoSdkLiveTranscriptionHelper.getAvailableSpokenLanguages(); return languages.map( (language: ZoomVideoSdkLiveTranscriptionLanguage) => new ZoomVideoSdkLiveTranscriptionLanguage(language) ); } async setSpokenLanguage(languageId: number) { return await RNZoomVideoSdkLiveTranscriptionHelper.setSpokenLanguage( languageId ); } async getSpokenLanguage() { const language = await RNZoomVideoSdkLiveTranscriptionHelper.getSpokenLanguage(); return new ZoomVideoSdkLiveTranscriptionLanguage(language); } async getAvailableTranslationLanguages() { const languages = await RNZoomVideoSdkLiveTranscriptionHelper.getAvailableTranslationLanguages(); return languages.map( (language: ZoomVideoSdkLiveTranscriptionLanguage) => new ZoomVideoSdkLiveTranscriptionLanguage(language) ); } async setTranslationLanguage(languageId: number) { return await RNZoomVideoSdkLiveTranscriptionHelper.setTranslationLanguage( languageId ); } async getTranslationLanguage() { const language = await RNZoomVideoSdkLiveTranscriptionHelper.getTranslationLanguage(); return new ZoomVideoSdkLiveTranscriptionLanguage(language); } async isAllowViewHistoryTranslationMessageEnabled() { return await RNZoomVideoSdkLiveTranscriptionHelper.isAllowViewHistoryTranslationMessageEnabled(); } async getHistoryTranslationMessageList() { const messages = await RNZoomVideoSdkLiveTranscriptionHelper.getHistoryTranslationMessageList(); return messages.map( (message: ZoomVideoSdkLiveTranscriptionMessageInfo) => new ZoomVideoSdkLiveTranscriptionMessageInfo(message) ); } async isReceiveSpokenLanguageContentEnabled() { return await RNZoomVideoSdkLiveTranscriptionHelper.isReceiveSpokenLanguageContentEnabled(); } async enableReceiveSpokenLanguageContent(enable: boolean) { return await RNZoomVideoSdkLiveTranscriptionHelper.enableReceiveSpokenLanguageContent(enable); } }