Changeset View
Changeset View
Standalone View
Standalone View
lib/media/media-utils.js
// @flow | // @flow | ||||
import invariant from 'invariant'; | import invariant from 'invariant'; | ||||
import type { Media } from '../types/media-types.js'; | import type { Media } from '../types/media-types.js'; | ||||
import type { | import type { | ||||
MultimediaMessageInfo, | MultimediaMessageInfo, | ||||
RawMultimediaMessageInfo, | RawMultimediaMessageInfo, | ||||
} from '../types/message-types.js'; | } from '../types/message-types.js'; | ||||
import { isBlobServiceURI } from '../utils/blob-service.js'; | import { | ||||
isBlobServiceURI, | |||||
getBlobFetchableURL, | |||||
holderFromBlobServiceURI, | |||||
} from '../utils/blob-service.js'; | |||||
const maxDimensions = Object.freeze({ width: 1920, height: 1920 }); | const maxDimensions = Object.freeze({ width: 1920, height: 1920 }); | ||||
function contentStringForMediaArray(media: $ReadOnlyArray<Media>): string { | function contentStringForMediaArray(media: $ReadOnlyArray<Media>): string { | ||||
if (media.length === 0) { | if (media.length === 0) { | ||||
return 'corrupted media'; | return 'corrupted media'; | ||||
} else if (media.length === 1) { | } else if (media.length === 1) { | ||||
const type = media[0].type.replace('encrypted_', ''); | const type = media[0].type.replace('encrypted_', ''); | ||||
Show All 22 Lines | function isMediaBlobServiceHosted(media: Media): boolean { | ||||
return ( | return ( | ||||
(!!media.uri && isBlobServiceURI(media.uri)) || | (!!media.uri && isBlobServiceURI(media.uri)) || | ||||
(!!media.holder && isBlobServiceURI(media.holder)) || | (!!media.holder && isBlobServiceURI(media.holder)) || | ||||
(!!media.thumbnailURI && isBlobServiceURI(media.thumbnailURI)) || | (!!media.thumbnailURI && isBlobServiceURI(media.thumbnailURI)) || | ||||
(!!media.thumbnailHolder && isBlobServiceURI(media.thumbnailHolder)) | (!!media.thumbnailHolder && isBlobServiceURI(media.thumbnailHolder)) | ||||
); | ); | ||||
} | } | ||||
function fetchableMediaURI(uri: string): string { | |||||
if (isBlobServiceURI(uri)) { | |||||
const holder = holderFromBlobServiceURI(uri); | |||||
return getBlobFetchableURL(holder); | |||||
} | |||||
return uri; | |||||
} | |||||
function multimediaMessagePreview( | function multimediaMessagePreview( | ||||
messageInfo: MultimediaMessageInfo | RawMultimediaMessageInfo, | messageInfo: MultimediaMessageInfo | RawMultimediaMessageInfo, | ||||
): string { | ): string { | ||||
const mediaContentString = contentStringForMediaArray(messageInfo.media); | const mediaContentString = contentStringForMediaArray(messageInfo.media); | ||||
return `sent ${mediaContentString}`; | return `sent ${mediaContentString}`; | ||||
} | } | ||||
const localUploadPrefix = 'localUpload'; | const localUploadPrefix = 'localUpload'; | ||||
Show All 9 Lines | |||||
export { | export { | ||||
maxDimensions, | maxDimensions, | ||||
contentStringForMediaArray, | contentStringForMediaArray, | ||||
multimediaMessagePreview, | multimediaMessagePreview, | ||||
isLocalUploadID, | isLocalUploadID, | ||||
isMediaBlobServiceHosted, | isMediaBlobServiceHosted, | ||||
getNextLocalUploadID, | getNextLocalUploadID, | ||||
fetchableMediaURI, | |||||
}; | }; |