Media send/receive bug fixes
This commit is contained in:
parent
bf290a5cd7
commit
83d8e03f97
1 changed files with 22 additions and 9 deletions
|
|
@ -93,6 +93,7 @@ class Util {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const content = event.getContent();
|
const content = event.getContent();
|
||||||
var url = null;
|
var url = null;
|
||||||
|
var mime = "image/png";
|
||||||
var file = null;
|
var file = null;
|
||||||
let decrypt = true;
|
let decrypt = true;
|
||||||
if (content.url != null) {
|
if (content.url != null) {
|
||||||
|
|
@ -106,6 +107,9 @@ class Util {
|
||||||
useAuthedMedia
|
useAuthedMedia
|
||||||
);
|
);
|
||||||
decrypt = false;
|
decrypt = false;
|
||||||
|
if (content.info) {
|
||||||
|
mime = content.info.mimetype;
|
||||||
|
}
|
||||||
} else if (content.file && content.file.url) {
|
} else if (content.file && content.file.url) {
|
||||||
file = content.file;
|
file = content.file;
|
||||||
url = matrixClient.mxcUrlToHttp(
|
url = matrixClient.mxcUrlToHttp(
|
||||||
|
|
@ -117,6 +121,7 @@ class Util {
|
||||||
undefined,
|
undefined,
|
||||||
useAuthedMedia
|
useAuthedMedia
|
||||||
);
|
);
|
||||||
|
mime = file.mimetype;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (url == null) {
|
if (url == null) {
|
||||||
|
|
@ -142,9 +147,9 @@ class Util {
|
||||||
})
|
})
|
||||||
.then((bytes) => {
|
.then((bytes) => {
|
||||||
if (asBlob) {
|
if (asBlob) {
|
||||||
resolve(new Blob([bytes.buffer], { type: file.mimetype }));
|
resolve(new Blob([bytes.buffer], { type: mime }));
|
||||||
} else {
|
} else {
|
||||||
resolve(URL.createObjectURL(new Blob([bytes.buffer], { type: file.mimetype })));
|
resolve(URL.createObjectURL(new Blob([bytes.buffer], { type: mime })));
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
|
|
@ -163,6 +168,7 @@ class Util {
|
||||||
return new Promise((resolve, reject) => {
|
return new Promise((resolve, reject) => {
|
||||||
const content = event.getContent();
|
const content = event.getContent();
|
||||||
var url = null;
|
var url = null;
|
||||||
|
var mime = "image/png";
|
||||||
var file = null;
|
var file = null;
|
||||||
let decrypt = true;
|
let decrypt = true;
|
||||||
if (content.url != null) {
|
if (content.url != null) {
|
||||||
|
|
@ -176,6 +182,9 @@ class Util {
|
||||||
useAuthedMedia
|
useAuthedMedia
|
||||||
);
|
);
|
||||||
decrypt = false;
|
decrypt = false;
|
||||||
|
if (content.info) {
|
||||||
|
mime = content.info.mimetype;
|
||||||
|
}
|
||||||
} else if (content && content.info && content.info.thumbnail_file && content.info.thumbnail_file.url) {
|
} else if (content && content.info && content.info.thumbnail_file && content.info.thumbnail_file.url) {
|
||||||
file = content.info.thumbnail_file;
|
file = content.info.thumbnail_file;
|
||||||
// var width = w;
|
// var width = w;
|
||||||
|
|
@ -199,6 +208,7 @@ class Util {
|
||||||
undefined,
|
undefined,
|
||||||
useAuthedMedia
|
useAuthedMedia
|
||||||
);
|
);
|
||||||
|
mime = file.mimetype;
|
||||||
} else if (
|
} else if (
|
||||||
content.file &&
|
content.file &&
|
||||||
content.file.url &&
|
content.file.url &&
|
||||||
|
|
@ -216,6 +226,7 @@ class Util {
|
||||||
undefined,
|
undefined,
|
||||||
useAuthedMedia
|
useAuthedMedia
|
||||||
);
|
);
|
||||||
|
mime = file.mimetype;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (url == null) {
|
if (url == null) {
|
||||||
|
|
@ -224,17 +235,17 @@ class Util {
|
||||||
}
|
}
|
||||||
|
|
||||||
axios
|
axios
|
||||||
.get(url, {
|
.get(url, useAuthedMedia ? {
|
||||||
responseType: "arraybuffer",
|
responseType: "arraybuffer",
|
||||||
headers: {
|
headers: {
|
||||||
Authorization: `Bearer ${matrixClient.getAccessToken()}`,
|
Authorization: `Bearer ${matrixClient.getAccessToken()}`,
|
||||||
},
|
},
|
||||||
})
|
} : { responseType: "arraybuffer" })
|
||||||
.then((response) => {
|
.then((response) => {
|
||||||
return decrypt ? this.decryptIfNeeded(file, response) : Promise.resolve({ buffer: response.data });
|
return decrypt ? this.decryptIfNeeded(file, response) : Promise.resolve({ buffer: response.data });
|
||||||
})
|
})
|
||||||
.then((bytes) => {
|
.then((bytes) => {
|
||||||
resolve(URL.createObjectURL(new Blob([bytes.buffer], { type: file.mimetype })));
|
resolve(URL.createObjectURL(new Blob([bytes.buffer], { type: mime })));
|
||||||
})
|
})
|
||||||
.catch((err) => {
|
.catch((err) => {
|
||||||
console.log("Download error: ", err);
|
console.log("Download error: ", err);
|
||||||
|
|
@ -423,7 +434,7 @@ class Util {
|
||||||
const uploadPromise = new UploadPromise(undefined);
|
const uploadPromise = new UploadPromise(undefined);
|
||||||
uploadPromise.wrappedPromise = new Promise((resolve, reject) => {
|
uploadPromise.wrappedPromise = new Promise((resolve, reject) => {
|
||||||
var reader = new FileReader();
|
var reader = new FileReader();
|
||||||
reader.onload = (e) => {
|
reader.onload = async (e) => {
|
||||||
if (uploadPromise.aborted) {
|
if (uploadPromise.aborted) {
|
||||||
reject("Aborted");
|
reject("Aborted");
|
||||||
return;
|
return;
|
||||||
|
|
@ -509,7 +520,7 @@ class Util {
|
||||||
data = encryptedBytes;
|
data = encryptedBytes;
|
||||||
|
|
||||||
// Calculate sha256
|
// Calculate sha256
|
||||||
var hash = new Uint8Array(sha256.create().update(data).arrayBuffer());
|
let hash = await crypto.subtle.digest("SHA-256", data);
|
||||||
|
|
||||||
const jwk = {
|
const jwk = {
|
||||||
kty: "oct",
|
kty: "oct",
|
||||||
|
|
@ -541,7 +552,7 @@ class Util {
|
||||||
if (response.error) {
|
if (response.error) {
|
||||||
return reject(response.error);
|
return reject(response.error);
|
||||||
}
|
}
|
||||||
encryptedFile.url = response.content_uri;
|
messageContent.file.url = response.content_uri;
|
||||||
return msgtype == "m.audio" ? this.generateWaveform(fileContents, messageContent) : true;
|
return msgtype == "m.audio" ? this.generateWaveform(fileContents, messageContent) : true;
|
||||||
})
|
})
|
||||||
.then(() => {
|
.then(() => {
|
||||||
|
|
@ -1126,7 +1137,9 @@ class Util {
|
||||||
}
|
}
|
||||||
|
|
||||||
getFileSizeFormatted(event) {
|
getFileSizeFormatted(event) {
|
||||||
return prettyBytes(this.getFileSize(event));
|
const size = this.getFileSize(event);
|
||||||
|
const res = prettyBytes(size);
|
||||||
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
isFileTypeAPK(event) {
|
isFileTypeAPK(event) {
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue