media-chrome
Version:
Custom elements (web components) for making audio and video player controls that look great in your website or app.
35 lines (30 loc) • 1 kB
text/typescript
import { t } from '../utils/i18n.js';
export type MediaErrorLike = {
code: number;
message: string;
[key: string]: any;
};
const defaultErrorTitles = {
2: t('Network Error'),
3: t('Decode Error'),
4: t('Source Not Supported'),
5: t('Encryption Error'),
};
const defaultErrorMessages = {
2: t('A network error caused the media download to fail.'),
3: t(
'A media error caused playback to be aborted. The media could be corrupt or your browser does not support this format.'
),
4: t(
'An unsupported error occurred. The server or network failed, or your browser does not support this format.'
),
5: t('The media is encrypted and there are no keys to decrypt it.'),
};
// Returning null makes the error not show up in the UI.
export const formatError = (error: MediaErrorLike) => {
if (error.code === 1) return null;
return {
title: defaultErrorTitles[error.code] ?? `Error ${error.code}`,
message: defaultErrorMessages[error.code] ?? error.message,
};
};