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
JavaScript
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