UNPKG

ringcentral-widgets

Version:
68 lines (63 loc) 2.45 kB
import { RcUIModuleV2, UIFunctions, UIProps, } from '@ringcentral-integration/core'; import { Module } from 'ringcentral-integration/lib/di'; import callingOptions from 'ringcentral-integration/modules/CallingSettings/callingOptions'; import { Deps, AudioSettingsPanelProps } from './AudioSettingsUI.interface'; @Module({ name: 'AudioSettingsUI', deps: [ 'AudioSettings', 'Locale', 'CallingSettings', 'RouterInteraction', 'CallMonitor', { dep: 'Webphone', optional: true }, { dep: 'AudioSettingsUIOptions', optional: true }, ], }) class AudioSettingsUI extends RcUIModuleV2<Deps> { constructor(deps: Deps) { super({ deps, }); } getUIProps(): UIProps<AudioSettingsPanelProps> { return { currentLocale: this._deps.locale.currentLocale, dialButtonVolume: this._deps.audioSettings.dialButtonVolume, dialButtonMuted: this._deps.audioSettings.dialButtonMuted, ringtoneVolume: this._deps.audioSettings.ringtoneVolume, ringtoneMuted: this._deps.audioSettings.ringtoneMuted, callVolume: this._deps.audioSettings.callVolume, availableInputDevices: this._deps.audioSettings.availableInputDevices, inputDeviceId: this._deps.audioSettings.inputDeviceId, availableOutputDevices: this._deps.audioSettings.availableOutputDevices, outputDeviceId: this._deps.audioSettings.outputDeviceId, supportDevices: this._deps.audioSettings.supportDevices, userMedia: this._deps.audioSettings.userMedia, isWebRTC: this._deps.callingSettings.callWith === callingOptions.browser, outputDeviceDisabled: !this._deps.audioSettings.availableOutputDevices .length, inputDeviceDisabled: !!( !this._deps.audioSettings.availableInputDevices.length || (this._deps.webphone && this._deps.webphone.sessions.length > 0) || (this._deps.callMonitor.useTelephonySession && this._deps.callMonitor.activeRingCalls.length + this._deps.callMonitor.activeOnHoldCalls.length + this._deps.callMonitor.activeCurrentCalls.length > 0) ), }; } getUIFunctions(): UIFunctions<AudioSettingsPanelProps> { return { onBackButtonClick: () => this._deps.routerInteraction.goBack(), onSave: (data) => this._deps.audioSettings.setData(data), checkUserMedia: () => this._deps.audioSettings.getUserMedia(), }; } } export { AudioSettingsUI };