drop support for old file server avatar download

pull/1624/head
Audric Ackermann 4 years ago
parent 88036edd38
commit 7d73f9a593
No known key found for this signature in database
GPG Key ID: 999F434D76324AD4

@ -35,21 +35,14 @@ export async function downloadAttachment(attachment: any) {
}
window?.log?.info('Download v2 file server attachment');
res = await FSv2.downloadFileFromFSv2(attachmentId);
} else if (!defaultFileserver) {
// TODO: we need attachments to remember which API should be used to retrieve them
const serverAPI = await window.lokiPublicChatAPI.findOrCreateServer(serverUrl);
if (serverAPI) {
res = await serverAPI.downloadAttachment(attachment.url);
}
}
// Fallback to using the default fileserver
if (defaultFileserver || !res || res.byteLength === 0) {
res = await window.lokiFileServerAPI.downloadAttachment(attachment.url);
} else {
window.log.warn(
'downloadAttachment attachment is neither opengroup attachment nor fsv2... Dropping it'
);
throw new Error('Attachment url is not opengroupv2 nor fileserver v2. Unsupported');
}
if (res.byteLength === 0) {
if (!res?.byteLength) {
window?.log?.error('Failed to download attachment. Length is 0');
throw new Error(`Failed to download attachment. Length is 0 for ${attachment.url}`);
}

@ -50,38 +50,43 @@ async function updateProfile(
const needsUpdate = !prevPointer || !_.isEqual(prevPointer, profile.profilePicture);
if (needsUpdate) {
const downloaded = await downloadAttachment({
url: profile.profilePicture,
isRaw: true,
});
// null => use placeholder with color and first letter
let path = null;
if (profileKey) {
// Convert profileKey to ArrayBuffer, if needed
const encoding = typeof profileKey === 'string' ? 'base64' : null;
try {
const profileKeyArrayBuffer = dcodeIO.ByteBuffer.wrap(
profileKey,
encoding
).toArrayBuffer();
const decryptedData = await textsecure.crypto.decryptProfile(
downloaded.data,
profileKeyArrayBuffer
);
const upgraded = await Signal.Migrations.processNewAttachment({
...downloaded,
data: decryptedData,
});
// Only update the convo if the download and decrypt is a success
conversation.set('avatarPointer', profile.profilePicture);
conversation.set('profileKey', profileKey);
({ path } = upgraded);
} catch (e) {
window?.log?.error(`Could not decrypt profile image: ${e}`);
try {
const downloaded = await downloadAttachment({
url: profile.profilePicture,
isRaw: true,
});
// null => use placeholder with color and first letter
let path = null;
if (profileKey) {
// Convert profileKey to ArrayBuffer, if needed
const encoding = typeof profileKey === 'string' ? 'base64' : null;
try {
const profileKeyArrayBuffer = dcodeIO.ByteBuffer.wrap(
profileKey,
encoding
).toArrayBuffer();
const decryptedData = await textsecure.crypto.decryptProfile(
downloaded.data,
profileKeyArrayBuffer
);
const upgraded = await Signal.Migrations.processNewAttachment({
...downloaded,
data: decryptedData,
});
// Only update the convo if the download and decrypt is a success
conversation.set('avatarPointer', profile.profilePicture);
conversation.set('profileKey', profileKey);
({ path } = upgraded);
} catch (e) {
window?.log?.error(`Could not decrypt profile image: ${e}`);
}
}
newProfile.avatar = path;
} catch (e) {
window.log.warn('Failed to download attachment at', profile.profilePicture);
return;
}
newProfile.avatar = path;
}
} else {
newProfile.avatar = null;

Loading…
Cancel
Save