Resolve "for chat mode, auto-play next audio message"

This commit is contained in:
N Pex 2023-05-26 15:56:59 +00:00
parent f49d374a76
commit daa52be9c0
11 changed files with 455 additions and 252 deletions

View file

@ -53,7 +53,22 @@ class UploadPromise extends Promise {
}
class Util {
getAttachment(matrixClient, event, progressCallback, asBlob = false) {
getAttachmentUrlAndDuration(event) {
return new Promise((resolve, reject) => {
const content = event.getContent();
if (content.url != null) {
resolve([content.url, content.info.duration]);
return;
}
if (content.file && content.file.url) {
resolve([content.file.url, content.info.duration]);
} else {
reject("No url found!");
}
});
}
getAttachment(matrixClient, event, progressCallback, asBlob = false, abortController = undefined) {
return new Promise((resolve, reject) => {
const content = event.getContent();
if (content.url != null) {
@ -73,6 +88,7 @@ class Util {
}
axios.get(url, {
signal: abortController ? abortController.signal : undefined,
responseType: 'arraybuffer', onDownloadProgress: progressEvent => {
let percentCompleted = Math.floor((progressEvent.loaded * 100) / progressEvent.total);
if (progressCallback) {
@ -337,6 +353,11 @@ class Util {
mimetype: file.type,
size: file.size
};
// If audio, send duration in ms as well
if (file.duration) {
info.duration = file.duration;
}
var description = file.name;
var msgtype = 'm.image';