Update types: attachments may not have url property

This commit is contained in:
Fedor Indutny 2021-03-16 10:49:19 -07:00 committed by Josh Perez
parent aeab3f8d16
commit f41ffda3e0
5 changed files with 19 additions and 16 deletions

View file

@ -186,8 +186,6 @@ story.add('Blurhash', () => {
const props = {
...defaultProps,
blurHash: 'thisisafakeblurhashthatwasmadeup',
// eslint-disable-next-line @typescript-eslint/no-explicit-any
url: undefined as any,
};
return <Image {...props} />;
@ -198,8 +196,6 @@ story.add('undefined blurHash (light)', () => {
const props = {
...defaultProps,
blurHash: undefined,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
url: undefined as any,
theme: ThemeType.light,
};
@ -211,8 +207,6 @@ story.add('undefined blurHash (dark)', () => {
const props = {
...defaultProps,
blurHash: undefined,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
url: undefined as any,
theme: ThemeType.dark,
};
@ -225,8 +219,6 @@ story.add('Missing Image', () => {
...defaultProps,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
attachment: undefined as any,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
url: undefined as any,
};
return <Image {...props} />;

View file

@ -12,7 +12,7 @@ import { AttachmentType, hasNotDownloaded } from '../../types/Attachment';
export type Props = {
alt: string;
attachment: AttachmentType;
url: string;
url?: string;
height?: number;
width?: number;

View file

@ -759,8 +759,6 @@ story.add('Audio with Not Downloaded Attachment', () => {
{
contentType: AUDIO_MP3,
fileName: 'incompetech-com-Agnus-Dei-X.mp3',
// eslint-disable-next-line @typescript-eslint/no-explicit-any
url: undefined as any,
},
],
status: 'sent',
@ -775,8 +773,6 @@ story.add('Audio with Pending Attachment', () => {
{
contentType: AUDIO_MP3,
fileName: 'incompetech-com-Agnus-Dei-X.mp3',
// eslint-disable-next-line @typescript-eslint/no-explicit-any
url: undefined as any,
pending: true,
},
],

View file

@ -256,6 +256,13 @@ export const MessageAudio: React.FC<Props> = (props: Props) => {
(async () => {
try {
if (!attachment.url) {
throw new Error(
'Expected attachment url in the MessageAudio with ' +
`state: ${state}`
);
}
const { peaks: newPeaks, duration: newDuration } = await loadAudio({
audioContext,
waveformCache,
@ -374,6 +381,12 @@ export const MessageAudio: React.FC<Props> = (props: Props) => {
audio.pause();
}
if (!attachment.url) {
throw new Error(
'Expected attachment url in the MessageAudio with ' +
`state: ${state}`
);
}
audio.src = attachment.url;
}
};

View file

@ -28,7 +28,7 @@ export type AttachmentType = {
/** Not included in protobuf, needs to be pulled from flags */
isVoiceMessage?: boolean;
/** For messages not already on disk, this will be a data url */
url: string;
url?: string;
size?: number;
fileSize?: string;
pending?: boolean;
@ -107,7 +107,9 @@ export function canDisplayImage(
);
}
export function getThumbnailUrl(attachment: AttachmentType): string {
export function getThumbnailUrl(
attachment: AttachmentType
): string | undefined {
if (attachment.thumbnail) {
return attachment.thumbnail.url;
}
@ -115,7 +117,7 @@ export function getThumbnailUrl(attachment: AttachmentType): string {
return getUrl(attachment);
}
export function getUrl(attachment: AttachmentType): string {
export function getUrl(attachment: AttachmentType): string | undefined {
if (attachment.screenshot) {
return attachment.screenshot.url;
}