snappymail/dev/Model/ComposeAttachment.js

68 lines
1.5 KiB
JavaScript
Raw Normal View History

import { FileInfo } from 'Common/File';
2016-07-07 05:03:30 +08:00
2019-07-05 03:19:24 +08:00
import { AbstractModel } from 'Knoin/AbstractModel';
2016-07-07 05:03:30 +08:00
2021-01-22 23:32:08 +08:00
export class ComposeAttachmentModel extends AbstractModel {
2016-07-07 05:03:30 +08:00
/**
* @param {string} id
* @param {string} fileName
* @param {?number=} size = null
* @param {boolean=} isInline = false
* @param {boolean=} isLinked = false
* @param {string=} CID = ''
* @param {string=} contentLocation = ''
*/
2019-07-05 03:19:24 +08:00
constructor(id, fileName, size = null, isInline = false, isLinked = false, CID = '', contentLocation = '') {
2020-10-19 01:19:45 +08:00
super();
2016-07-07 05:03:30 +08:00
this.id = id;
this.isInline = !!isInline;
this.isLinked = !!isLinked;
this.CID = CID;
this.contentLocation = contentLocation;
this.fromMessage = false;
2020-10-25 18:46:58 +08:00
this.addObservables({
fileName: fileName,
size: size,
tempName: '',
progress: 0,
error: '',
waiting: true,
uploading: false,
enabled: true,
complete: false
});
2016-07-07 05:03:30 +08:00
2020-10-25 21:14:14 +08:00
this.addComputables({
progressText: () => {
const p = this.progress();
return 0 === p ? '' : '' + (98 < p ? 100 : p) + '%';
},
2016-07-07 05:03:30 +08:00
2020-10-25 21:14:14 +08:00
progressStyle: () => {
const p = this.progress();
return 0 === p ? '' : 'width:' + (98 < p ? 100 : p) + '%';
},
2016-07-07 05:03:30 +08:00
2020-10-25 21:14:14 +08:00
title: () => this.error() || this.fileName(),
2016-07-07 05:03:30 +08:00
2020-10-25 21:14:14 +08:00
friendlySize: () => {
const localSize = this.size();
return null === localSize ? '' : FileInfo.friendlySize(localSize);
2020-10-25 21:14:14 +08:00
},
2016-07-07 05:03:30 +08:00
mimeType: () => FileInfo.getContentType(this.fileName()),
fileExt: () => FileInfo.getExtension(this.fileName())
2020-10-25 21:14:14 +08:00
});
2016-07-07 05:03:30 +08:00
}
/**
* @returns {string}
*/
iconClass() {
2021-04-13 20:11:17 +08:00
return FileInfo.getIconClass(this.fileExt(), this.mimeType());
2016-07-07 05:03:30 +08:00
}
}