mirror of
https://github.com/the-djmaze/snappymail.git
synced 2026-08-29 20:19:22 +03:00
Resolve #1338
This commit is contained in:
parent
d75f64904f
commit
fb8d557099
9 changed files with 40 additions and 8 deletions
|
|
@ -79,6 +79,7 @@ export class MessageModel extends AbstractModel {
|
|||
subject: '',
|
||||
plain: '',
|
||||
html: '',
|
||||
preview: null,
|
||||
size: 0,
|
||||
spamScore: 0,
|
||||
spamResult: '',
|
||||
|
|
|
|||
|
|
@ -37,6 +37,7 @@ const
|
|||
imapDisable_thread: false,
|
||||
imapDisable_binary: false,
|
||||
imapDisable_status_size: true,
|
||||
imapDisable_preview: true,
|
||||
imapExpunge_all_on_delete: false,
|
||||
imapFast_simple_search: true,
|
||||
imapFetch_new_messages: true,
|
||||
|
|
@ -88,6 +89,7 @@ const
|
|||
disable_thread: !!oDomain.imapDisable_thread(),
|
||||
disable_binary: !!oDomain.imapDisable_binary(),
|
||||
disable_status_size: !!oDomain.imapDisable_status_size(),
|
||||
disable_preview: !!oDomain.imapDisable_preview(),
|
||||
folder_list_limit: pInt(oDomain.imapFolder_list_limit()),
|
||||
message_list_limit: pInt(oDomain.imapMessage_list_limit())
|
||||
/*
|
||||
|
|
|
|||
|
|
@ -29,6 +29,7 @@
|
|||
"disable_thread": false,
|
||||
"disable_binary": false,
|
||||
"disable_status_size": true,
|
||||
"disable_preview": true,
|
||||
"use_expunge_all_on_delete": false,
|
||||
"fast_simple_search": true,
|
||||
"force_select": false,
|
||||
|
|
|
|||
|
|
@ -330,6 +330,9 @@ class ImapClient extends \MailSo\Net\NetClient
|
|||
if ($this->Settings->disable_status_size) {
|
||||
$aList = \array_diff($aList, ['STATUS=SIZE']);
|
||||
}
|
||||
if ($this->Settings->disable_preview) {
|
||||
$aList = \array_diff($aList, ['PREVIEW']);
|
||||
}
|
||||
}
|
||||
$this->aCapabilityItems = $aList;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -30,6 +30,8 @@ class Settings extends \MailSo\Net\ConnectSettings
|
|||
$disable_binary = false,
|
||||
// STATUS SIZE can take a significant amount of time, therefore not active by default
|
||||
$disable_status_size = true,
|
||||
// RFC 8970
|
||||
$disable_preview = true,
|
||||
$expunge_all_on_delete = false,
|
||||
$fast_simple_search = true,
|
||||
$fetch_new_messages = true,
|
||||
|
|
@ -56,6 +58,7 @@ class Settings extends \MailSo\Net\ConnectSettings
|
|||
'disable_thread',
|
||||
'disable_binary',
|
||||
'disable_status_size',
|
||||
'disable_preview',
|
||||
'expunge_all_on_delete',
|
||||
'fast_simple_search',
|
||||
'fetch_new_messages',
|
||||
|
|
@ -95,6 +98,7 @@ class Settings extends \MailSo\Net\ConnectSettings
|
|||
'disable_thread' => $this->disable_thread,
|
||||
'disable_binary' => $this->disable_binary,
|
||||
'disable_status_size' => $this->disable_status_size,
|
||||
'disable_preview' => $this->disable_preview,
|
||||
'use_expunge_all_on_delete' => $this->expunge_all_on_delete,
|
||||
// 'body_text_limit' => $this->body_text_limit,
|
||||
'fast_simple_search' => $this->fast_simple_search,
|
||||
|
|
|
|||
|
|
@ -467,14 +467,18 @@ class MailClient
|
|||
array &$aAllThreads = [], array &$aUnseenUIDs = []) : void
|
||||
{
|
||||
if (\count($oRange)) {
|
||||
$aFetchIterator = $this->oImapClient->FetchIterate(array(
|
||||
$aFetchItems = array(
|
||||
FetchType::UID,
|
||||
FetchType::RFC822_SIZE,
|
||||
FetchType::INTERNALDATE,
|
||||
FetchType::FLAGS,
|
||||
FetchType::BODYSTRUCTURE,
|
||||
$this->getEnvelopeOrHeadersRequestString()
|
||||
), (string) $oRange, $oRange->UID);
|
||||
FetchType::BODYSTRUCTURE
|
||||
);
|
||||
if ($this->oImapClient->hasCapability('PREVIEW')) {
|
||||
$aFetchItems[] = FetchType::PREVIEW;
|
||||
}
|
||||
$aFetchItems[] = $this->getEnvelopeOrHeadersRequestString();
|
||||
$aFetchIterator = $this->oImapClient->FetchIterate($aFetchItems, (string) $oRange, $oRange->UID);
|
||||
// FETCH does not respond in the id order of the SequenceSet, so we prefill $aCollection for the right sort order.
|
||||
$aCollection = \array_fill_keys($oRange->getArrayCopy(), null);
|
||||
foreach ($aFetchIterator as /* @var $oFetchResponseItem \MailSo\Imap\FetchResponse */ $oFetchResponseItem) {
|
||||
|
|
|
|||
|
|
@ -41,6 +41,10 @@ class Message implements \JsonSerializable
|
|||
*/
|
||||
$sEmailId = null,
|
||||
$sThreadId = null,
|
||||
/**
|
||||
* https://www.rfc-editor.org/rfc/rfc8970
|
||||
*/
|
||||
$sPreview = null,
|
||||
// https://autocrypt.org/level1.html#the-autocrypt-header
|
||||
$sAutocrypt = '';
|
||||
|
||||
|
|
@ -154,7 +158,7 @@ class Message implements \JsonSerializable
|
|||
// $oMessage->sEmailId = $oMessage->sEmailId ?: $oFetchResponse->GetFetchValue('X-GUID');
|
||||
$aThreadId = $oFetchResponse->GetFetchValue(FetchType::THREADID);
|
||||
$oMessage->sThreadId = $aThreadId ? $aThreadId[0] : $oFetchResponse->GetFetchValue('X-GM-THRID');
|
||||
|
||||
$oMessage->sPreview = $oFetchResponse->GetFetchValue(FetchType::PREVIEW) ?: null;
|
||||
$sCharset = $oBodyStructure ? Utils::NormalizeCharset($oBodyStructure->SearchCharset()) : '';
|
||||
|
||||
$sHeaders = $oFetchResponse->GetHeaderFieldsValue();
|
||||
|
|
@ -461,6 +465,10 @@ class Message implements \JsonSerializable
|
|||
}
|
||||
}
|
||||
|
||||
if (\str_starts_with($oMessage->sSubject, '[Preview]')) {
|
||||
$oMessage->sSubject = \mb_substr($oMessage->sSubject, 10);
|
||||
}
|
||||
|
||||
return $oMessage;
|
||||
}
|
||||
|
||||
|
|
@ -566,7 +574,9 @@ class Message implements \JsonSerializable
|
|||
// 'threadId' => $this->sThreadId,
|
||||
// 'mailboxIds' => ['mailboxid'=>true],
|
||||
// 'keywords' => $keywords,
|
||||
'size' => $this->iSize
|
||||
'size' => $this->iSize,
|
||||
|
||||
'preview' => $this->sPreview
|
||||
);
|
||||
|
||||
if ($this->DraftInfo) {
|
||||
|
|
|
|||
|
|
@ -128,6 +128,13 @@
|
|||
label: 'STATUS SIZE'
|
||||
}
|
||||
}"></div>
|
||||
<div data-bind="component: {
|
||||
name: 'Checkbox',
|
||||
params: {
|
||||
value: imapDisable_preview,
|
||||
label: 'PREVIEW'
|
||||
}
|
||||
}"></div>
|
||||
|
||||
<h4 data-i18n="POPUPS_DOMAIN/LIMITS"></h4>
|
||||
<div class="control-group">
|
||||
|
|
|
|||
|
|
@ -135,7 +135,7 @@
|
|||
<div class="messageListItem" data-bind="css: lineAsCss()">
|
||||
<div class="messageCheckbox">
|
||||
<div class="checkboxMessage fontastic" data-bind="text: checked() ? '☑' : '☐'"></div>
|
||||
</div><div>
|
||||
</div><div data-bind="attr: {'title':preview}">
|
||||
<div class="flagParent fontastic"></div>
|
||||
<div class="senderParent" data-bind="attr: {'title': senderClearEmailsString}, text: senderEmailsString"></div>
|
||||
<div class="subjectParent" data-bind="text: subject"></div>
|
||||
|
|
@ -155,7 +155,7 @@
|
|||
<div class="messageListItem" data-bind="css: lineAsCss()">
|
||||
<div class="messageCheckbox">
|
||||
<div class="checkboxMessage fontastic" data-bind="text: checked() ? '☑' : '☐'"></div>
|
||||
</div><div data-bind="attr:{style:indent()}, css:{reply:indent()}">
|
||||
</div><div data-bind="attr:{style:indent(), 'title':preview}, css:{reply:indent()}">
|
||||
<div class="flagParent fontastic"></div>
|
||||
<div class="senderParent" data-bind="attr: {'title': senderClearEmailsString}, text: senderEmailsString"></div>
|
||||
<div class="subjectParent" data-bind="text: subject"></div>
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue