Bugfix: message attachments missing data

This commit is contained in:
the-djmaze 2022-10-28 13:57:13 +02:00
parent fd0a41cfaf
commit 787e236133
10 changed files with 15 additions and 52 deletions

View file

@ -250,7 +250,7 @@ setLayoutResizer = (source, target, sClientSideKeyName, mode) =>
populateMessageBody = (oMessage, popup) => { populateMessageBody = (oMessage, popup) => {
if (oMessage) { if (oMessage) {
popup || MessageUserStore.hideMessageBodies(); popup || MessageUserStore.message(oMessage);
popup || MessageUserStore.loading(true); popup || MessageUserStore.loading(true);
Remote.message((iError, oData/*, bCached*/) => { Remote.message((iError, oData/*, bCached*/) => {
if (iError) { if (iError) {
@ -276,9 +276,9 @@ populateMessageBody = (oMessage, popup) => {
MessageFlagsCache.initMessage(oMessage); MessageFlagsCache.initMessage(oMessage);
// Set clone // Set clone
MessageUserStore.message(MessageModel.fromMessageListItem(oMessage)); oMessage = MessageModel.fromMessageListItem(oMessage);
oMessage = MessageUserStore.message();
} }
MessageUserStore.message(oMessage);
} }
if (oMessage && oMessage.uid == json.Uid) { if (oMessage && oMessage.uid == json.Uid) {
@ -289,6 +289,7 @@ populateMessageBody = (oMessage, popup) => {
} }
*/ */
isNew || oMessage.revivePropertiesFromJson(json); isNew || oMessage.revivePropertiesFromJson(json);
if (messagesDom) { if (messagesDom) {
let id = 'rl-msg-' + oMessage.hash.replace(/[^a-zA-Z0-9]/g, ''), let id = 'rl-msg-' + oMessage.hash.replace(/[^a-zA-Z0-9]/g, ''),
body = elementById(id); body = elementById(id);
@ -312,11 +313,7 @@ populateMessageBody = (oMessage, popup) => {
messagesDom.append(body); messagesDom.append(body);
if (!popup) { popup || (oMessage.body.hidden = false);
MessageUserStore.activeDom(body);
MessageUserStore.hideMessageBodies();
oMessage.body.hidden = false;
}
popup && oMessage.viewPopupMessage(); popup && oMessage.viewPopupMessage();
} }

View file

@ -48,7 +48,6 @@ export function MimeToMessage(data, message)
attachment.folder = ''; attachment.folder = '';
attachment.uid = ''; attachment.uid = '';
attachment.mimeIndex = part.id; attachment.mimeIndex = part.id;
attachment.framed = false;
*/ */
attachment.cid = cid ? cid.value : ''; attachment.cid = cid ? cid.value : '';
if (cid && html) { if (cid && html) {

View file

@ -29,7 +29,6 @@ export class AttachmentModel extends AbstractModel {
this.url = ''; this.url = '';
this.mimeIndex = ''; this.mimeIndex = '';
this.estimatedSize = 0; this.estimatedSize = 0;
this.framed = false;
this.addObservables({ this.addObservables({
isInline: false, isInline: false,

View file

@ -11,7 +11,6 @@ import { AppUserStore } from 'Stores/User/App';
import { AccountUserStore } from 'Stores/User/Account'; import { AccountUserStore } from 'Stores/User/Account';
import { FolderUserStore } from 'Stores/User/Folder'; import { FolderUserStore } from 'Stores/User/Folder';
import { MessagelistUserStore } from 'Stores/User/Messagelist'; import { MessagelistUserStore } from 'Stores/User/Messagelist';
import { MessageUserStore } from 'Stores/User/Message';
import { ThemeStore } from 'Stores/Theme'; import { ThemeStore } from 'Stores/Theme';
import { SystemDropDownUserView } from 'View/User/SystemDropDown'; import { SystemDropDownUserView } from 'View/User/SystemDropDown';
@ -83,8 +82,7 @@ export class MailBoxUserScreen extends AbstractScreen {
let message = new MessageModel; let message = new MessageModel;
message.folder = folderHash; message.folder = folderHash;
message.uid = messageUid; message.uid = messageUid;
MessageUserStore.message(message); populateMessageBody(message);
populateMessageBody(MessageUserStore.message());
} else { } else {
let threadUid = folderHash.replace(/^.+~(\d+)$/, '$1'); let threadUid = folderHash.replace(/^.+~(\d+)$/, '$1');
MessagelistUserStore.threadUid((folderHash === threadUid) ? 0 : pInt(threadUid)); MessagelistUserStore.threadUid((folderHash === threadUid) ? 0 : pInt(threadUid));

View file

@ -15,8 +15,7 @@ export const MessageUserStore = new class {
loading: false, loading: false,
// Cache mail bodies // Cache mail bodies
bodiesDom: null, bodiesDom: null
activeDom: null
}); });
// Subscribers // Subscribers
@ -30,8 +29,8 @@ export const MessageUserStore = new class {
} else { } else {
AppUserStore.focusedState(Scope.MessageList); AppUserStore.focusedState(Scope.MessageList);
exitFullscreen(); exitFullscreen();
this.hideMessageBodies();
} }
this.hideMessageBodies();
}, },
}); });

View file

@ -160,8 +160,7 @@ export class MailMessageList extends AbstractViewRight {
this.selector.on('ItemSelect', message => { this.selector.on('ItemSelect', message => {
if (message) { if (message) {
MessageUserStore.message(MessageModel.fromMessageListItem(message)); populateMessageBody(MessageModel.fromMessageListItem(message));
populateMessageBody(MessageUserStore.message());
} else { } else {
MessageUserStore.message(null); MessageUserStore.message(null);
} }
@ -246,8 +245,7 @@ export class MailMessageList extends AbstractViewRight {
let message = new MessageModel; let message = new MessageModel;
message.folder = sFolder; message.folder = sFolder;
message.uid = iUid; message.uid = iUid;
MessageUserStore.message(message); populateMessageBody(message);
populateMessageBody(MessageUserStore.message());
} else { } else {
MessageUserStore.message(null); MessageUserStore.message(null);
} }
@ -679,7 +677,7 @@ export class MailMessageList extends AbstractViewRight {
return false; return false;
}); });
addShortcut('tab,arrowright', '', Scope.MessageList, () => { addShortcut('tab,arrowright', '', Scope.MessageList, () => {
if (MessageUserStore.message()){ if (MessageUserStore.message()) {
AppUserStore.focusedState(Scope.MessageView); AppUserStore.focusedState(Scope.MessageView);
return false; return false;
} }

View file

@ -176,8 +176,6 @@ export class MailMessageView extends AbstractViewRight {
this.addSubscribables({ this.addSubscribables({
message: message => { message: message => {
MessageUserStore.activeDom(null);
if (message) { if (message) {
if (this.viewHash !== message.hash) { if (this.viewHash !== message.hash) {
this.scrollMessageToTop(); this.scrollMessageToTop();

View file

@ -22,21 +22,4 @@ class AttachmentCollection extends \MailSo\Base\Collection
assert($oAttachment instanceof Attachment); assert($oAttachment instanceof Attachment);
parent::append($oAttachment, $bToTop); 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
);
}
} }

View file

@ -680,7 +680,7 @@ class Message implements \JsonSerializable
'ReadReceipt' => '', 'ReadReceipt' => '',
'Autocrypt' => $this->sAutocrypt, 'Autocrypt' => $this->sAutocrypt,
'Attachments' => $this->oAttachments ? $this->oAttachments->SpecData() : null, 'Attachments' => $this->oAttachments,
'Flags' => $aFlags, 'Flags' => $aFlags,

View file

@ -113,12 +113,6 @@ trait Response
return $aResult; 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 private function isFileHasThumbnail(string $sFileName) : bool
{ {
static $aCache = array(); static $aCache = array();
@ -194,6 +188,8 @@ trait Response
'FileName' => (\strlen($sSubject) ? \MailSo\Base\Utils::SecureFileName($sSubject) : 'message-'.$mResult['Uid']) . '.eml' 'FileName' => (\strlen($sSubject) ? \MailSo\Base\Utils::SecureFileName($sSubject) : 'message-'.$mResult['Uid']) . '.eml'
)); ));
$mResult['Attachments'] = $this->responseObject($mResponse->Attachments(), $sParent);
if ('Message' === $sParent) if ('Message' === $sParent)
{ {
$mResult['DraftInfo'] = $mResponse->DraftInfo(); $mResult['DraftInfo'] = $mResponse->DraftInfo();
@ -208,8 +204,6 @@ trait Response
$mResult['PgpSigned'] = $mResponse->PgpSigned(); $mResult['PgpSigned'] = $mResponse->PgpSigned();
$mResult['PgpEncrypted'] = $mResponse->PgpEncrypted(); $mResult['PgpEncrypted'] = $mResponse->PgpEncrypted();
$mResult['Attachments'] = $this->responseObject($mResponse->Attachments(), $sParent);
$mResult['ReadReceipt'] = $mResponse->ReadReceipt(); $mResult['ReadReceipt'] = $mResponse->ReadReceipt();
if (\strlen($mResult['ReadReceipt']) && !\in_array('$forwarded', $mResult['Flags'])) if (\strlen($mResult['ReadReceipt']) && !\in_array('$forwarded', $mResult['Flags']))
@ -241,7 +235,6 @@ trait Response
if ($mResponse instanceof \MailSo\Mail\Attachment) if ($mResponse instanceof \MailSo\Mail\Attachment)
{ {
$mResult = $mResponse->jsonSerialize(); $mResult = $mResponse->jsonSerialize();
$mResult['Framed'] = $this->isFileHasFramedPreview($mResult['FileName']);
$mResult['IsThumbnail'] = $this->GetCapa(Capa::ATTACHMENT_THUMBNAILS) && $this->isFileHasThumbnail($mResult['FileName']); $mResult['IsThumbnail'] = $this->GetCapa(Capa::ATTACHMENT_THUMBNAILS) && $this->isFileHasThumbnail($mResult['FileName']);
$mResult['Download'] = Utils::EncodeKeyValuesQ(array( $mResult['Download'] = Utils::EncodeKeyValuesQ(array(
'V' => APP_VERSION, 'V' => APP_VERSION,
@ -250,8 +243,7 @@ trait Response
'Uid' => $mResult['Uid'], 'Uid' => $mResult['Uid'],
'MimeIndex' => $mResult['MimeIndex'], 'MimeIndex' => $mResult['MimeIndex'],
'MimeType' => $mResult['MimeType'], 'MimeType' => $mResult['MimeType'],
'FileName' => $mResult['FileName'], 'FileName' => $mResult['FileName']
'Framed' => $mResult['Framed']
)); ));
return $mResult; return $mResult;
} }