88 lines
3.4 KiB
JavaScript
88 lines
3.4 KiB
JavaScript
// /** ********************************************************************************
|
|
// Copyright 2024 Subteno - Timothée Vannier (https://www.subteno.com).
|
|
// License LGPL-3.0 or later (http://www.gnu.org/licenses/lgpl).
|
|
// **********************************************************************************/
|
|
import {Attachment} from "@mail/core/common/attachment_model";
|
|
import {patch} from "@web/core/utils/patch";
|
|
|
|
patch(Attachment.prototype, {
|
|
_handleImage() {
|
|
if (this.model_name && this.model_name === "dms.file") {
|
|
return `/web/content?id=${this.id}&field=content&model=dms.file&filename_field=name&download=false`;
|
|
}
|
|
return `/web/image/${this.id}?signature=${this.checksum}`;
|
|
},
|
|
_handlePdf() {
|
|
if (this.model_name && this.model_name === "dms.file") {
|
|
return (
|
|
"/web/content?id=" +
|
|
this.id +
|
|
"&field=content&model=dms.file" +
|
|
"&filename_field=name"
|
|
);
|
|
}
|
|
const pdf_lib = `/web/static/lib/pdfjs/web/viewer.html?file=`;
|
|
if (
|
|
!this.accessToken &&
|
|
this.originThread &&
|
|
this.originThread.model === "mail.channel"
|
|
) {
|
|
return `${pdf_lib}/mail/channel/${this.originThread.id}/attachment/${this.id}#pagemode=none`;
|
|
}
|
|
const accessToken = this.accessToken
|
|
? `?access_token%3D${this.accessToken}`
|
|
: "";
|
|
return `${pdf_lib}/web/content/${this.id}${accessToken}#pagemode=none`;
|
|
},
|
|
_handleYoutube() {
|
|
const urlArr = this.url.split("/");
|
|
let token = urlArr[urlArr.length - 1];
|
|
if (token.includes("watch")) {
|
|
token = token.split("v=")[1];
|
|
const amp = token.indexOf("&");
|
|
if (amp !== -1) {
|
|
token = token.substring(0, amp);
|
|
}
|
|
}
|
|
return `https://www.youtube.com/embed/${token}`;
|
|
},
|
|
get defaultSource() {
|
|
if (this.isImage) {
|
|
return this._handleImage();
|
|
}
|
|
if (this.isPdf) {
|
|
return this._handlePdf();
|
|
}
|
|
if (this.isUrlYoutube) {
|
|
return this._handleYoutube();
|
|
}
|
|
if (
|
|
!this.accessToken &&
|
|
this.originThread &&
|
|
this.originThread.model === "mail.channel"
|
|
) {
|
|
return `/mail/channel/${this.originThread.id}/attachment/${this.id}`;
|
|
}
|
|
const accessToken = this.accessToken ? `?access_token=${this.accessToken}` : "";
|
|
|
|
if (this.model_name && this.model_name === "dms.file") {
|
|
return `/web/content?id=${this.id}&field=content&model=dms.file&filename_field=name`;
|
|
}
|
|
return `/web/content/${this.id}${accessToken}`;
|
|
},
|
|
get downloadUrl() {
|
|
if (
|
|
!this.accessToken &&
|
|
this.originThread &&
|
|
this.originThread.model === "mail.channel"
|
|
) {
|
|
return `/mail/channel/${this.originThread.id}/attachment/${this.id}?download=true`;
|
|
}
|
|
if (this.model_name && this.model_name === "dms.file") {
|
|
return `/web/content?id=${this.id}&field=content&model=dms.file&filename_field=name&download=true`;
|
|
}
|
|
const accessToken = this.accessToken ? `access_token=${this.accessToken}&` : "";
|
|
return `/web/content/ir.attachment/${this.id}/datas?${accessToken}download=true`;
|
|
},
|
|
});
|