mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-09-07 00:17:03 +03:00
Rename moment to time as it has nothing todo anymore with momentjs
Change some observables to static as they never change later
This commit is contained in:
parent
673126ae8a
commit
2084913a4d
7 changed files with 65 additions and 65 deletions
|
|
@ -144,7 +144,7 @@ export const
|
||||||
time = Date.parse(element.dateTime) / 1000;
|
time = Date.parse(element.dateTime) / 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
let key = element.dataset.momentFormat;
|
let key = element.dataset.timeFormat;
|
||||||
if (key) {
|
if (key) {
|
||||||
element.textContent = timestampToString(time, key);
|
element.textContent = timestampToString(time, key);
|
||||||
if ('FULL' !== key && 'FROMNOW' !== key) {
|
if ('FULL' !== key && 'FROMNOW' !== key) {
|
||||||
|
|
|
||||||
2
dev/External/User/ko.js
vendored
2
dev/External/User/ko.js
vendored
|
|
@ -103,7 +103,7 @@ Object.assign(ko.bindingHandlers, {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|
||||||
moment: {
|
time: {
|
||||||
init: ttn,
|
init: ttn,
|
||||||
update: ttn
|
update: ttn
|
||||||
},
|
},
|
||||||
|
|
|
||||||
|
|
@ -56,42 +56,51 @@ export class MessageModel extends AbstractModel {
|
||||||
constructor() {
|
constructor() {
|
||||||
super();
|
super();
|
||||||
|
|
||||||
this.folder = '';
|
Object.assign(this, {
|
||||||
this.uid = 0;
|
folder: '',
|
||||||
this.hash = '';
|
uid: 0,
|
||||||
this.from = new EmailCollectionModel;
|
hash: '',
|
||||||
this.to = new EmailCollectionModel;
|
from: new EmailCollectionModel,
|
||||||
this.cc = new EmailCollectionModel;
|
to: new EmailCollectionModel,
|
||||||
this.bcc = new EmailCollectionModel;
|
cc: new EmailCollectionModel,
|
||||||
this.sender = new EmailCollectionModel;
|
bcc: new EmailCollectionModel,
|
||||||
this.replyTo = new EmailCollectionModel;
|
sender: new EmailCollectionModel,
|
||||||
this.deliveredTo = new EmailCollectionModel;
|
replyTo: new EmailCollectionModel,
|
||||||
this.body = null;
|
deliveredTo: new EmailCollectionModel,
|
||||||
this.draftInfo = [];
|
body: null,
|
||||||
this.dkim = [];
|
draftInfo: [],
|
||||||
this.spf = [];
|
dkim: [],
|
||||||
this.dmarc = [];
|
spf: [],
|
||||||
this.messageId = '';
|
dmarc: [],
|
||||||
this.inReplyTo = '';
|
messageId: '',
|
||||||
this.references = '';
|
inReplyTo: '',
|
||||||
this.autocrypt = {/*addr:'', 'prefer-encrypt':'nopreference', keydata:'BASE64'*/};
|
references: '',
|
||||||
|
autocrypt: {/*addr:'', 'prefer-encrypt':'nopreference', keydata:'BASE64'*/},
|
||||||
|
hasVirus: null, // or boolean when scanned
|
||||||
|
priority: 3, // Normal
|
||||||
|
internalTimestamp: 0,
|
||||||
|
senderEmailsString: '',
|
||||||
|
senderClearEmailsString: '',
|
||||||
|
isSpam: false,
|
||||||
|
spamScore: 0,
|
||||||
|
spamResult: '',
|
||||||
|
size: 0,
|
||||||
|
readReceipt: '',
|
||||||
|
preview: null,
|
||||||
|
|
||||||
|
attachments: ko.observableArray(new AttachmentCollectionModel),
|
||||||
|
threads: ko.observableArray(),
|
||||||
|
threadUnseen: ko.observableArray(),
|
||||||
|
unsubsribeLinks: ko.observableArray(),
|
||||||
|
flags: ko.observableArray(),
|
||||||
|
headers: ko.observableArray(new MimeHeaderCollectionModel)
|
||||||
|
});
|
||||||
|
|
||||||
addObservablesTo(this, {
|
addObservablesTo(this, {
|
||||||
subject: '',
|
subject: '',
|
||||||
plain: '',
|
plain: '',
|
||||||
html: '',
|
html: '',
|
||||||
preview: null,
|
|
||||||
size: 0,
|
|
||||||
spamScore: 0,
|
|
||||||
spamResult: '',
|
|
||||||
isSpam: false,
|
|
||||||
hasVirus: null, // or boolean when scanned
|
|
||||||
dateTimestamp: 0,
|
dateTimestamp: 0,
|
||||||
internalTimestamp: 0,
|
|
||||||
priority: 3, // Normal
|
|
||||||
|
|
||||||
senderEmailsString: '',
|
|
||||||
senderClearEmailsString: '',
|
|
||||||
|
|
||||||
deleted: false,
|
deleted: false,
|
||||||
|
|
||||||
|
|
@ -111,20 +120,11 @@ export class MessageModel extends AbstractModel {
|
||||||
pgpEncrypted: null,
|
pgpEncrypted: null,
|
||||||
pgpDecrypted: false,
|
pgpDecrypted: false,
|
||||||
|
|
||||||
readReceipt: '',
|
|
||||||
|
|
||||||
// rfc8621
|
// rfc8621
|
||||||
id: '',
|
id: '',
|
||||||
// threadId: ''
|
// threadId: ''
|
||||||
});
|
});
|
||||||
|
|
||||||
this.attachments = ko.observableArray(new AttachmentCollectionModel);
|
|
||||||
this.threads = ko.observableArray();
|
|
||||||
this.threadUnseen = ko.observableArray();
|
|
||||||
this.unsubsribeLinks = ko.observableArray();
|
|
||||||
this.flags = ko.observableArray();
|
|
||||||
this.headers = ko.observableArray(new MimeHeaderCollectionModel);
|
|
||||||
|
|
||||||
addComputablesTo(this, {
|
addComputablesTo(this, {
|
||||||
attachmentIconClass: () =>
|
attachmentIconClass: () =>
|
||||||
this.encrypted() ? 'icon-lock' : FileInfo.getAttachmentsIconClass(this.attachments()),
|
this.encrypted() ? 'icon-lock' : FileInfo.getAttachmentsIconClass(this.attachments()),
|
||||||
|
|
@ -199,23 +199,23 @@ export class MessageModel extends AbstractModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
spamStatus() {
|
spamStatus() {
|
||||||
let spam = this.spamResult();
|
let spam = this.spamResult;
|
||||||
return spam ? i18n(this.isSpam() ? 'GLOBAL/SPAM' : 'GLOBAL/NOT_SPAM') + ': ' + spam : '';
|
return spam ? i18n(this.isSpam ? 'GLOBAL/SPAM' : 'GLOBAL/NOT_SPAM') + ': ' + spam : '';
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @returns {string}
|
* @returns {string}
|
||||||
*/
|
*/
|
||||||
friendlySize() {
|
friendlySize() {
|
||||||
return FileInfo.friendlySize(this.size());
|
return FileInfo.friendlySize(this.size);
|
||||||
}
|
}
|
||||||
|
|
||||||
computeSenderEmail() {
|
computeSenderEmail() {
|
||||||
const list = this[
|
const list = this[
|
||||||
[FolderUserStore.sentFolder(), FolderUserStore.draftsFolder()].includes(this.folder) ? 'to' : 'from'
|
[FolderUserStore.sentFolder(), FolderUserStore.draftsFolder()].includes(this.folder) ? 'to' : 'from'
|
||||||
];
|
];
|
||||||
this.senderEmailsString(list.toString(true));
|
this.senderEmailsString = list.toString(true);
|
||||||
this.senderClearEmailsString(list.map(email => email?.email).filter(email => email).join(', '));
|
this.senderClearEmailsString = list.map(email => email?.email).filter(email => email).join(', ');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -250,9 +250,9 @@ export class MessageModel extends AbstractModel {
|
||||||
|| headers.valueByName('X-Priority');
|
|| headers.valueByName('X-Priority');
|
||||||
if (value) {
|
if (value) {
|
||||||
if (/[h12]/.test(value[0])) {
|
if (/[h12]/.test(value[0])) {
|
||||||
this.priority(1);
|
this.priority = 1;
|
||||||
} else if (/[l45]/.test(value[0])) {
|
} else if (/[l45]/.test(value[0])) {
|
||||||
this.priority(5);
|
this.priority = 5;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -264,13 +264,13 @@ export class MessageModel extends AbstractModel {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (headers.valueByName('X-Virus')) {
|
if (headers.valueByName('X-Virus')) {
|
||||||
this.hasVirus(true);
|
this.hasVirus = true;
|
||||||
}
|
}
|
||||||
if (value = headers.valueByName('X-Virus-Status')) {
|
if (value = headers.valueByName('X-Virus-Status')) {
|
||||||
if (value.includes('infected')) {
|
if (value.includes('infected')) {
|
||||||
this.hasVirus(true);
|
this.hasVirus = true;
|
||||||
} else if (value.includes('clean')) {
|
} else if (value.includes('clean')) {
|
||||||
this.hasVirus(false);
|
this.hasVirus = false;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
/*
|
||||||
|
|
@ -301,7 +301,7 @@ export class MessageModel extends AbstractModel {
|
||||||
checked: this.checked(),
|
checked: this.checked(),
|
||||||
unseen: this.isUnseen(),
|
unseen: this.isUnseen(),
|
||||||
focused: this.focused(),
|
focused: this.focused(),
|
||||||
priorityHigh: this.priority() === 1,
|
priorityHigh: this.priority === 1,
|
||||||
withAttachments: !!this.attachments().length,
|
withAttachments: !!this.attachments().length,
|
||||||
// hasChildrenMessage: 1 < this.threadsLen()
|
// hasChildrenMessage: 1 < this.threadsLen()
|
||||||
}, (key, value) => value && classes.push(key));
|
}, (key, value) => value && classes.push(key));
|
||||||
|
|
@ -368,7 +368,7 @@ export class MessageModel extends AbstractModel {
|
||||||
this.hasExternals(result.hasExternals);
|
this.hasExternals(result.hasExternals);
|
||||||
this.hasImages(!!result.hasExternals);
|
this.hasImages(!!result.hasExternals);
|
||||||
body.innerHTML = result.html;
|
body.innerHTML = result.html;
|
||||||
if (!this.isSpam() && FolderUserStore.spamFolder() != this.folder) {
|
if (!this.isSpam && FolderUserStore.spamFolder() != this.folder) {
|
||||||
if ('always' === SettingsUserStore.viewImages()) {
|
if ('always' === SettingsUserStore.viewImages()) {
|
||||||
this.showExternalImages();
|
this.showExternalImages();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1194,7 +1194,7 @@ export class ComposePopupView extends AbstractViewPopup {
|
||||||
const attachment = new ComposeAttachmentModel(
|
const attachment = new ComposeAttachmentModel(
|
||||||
message.requestHash,
|
message.requestHash,
|
||||||
message.subject() /*+ '-' + Jua.randomId()*/ + '.eml',
|
message.subject() /*+ '-' + Jua.randomId()*/ + '.eml',
|
||||||
message.size()
|
message.size
|
||||||
);
|
);
|
||||||
attachment.fromMessage = true;
|
attachment.fromMessage = true;
|
||||||
attachment.complete(true);
|
attachment.complete(true);
|
||||||
|
|
|
||||||
|
|
@ -155,7 +155,7 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
: ''
|
: ''
|
||||||
).join(' '),
|
).join(' '),
|
||||||
|
|
||||||
askReadReceipt: () => currentMessage()?.readReceipt()
|
askReadReceipt: () => currentMessage()?.readReceipt
|
||||||
&& !(MessagelistUserStore.isDraftFolder() || MessagelistUserStore.isSentFolder())
|
&& !(MessagelistUserStore.isDraftFolder() || MessagelistUserStore.isSentFolder())
|
||||||
&& !currentMessage()?.flags().includes('$mdnsent')
|
&& !currentMessage()?.flags().includes('$mdnsent')
|
||||||
&& !currentMessage()?.flags().includes('\\answered'),
|
&& !currentMessage()?.flags().includes('\\answered'),
|
||||||
|
|
@ -526,7 +526,7 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
*/
|
*/
|
||||||
readReceipt() {
|
readReceipt() {
|
||||||
let oMessage = currentMessage()
|
let oMessage = currentMessage()
|
||||||
if (oMessage.readReceipt()) {
|
if (oMessage.readReceipt) {
|
||||||
Remote.request('SendReadReceiptMessage', iError => {
|
Remote.request('SendReadReceiptMessage', iError => {
|
||||||
if (!iError) {
|
if (!iError) {
|
||||||
oMessage.flags.push('$mdnsent');
|
oMessage.flags.push('$mdnsent');
|
||||||
|
|
@ -535,7 +535,7 @@ export class MailMessageView extends AbstractViewRight {
|
||||||
}, {
|
}, {
|
||||||
messageFolder: oMessage.folder,
|
messageFolder: oMessage.folder,
|
||||||
messageUid: oMessage.uid,
|
messageUid: oMessage.uid,
|
||||||
readReceipt: oMessage.readReceipt(),
|
readReceipt: oMessage.readReceipt,
|
||||||
subject: i18n('READ_RECEIPT/SUBJECT', { SUBJECT: oMessage.subject() }),
|
subject: i18n('READ_RECEIPT/SUBJECT', { SUBJECT: oMessage.subject() }),
|
||||||
plain: i18n('READ_RECEIPT/BODY', { 'READ-RECEIPT': AccountUserStore.email() })
|
plain: i18n('READ_RECEIPT/BODY', { 'READ-RECEIPT': AccountUserStore.email() })
|
||||||
});
|
});
|
||||||
|
|
|
||||||
|
|
@ -144,7 +144,7 @@
|
||||||
<i data-bind="css: attachmentIconClass"></i>
|
<i data-bind="css: attachmentIconClass"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="sizeParent" data-bind="text: friendlySize()"></div>
|
<div class="sizeParent" data-bind="text: friendlySize()"></div>
|
||||||
<time data-bind="attr:{'data-moment-format':$root.timeFormat()}, moment: dateTimestamp"></time>
|
<time data-bind="attr:{'data-time-format':$root.timeFormat()}, time: dateTimestamp"></time>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<!-- /ko -->
|
<!-- /ko -->
|
||||||
|
|
@ -164,7 +164,7 @@
|
||||||
<i data-bind="css: attachmentIconClass"></i>
|
<i data-bind="css: attachmentIconClass"></i>
|
||||||
</div>
|
</div>
|
||||||
<div class="sizeParent" data-bind="text: friendlySize()"></div>
|
<div class="sizeParent" data-bind="text: friendlySize()"></div>
|
||||||
<time data-moment-format="AUTO" data-bind="moment: dateTimestamp"></time>
|
<time data-time-format="AUTO" data-bind="time: dateTimestamp"></time>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -138,7 +138,7 @@
|
||||||
<div id="messageItem">
|
<div id="messageItem">
|
||||||
<div class="messageItemHeader" data-bind="if: message, i18nUpdate: message">
|
<div class="messageItemHeader" data-bind="if: message, i18nUpdate: message">
|
||||||
<div data-bind="hidden: showFullInfo">
|
<div data-bind="hidden: showFullInfo">
|
||||||
<time class="date" data-moment-format="FULL" data-bind="visible: 0 < message().dateTimestamp(), moment: message().dateTimestamp()"></time>
|
<time class="date" data-time-format="FULL" data-bind="visible: 0 < message().dateTimestamp(), time: message().dateTimestamp()"></time>
|
||||||
<div class="informationShortWrp">
|
<div class="informationShortWrp">
|
||||||
<div class="informationShort" data-bind="visible: message().to.length">
|
<div class="informationShort" data-bind="visible: message().to.length">
|
||||||
<span data-i18n="GLOBAL/TO"></span>:
|
<span data-i18n="GLOBAL/TO"></span>:
|
||||||
|
|
@ -149,9 +149,9 @@
|
||||||
<span data-bind="text: message().cc"></span>
|
<span data-bind="text: message().cc"></span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="informationShort" data-bind="visible: message().spamResult()">
|
<div class="informationShort" data-bind="visible: message().spamResult">
|
||||||
<span data-i18n="MESSAGE/SPAM_SCORE"></span>:
|
<span data-i18n="MESSAGE/SPAM_SCORE"></span>:
|
||||||
<meter min="0" max="100" optimum="0" low="33" high="66" data-bind="value: message().spamScore(), attr:{ title: message().spamStatus() }"></meter>
|
<meter min="0" max="100" optimum="0" low="33" high="66" data-bind="value: message().spamScore, attr:{ title: message().spamStatus() }"></meter>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="informationFull" data-bind="visible: showFullInfo, with: message">
|
<div class="informationFull" data-bind="visible: showFullInfo, with: message">
|
||||||
|
|
@ -181,9 +181,9 @@
|
||||||
<tr data-bind="visible: dateTimestamp">
|
<tr data-bind="visible: dateTimestamp">
|
||||||
<td data-i18n="MESSAGE/LABEL_DATE"></td>
|
<td data-i18n="MESSAGE/LABEL_DATE"></td>
|
||||||
<td>
|
<td>
|
||||||
<time data-moment-format="FULL" data-bind="moment: dateTimestamp"></time>
|
<time data-time-format="FULL" data-bind="time: dateTimestamp"></time>
|
||||||
|
|
||||||
(<time data-moment-format="FROMNOW" data-bind="moment: dateTimestamp"></time>)
|
(<time data-time-format="FROMNOW" data-bind="time: dateTimestamp"></time>)
|
||||||
</td>
|
</td>
|
||||||
</tr>
|
</tr>
|
||||||
<tr data-bind="visible: spamResult">
|
<tr data-bind="visible: spamResult">
|
||||||
|
|
@ -196,7 +196,7 @@
|
||||||
</tr>
|
</tr>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
<div class="hasVirus" data-bind="visible: message().hasVirus()" data-i18n="MESSAGE/HAS_VIRUS_WARNING"></div>
|
<div class="hasVirus" data-bind="visible: message().hasVirus" data-i18n="MESSAGE/HAS_VIRUS_WARNING"></div>
|
||||||
<!-- ko if: tagsAllowed -->
|
<!-- ko if: tagsAllowed -->
|
||||||
<div class="messageTags">
|
<div class="messageTags">
|
||||||
<span data-i18n="MESSAGE/TAGS"></span>:
|
<span data-i18n="MESSAGE/TAGS"></span>:
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue