/* istanbul ignore file */ // TODO: that component still not completely yet, view in calling settings, layout style issue, still in Technical Preview import { useAudio, useMountState } from '@ringcentral/juno'; import type { FunctionComponent } from 'react'; import React, { useEffect, useRef, useState } from 'react'; import type { AudioFileReaderProps, RingtoneProps } from './Ringtone.interface'; import i18n from './i18n'; import styles from './styles.scss'; const AudioFileReader: FunctionComponent = ({ currentLocale, defaultFileName, defaultDataUrl, fileName = null, dataUrl = null, onChange, onReset, }) => { const isMountedRef = useMountState(); const inputElRef = useRef(null); const [playing, setPlaying] = useState(false); const audio = useAudio((audio) => { audio.onplay = () => setPlaying(true); audio.onpause = () => setPlaying(false); if (dataUrl) { audio.src = dataUrl; } }); useEffect(() => { audio.pause(); audio.currentTime = 0; setPlaying(false); if (dataUrl) { audio.src = dataUrl; } }, [audio, dataUrl]); const resetButton = fileName !== defaultFileName || dataUrl !== defaultDataUrl ? ( ) : null; return (
File: {fileName}
{resetButton}
{ if (currentTarget?.files?.length) { const file = currentTarget.files[0]; const reader = new FileReader(); reader.onload = () => { if (isMountedRef.current) { onChange({ fileName: file.name, dataUrl: reader.result as string, }); // reset input currentTarget.value = ''; } }; reader.readAsDataURL(file); } }} />
); }; export const RingTone: FunctionComponent = ({ currentLocale, incomingAudio, incomingAudioFile, outgoingAudio, outgoingAudioFile, defaultIncomingAudio, defaultIncomingAudioFile, defaultOutgoingAudio, defaultOutgoingAudioFile, showRingToneSettings, setIncomingAudio, setOutgoingAudio, resetIncomingAudio, resetOutgoingAudio, }) => { if (showRingToneSettings) { return ( // newline
{`${i18n.getString('ringtones', currentLocale)} (Technical Preview)`}
{i18n.getString('incomingRingtone', currentLocale)}
{ setIncomingAudio?.({ fileName, dataUrl }); }, onReset: resetIncomingAudio, }} />
{i18n.getString('outgoingRingtone', currentLocale)}
{ setOutgoingAudio?.({ fileName, dataUrl }); }, onReset: resetOutgoingAudio, }} />
); } return null; };