mirror of
https://github.com/the-djmaze/snappymail.git
synced 2024-09-20 15:45:55 +08:00
Bugfix: message attachments missing data
This commit is contained in:
parent
fd0a41cfaf
commit
787e236133
|
@ -250,7 +250,7 @@ setLayoutResizer = (source, target, sClientSideKeyName, mode) =>
|
|||
|
||||
populateMessageBody = (oMessage, popup) => {
|
||||
if (oMessage) {
|
||||
popup || MessageUserStore.hideMessageBodies();
|
||||
popup || MessageUserStore.message(oMessage);
|
||||
popup || MessageUserStore.loading(true);
|
||||
Remote.message((iError, oData/*, bCached*/) => {
|
||||
if (iError) {
|
||||
|
@ -276,9 +276,9 @@ populateMessageBody = (oMessage, popup) => {
|
|||
MessageFlagsCache.initMessage(oMessage);
|
||||
|
||||
// Set clone
|
||||
MessageUserStore.message(MessageModel.fromMessageListItem(oMessage));
|
||||
oMessage = MessageUserStore.message();
|
||||
oMessage = MessageModel.fromMessageListItem(oMessage);
|
||||
}
|
||||
MessageUserStore.message(oMessage);
|
||||
}
|
||||
|
||||
if (oMessage && oMessage.uid == json.Uid) {
|
||||
|
@ -289,6 +289,7 @@ populateMessageBody = (oMessage, popup) => {
|
|||
}
|
||||
*/
|
||||
isNew || oMessage.revivePropertiesFromJson(json);
|
||||
|
||||
if (messagesDom) {
|
||||
let id = 'rl-msg-' + oMessage.hash.replace(/[^a-zA-Z0-9]/g, ''),
|
||||
body = elementById(id);
|
||||
|
@ -312,11 +313,7 @@ populateMessageBody = (oMessage, popup) => {
|
|||
|
||||
messagesDom.append(body);
|
||||
|
||||
if (!popup) {
|
||||
MessageUserStore.activeDom(body);
|
||||
MessageUserStore.hideMessageBodies();
|
||||
oMessage.body.hidden = false;
|
||||
}
|
||||
popup || (oMessage.body.hidden = false);
|
||||
popup && oMessage.viewPopupMessage();
|
||||
}
|
||||
|
||||
|
|
|
@ -48,7 +48,6 @@ export function MimeToMessage(data, message)
|
|||
attachment.folder = '';
|
||||
attachment.uid = '';
|
||||
attachment.mimeIndex = part.id;
|
||||
attachment.framed = false;
|
||||
*/
|
||||
attachment.cid = cid ? cid.value : '';
|
||||
if (cid && html) {
|
||||
|
|
|
@ -29,7 +29,6 @@ export class AttachmentModel extends AbstractModel {
|
|||
this.url = '';
|
||||
this.mimeIndex = '';
|
||||
this.estimatedSize = 0;
|
||||
this.framed = false;
|
||||
|
||||
this.addObservables({
|
||||
isInline: false,
|
||||
|
|
|
@ -11,7 +11,6 @@ import { AppUserStore } from 'Stores/User/App';
|
|||
import { AccountUserStore } from 'Stores/User/Account';
|
||||
import { FolderUserStore } from 'Stores/User/Folder';
|
||||
import { MessagelistUserStore } from 'Stores/User/Messagelist';
|
||||
import { MessageUserStore } from 'Stores/User/Message';
|
||||
import { ThemeStore } from 'Stores/Theme';
|
||||
|
||||
import { SystemDropDownUserView } from 'View/User/SystemDropDown';
|
||||
|
@ -83,8 +82,7 @@ export class MailBoxUserScreen extends AbstractScreen {
|
|||
let message = new MessageModel;
|
||||
message.folder = folderHash;
|
||||
message.uid = messageUid;
|
||||
MessageUserStore.message(message);
|
||||
populateMessageBody(MessageUserStore.message());
|
||||
populateMessageBody(message);
|
||||
} else {
|
||||
let threadUid = folderHash.replace(/^.+~(\d+)$/, '$1');
|
||||
MessagelistUserStore.threadUid((folderHash === threadUid) ? 0 : pInt(threadUid));
|
||||
|
|
|
@ -15,8 +15,7 @@ export const MessageUserStore = new class {
|
|||
loading: false,
|
||||
|
||||
// Cache mail bodies
|
||||
bodiesDom: null,
|
||||
activeDom: null
|
||||
bodiesDom: null
|
||||
});
|
||||
|
||||
// Subscribers
|
||||
|
@ -30,8 +29,8 @@ export const MessageUserStore = new class {
|
|||
} else {
|
||||
AppUserStore.focusedState(Scope.MessageList);
|
||||
exitFullscreen();
|
||||
this.hideMessageBodies();
|
||||
}
|
||||
this.hideMessageBodies();
|
||||
},
|
||||
});
|
||||
|
||||
|
|
|
@ -160,8 +160,7 @@ export class MailMessageList extends AbstractViewRight {
|
|||
|
||||
this.selector.on('ItemSelect', message => {
|
||||
if (message) {
|
||||
MessageUserStore.message(MessageModel.fromMessageListItem(message));
|
||||
populateMessageBody(MessageUserStore.message());
|
||||
populateMessageBody(MessageModel.fromMessageListItem(message));
|
||||
} else {
|
||||
MessageUserStore.message(null);
|
||||
}
|
||||
|
@ -246,8 +245,7 @@ export class MailMessageList extends AbstractViewRight {
|
|||
let message = new MessageModel;
|
||||
message.folder = sFolder;
|
||||
message.uid = iUid;
|
||||
MessageUserStore.message(message);
|
||||
populateMessageBody(MessageUserStore.message());
|
||||
populateMessageBody(message);
|
||||
} else {
|
||||
MessageUserStore.message(null);
|
||||
}
|
||||
|
@ -679,7 +677,7 @@ export class MailMessageList extends AbstractViewRight {
|
|||
return false;
|
||||
});
|
||||
addShortcut('tab,arrowright', '', Scope.MessageList, () => {
|
||||
if (MessageUserStore.message()){
|
||||
if (MessageUserStore.message()) {
|
||||
AppUserStore.focusedState(Scope.MessageView);
|
||||
return false;
|
||||
}
|
||||
|
|
|
@ -176,8 +176,6 @@ export class MailMessageView extends AbstractViewRight {
|
|||
|
||||
this.addSubscribables({
|
||||
message: message => {
|
||||
MessageUserStore.activeDom(null);
|
||||
|
||||
if (message) {
|
||||
if (this.viewHash !== message.hash) {
|
||||
this.scrollMessageToTop();
|
||||
|
|
|
@ -22,21 +22,4 @@ class AttachmentCollection extends \MailSo\Base\Collection
|
|||
assert($oAttachment instanceof Attachment);
|
||||
parent::append($oAttachment, $bToTop);
|
||||
}
|
||||
|
||||
public function SpecData() : array
|
||||
{
|
||||
$aResult = array();
|
||||
foreach ($this as $oAttachment) {
|
||||
$aResult[] = array(
|
||||
'@Object' => 'Object/Attachment',
|
||||
'FileName' => $oAttachment->FileName(),
|
||||
'MimeType' => $oAttachment->MimeType(),
|
||||
'IsInline' => $oAttachment->IsInline()
|
||||
);
|
||||
}
|
||||
return array(
|
||||
'@Object' => 'Collection/AttachmentCollection',
|
||||
'@Collection' => $aResult
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -680,7 +680,7 @@ class Message implements \JsonSerializable
|
|||
'ReadReceipt' => '',
|
||||
'Autocrypt' => $this->sAutocrypt,
|
||||
|
||||
'Attachments' => $this->oAttachments ? $this->oAttachments->SpecData() : null,
|
||||
'Attachments' => $this->oAttachments,
|
||||
|
||||
'Flags' => $aFlags,
|
||||
|
||||
|
|
|
@ -113,12 +113,6 @@ trait Response
|
|||
return $aResult;
|
||||
}
|
||||
|
||||
private function isFileHasFramedPreview(string $sFileName) : bool
|
||||
{
|
||||
$sExt = \MailSo\Base\Utils::GetFileExtension($sFileName);
|
||||
return \in_array($sExt, array('doc', 'docx', 'xls', 'xlsx', 'ppt', 'pptx'));
|
||||
}
|
||||
|
||||
private function isFileHasThumbnail(string $sFileName) : bool
|
||||
{
|
||||
static $aCache = array();
|
||||
|
@ -194,6 +188,8 @@ trait Response
|
|||
'FileName' => (\strlen($sSubject) ? \MailSo\Base\Utils::SecureFileName($sSubject) : 'message-'.$mResult['Uid']) . '.eml'
|
||||
));
|
||||
|
||||
$mResult['Attachments'] = $this->responseObject($mResponse->Attachments(), $sParent);
|
||||
|
||||
if ('Message' === $sParent)
|
||||
{
|
||||
$mResult['DraftInfo'] = $mResponse->DraftInfo();
|
||||
|
@ -208,8 +204,6 @@ trait Response
|
|||
$mResult['PgpSigned'] = $mResponse->PgpSigned();
|
||||
$mResult['PgpEncrypted'] = $mResponse->PgpEncrypted();
|
||||
|
||||
$mResult['Attachments'] = $this->responseObject($mResponse->Attachments(), $sParent);
|
||||
|
||||
$mResult['ReadReceipt'] = $mResponse->ReadReceipt();
|
||||
|
||||
if (\strlen($mResult['ReadReceipt']) && !\in_array('$forwarded', $mResult['Flags']))
|
||||
|
@ -241,7 +235,6 @@ trait Response
|
|||
if ($mResponse instanceof \MailSo\Mail\Attachment)
|
||||
{
|
||||
$mResult = $mResponse->jsonSerialize();
|
||||
$mResult['Framed'] = $this->isFileHasFramedPreview($mResult['FileName']);
|
||||
$mResult['IsThumbnail'] = $this->GetCapa(Capa::ATTACHMENT_THUMBNAILS) && $this->isFileHasThumbnail($mResult['FileName']);
|
||||
$mResult['Download'] = Utils::EncodeKeyValuesQ(array(
|
||||
'V' => APP_VERSION,
|
||||
|
@ -250,8 +243,7 @@ trait Response
|
|||
'Uid' => $mResult['Uid'],
|
||||
'MimeIndex' => $mResult['MimeIndex'],
|
||||
'MimeType' => $mResult['MimeType'],
|
||||
'FileName' => $mResult['FileName'],
|
||||
'Framed' => $mResult['Framed']
|
||||
'FileName' => $mResult['FileName']
|
||||
));
|
||||
return $mResult;
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue