UNPKG

stream-chat-react-native-core

Version:

The official React Native and Expo components for Stream Chat, a service for building chat applications

75 lines 2.49 kB
Object.defineProperty(exports, "__esModule", { value: true }); exports.useAudioPlayer = void 0; var _react = require("react"); var _Notifications = require("../components/Notifications"); var _AudioPlayerContext = require("../contexts/audioPlayerContext/AudioPlayerContext"); var _ChatContext = require("../contexts/chatContext/ChatContext"); var _TranslationContext = require("../contexts/translationContext/TranslationContext"); var makeAudioPlayerId = ({ requester, src, id }) => `${requester ?? 'requester-unknown'}:${src}:${id ?? ''}`; var useAudioPlayer = ({ duration, mimeType, playbackRates, previewVoiceRecording, requester = '', type, uri, id: fileId }) => { var _useAudioPlayerContex = (0, _AudioPlayerContext.useAudioPlayerContext)(), audioPlayerPool = _useAudioPlayerContex.audioPlayerPool; var _useNotificationApi = (0, _Notifications.useNotificationApi)(), addNotification = _useNotificationApi.addNotification; var _useChatContext = (0, _ChatContext.useChatContext)(), client = _useChatContext.client; var _useTranslationContex = (0, _TranslationContext.useTranslationContext)(), t = _useTranslationContex.t; var hasNotificationManager = !!client?.notifications; var id = makeAudioPlayerId({ id: fileId, requester, src: uri ?? '' }); var onError = (0, _react.useCallback)(({ errCode, error }) => { if (!hasNotificationManager) return; var errorMessages = { 'failed-to-start': t('Failed to play the recording'), 'not-playable': t('Recording format is not supported and cannot be reproduced'), 'seek-not-supported': t('Cannot seek in the recording') }; var message = errorMessages[errCode]; addNotification({ message, options: { originalError: error ?? new Error(message), severity: 'error', type: 'browser:audio:playback:error' }, origin: { emitter: 'AudioPlayer' } }); }, [addNotification, hasNotificationManager, t]); var audioPlayer = (0, _react.useMemo)(() => audioPlayerPool?.getOrAddPlayer({ duration: duration ?? 0, id, mimeType: mimeType ?? '', onError, playbackRates, previewVoiceRecording, type: type ?? 'audio', uri: uri ?? '' }), [audioPlayerPool, duration, id, mimeType, onError, playbackRates, previewVoiceRecording, type, uri]); return audioPlayer; }; exports.useAudioPlayer = useAudioPlayer; //# sourceMappingURL=useAudioPlayer.js.map