Changeset View
Changeset View
Standalone View
Standalone View
lib/utils/message-ops-utils.js
Show First 20 Lines • Show All 46 Lines • ▼ Show 20 Lines | clientDBMediaInfos.push({ | ||||
id: m.id, | id: m.id, | ||||
uri: mediaURI, | uri: mediaURI, | ||||
type: type, | type: type, | ||||
extras: JSON.stringify({ | extras: JSON.stringify({ | ||||
dimensions: m.dimensions, | dimensions: m.dimensions, | ||||
loop: type === 'video' ? m.loop : false, | loop: type === 'video' ? m.loop : false, | ||||
local_media_selection: m.localMediaSelection, | local_media_selection: m.localMediaSelection, | ||||
encryption_key: m.encryptionKey, | encryption_key: m.encryptionKey, | ||||
thumb_hash: m.thumbHash ?? undefined, | |||||
}), | }), | ||||
}); | }); | ||||
if (m.type === 'video' || m.type === 'encrypted_video') { | if (m.type === 'video' || m.type === 'encrypted_video') { | ||||
const thumbnailURI = | const thumbnailURI = | ||||
m.type === 'encrypted_video' ? m.thumbnailHolder : m.thumbnailURI; | m.type === 'encrypted_video' ? m.thumbnailHolder : m.thumbnailURI; | ||||
clientDBMediaInfos.push({ | clientDBMediaInfos.push({ | ||||
id: m.thumbnailID, | id: m.thumbnailID, | ||||
uri: thumbnailURI, | uri: thumbnailURI, | ||||
type: 'photo', | type: 'photo', | ||||
extras: JSON.stringify({ | extras: JSON.stringify({ | ||||
dimensions: m.dimensions, | dimensions: m.dimensions, | ||||
loop: false, | loop: false, | ||||
encryption_key: m.thumbnailEncryptionKey, | encryption_key: m.thumbnailEncryptionKey, | ||||
thumb_hash: m.thumbnailThumbHash ?? undefined, | |||||
}), | }), | ||||
}); | }); | ||||
} | } | ||||
} | } | ||||
return clientDBMediaInfos; | return clientDBMediaInfos; | ||||
} | } | ||||
function translateClientDBMediaInfoToImage( | function translateClientDBMediaInfoToImage( | ||||
clientDBMediaInfo: ClientDBMediaInfo, | clientDBMediaInfo: ClientDBMediaInfo, | ||||
): Image { | ): Image { | ||||
const { dimensions, local_media_selection } = JSON.parse( | const { dimensions, local_media_selection, thumb_hash } = JSON.parse( | ||||
clientDBMediaInfo.extras, | clientDBMediaInfo.extras, | ||||
); | ); | ||||
if (!local_media_selection) { | if (!local_media_selection) { | ||||
return { | return { | ||||
id: clientDBMediaInfo.id, | id: clientDBMediaInfo.id, | ||||
uri: clientDBMediaInfo.uri, | uri: clientDBMediaInfo.uri, | ||||
type: 'photo', | type: 'photo', | ||||
dimensions: dimensions, | dimensions: dimensions, | ||||
thumbHash: thumb_hash, | |||||
}; | }; | ||||
} | } | ||||
return { | return { | ||||
id: clientDBMediaInfo.id, | id: clientDBMediaInfo.id, | ||||
uri: clientDBMediaInfo.uri, | uri: clientDBMediaInfo.uri, | ||||
type: 'photo', | type: 'photo', | ||||
dimensions: dimensions, | dimensions: dimensions, | ||||
localMediaSelection: local_media_selection, | localMediaSelection: local_media_selection, | ||||
thumbHash: thumb_hash, | |||||
}; | }; | ||||
} | } | ||||
function translateClientDBMediaInfosToMedia( | function translateClientDBMediaInfosToMedia( | ||||
clientDBMessageInfo: ClientDBMessageInfo, | clientDBMessageInfo: ClientDBMessageInfo, | ||||
): $ReadOnlyArray<Media> { | ): $ReadOnlyArray<Media> { | ||||
if (parseInt(clientDBMessageInfo.type) === messageTypes.IMAGES) { | if (parseInt(clientDBMessageInfo.type) === messageTypes.IMAGES) { | ||||
if (!clientDBMessageInfo.media_infos) { | if (!clientDBMessageInfo.media_infos) { | ||||
Show All 18 Lines | ): $ReadOnlyArray<Media> { | ||||
} | } | ||||
const messageContent: $ReadOnlyArray<MediaMessageServerDBContent> = | const messageContent: $ReadOnlyArray<MediaMessageServerDBContent> = | ||||
JSON.parse(clientDBMessageInfo.content); | JSON.parse(clientDBMessageInfo.content); | ||||
const translatedMedia: Media[] = []; | const translatedMedia: Media[] = []; | ||||
for (const media of messageContent) { | for (const media of messageContent) { | ||||
if (media.type === 'photo') { | if (media.type === 'photo') { | ||||
const extras = JSON.parse(mediaMap[media.uploadID].extras); | const extras = JSON.parse(mediaMap[media.uploadID].extras); | ||||
const { dimensions, encryption_key: encryptionKey } = extras; | const { | ||||
dimensions, | |||||
encryption_key: encryptionKey, | |||||
thumb_hash: thumbHash, | |||||
} = extras; | |||||
let image; | let image; | ||||
if (encryptionKey) { | if (encryptionKey) { | ||||
image = { | image = { | ||||
id: media.uploadID, | id: media.uploadID, | ||||
type: 'encrypted_photo', | type: 'encrypted_photo', | ||||
holder: mediaMap[media.uploadID].uri, | holder: mediaMap[media.uploadID].uri, | ||||
dimensions, | dimensions, | ||||
encryptionKey, | encryptionKey, | ||||
thumbHash, | |||||
}; | }; | ||||
} else { | } else { | ||||
image = { | image = { | ||||
id: media.uploadID, | id: media.uploadID, | ||||
type: 'photo', | type: 'photo', | ||||
uri: mediaMap[media.uploadID].uri, | uri: mediaMap[media.uploadID].uri, | ||||
dimensions, | dimensions, | ||||
thumbHash, | |||||
}; | }; | ||||
} | } | ||||
translatedMedia.push(image); | translatedMedia.push(image); | ||||
} else if (media.type === 'video') { | } else if (media.type === 'video') { | ||||
const extras = JSON.parse(mediaMap[media.uploadID].extras); | const extras = JSON.parse(mediaMap[media.uploadID].extras); | ||||
const { | const { | ||||
dimensions, | dimensions, | ||||
loop, | loop, | ||||
local_media_selection: localMediaSelection, | local_media_selection: localMediaSelection, | ||||
encryption_key: encryptionKey, | encryption_key: encryptionKey, | ||||
} = extras; | } = extras; | ||||
const { | |||||
encryption_key: thumbnailEncryptionKey, | |||||
thumb_hash: thumbnailThumbHash, | |||||
} = JSON.parse(mediaMap[media.thumbnailUploadID].extras); | |||||
if (encryptionKey) { | if (encryptionKey) { | ||||
const thumbnailEncryptionKey = JSON.parse( | |||||
mediaMap[media.thumbnailUploadID].extras, | |||||
).encryption_key; | |||||
const video: EncryptedVideo = { | const video: EncryptedVideo = { | ||||
id: media.uploadID, | id: media.uploadID, | ||||
type: 'encrypted_video', | type: 'encrypted_video', | ||||
holder: mediaMap[media.uploadID].uri, | holder: mediaMap[media.uploadID].uri, | ||||
dimensions, | dimensions, | ||||
loop, | loop, | ||||
encryptionKey, | encryptionKey, | ||||
thumbnailID: media.thumbnailUploadID, | thumbnailID: media.thumbnailUploadID, | ||||
thumbnailHolder: mediaMap[media.thumbnailUploadID].uri, | thumbnailHolder: mediaMap[media.thumbnailUploadID].uri, | ||||
thumbnailEncryptionKey, | thumbnailEncryptionKey, | ||||
thumbnailThumbHash, | |||||
}; | }; | ||||
translatedMedia.push(video); | translatedMedia.push(video); | ||||
} else { | } else { | ||||
const video: Video = { | const video: Video = { | ||||
id: media.uploadID, | id: media.uploadID, | ||||
uri: mediaMap[media.uploadID].uri, | uri: mediaMap[media.uploadID].uri, | ||||
type: 'video', | type: 'video', | ||||
dimensions, | dimensions, | ||||
loop, | loop, | ||||
thumbnailID: media.thumbnailUploadID, | thumbnailID: media.thumbnailUploadID, | ||||
thumbnailURI: mediaMap[media.thumbnailUploadID].uri, | thumbnailURI: mediaMap[media.thumbnailUploadID].uri, | ||||
thumbnailThumbHash, | |||||
}; | }; | ||||
translatedMedia.push( | translatedMedia.push( | ||||
localMediaSelection ? { ...video, localMediaSelection } : video, | localMediaSelection ? { ...video, localMediaSelection } : video, | ||||
); | ); | ||||
} | } | ||||
} | } | ||||
} | } | ||||
return translatedMedia; | return translatedMedia; | ||||
▲ Show 20 Lines • Show All 152 Lines • Show Last 20 Lines |