Changeset View
Changeset View
Standalone View
Standalone View
lib/actions/upload-actions.js
// @flow | // @flow | ||||
import type { Shape } from '../types/core.js'; | import type { Shape } from '../types/core.js'; | ||||
import type { | import type { | ||||
UploadMediaMetadataRequest, | |||||
UploadMultimediaResult, | UploadMultimediaResult, | ||||
Dimensions, | Dimensions, | ||||
} from '../types/media-types.js'; | } from '../types/media-types'; | ||||
import type { CallServerEndpoint } from '../utils/call-server-endpoint.js'; | import type { CallServerEndpoint } from '../utils/call-server-endpoint.js'; | ||||
import type { UploadBlob } from '../utils/upload-blob.js'; | import type { UploadBlob } from '../utils/upload-blob.js'; | ||||
export type MultimediaUploadCallbacks = Shape<{ | export type MultimediaUploadCallbacks = Shape<{ | ||||
onProgress: (percent: number) => void, | onProgress: (percent: number) => void, | ||||
abortHandler: (abort: () => void) => void, | abortHandler: (abort: () => void) => void, | ||||
uploadBlob: UploadBlob, | uploadBlob: UploadBlob, | ||||
}>; | }>; | ||||
export type MultimediaUploadExtras = Shape<{ | export type MultimediaUploadExtras = Shape<{ | ||||
...Dimensions, | ...Dimensions, | ||||
loop: boolean, | loop: boolean, | ||||
encryptionKey?: string, | encryptionKey?: string, | ||||
}>; | }>; | ||||
const uploadMediaMetadata = | |||||
( | |||||
callServerEndpoint: CallServerEndpoint, | |||||
): ((input: UploadMediaMetadataRequest) => Promise<UploadMultimediaResult>) => | |||||
async input => { | |||||
const response = await callServerEndpoint('upload_media_metadata', input); | |||||
return { | |||||
id: response.id, | |||||
uri: response.uri, | |||||
mediaType: response.mediaType, | |||||
dimensions: response.dimensions, | |||||
loop: response.loop, | |||||
}; | |||||
}; | |||||
const uploadMultimedia = | const uploadMultimedia = | ||||
( | ( | ||||
callServerEndpoint: CallServerEndpoint, | callServerEndpoint: CallServerEndpoint, | ||||
): (( | ): (( | ||||
multimedia: Object, | multimedia: Object, | ||||
extras: MultimediaUploadExtras, | extras: MultimediaUploadExtras, | ||||
callbacks?: MultimediaUploadCallbacks, | callbacks?: MultimediaUploadCallbacks, | ||||
) => Promise<UploadMultimediaResult>) => | ) => Promise<UploadMultimediaResult>) => | ||||
▲ Show 20 Lines • Show All 49 Lines • ▼ Show 20 Lines | |||||
const deleteUpload = | const deleteUpload = | ||||
(callServerEndpoint: CallServerEndpoint): ((id: string) => Promise<void>) => | (callServerEndpoint: CallServerEndpoint): ((id: string) => Promise<void>) => | ||||
async id => { | async id => { | ||||
await callServerEndpoint('delete_upload', { id }); | await callServerEndpoint('delete_upload', { id }); | ||||
}; | }; | ||||
export { | export { | ||||
uploadMultimedia, | uploadMultimedia, | ||||
uploadMediaMetadata, | |||||
updateMultimediaMessageMediaActionType, | updateMultimediaMessageMediaActionType, | ||||
deleteUpload, | deleteUpload, | ||||
}; | }; |