diff --git a/dev/Model/FolderCollection.js b/dev/Model/FolderCollection.js index 54ed0b753..9d427687c 100644 --- a/dev/Model/FolderCollection.js +++ b/dev/Model/FolderCollection.js @@ -68,13 +68,15 @@ export class FolderCollectionModel extends AbstractCollectionModel return super.reviveFromJson(object, oFolder => { let oCacheFolder = Cache.getFolderFromCacheList(oFolder.FullNameRaw); -/* + if (oCacheFolder) { oFolder.SubFolders = FolderCollectionModel.reviveFromJson(oFolder.SubFolders); oFolder.SubFolders && oCacheFolder.subFolders(oFolder.SubFolders); - } -*/ - if (!oCacheFolder && (oCacheFolder = FolderModel.reviveFromJson(oFolder))) { + } else { + oCacheFolder = FolderModel.reviveFromJson(oFolder); + if (!oCacheFolder) + return null; + if (1 == SystemFolders.indexOf(oFolder.FullNameRaw)) { oCacheFolder.type(FolderType.Inbox); Cache.setFolderInboxName(oFolder.FullNameRaw); @@ -82,28 +84,26 @@ export class FolderCollectionModel extends AbstractCollectionModel Cache.setFolder(oCacheFolder.fullNameHash, oFolder.FullNameRaw, oCacheFolder); } - if (oCacheFolder) { - let type = SystemFolders.indexOf(oFolder.FullNameRaw); - if (1 < type) { - oCacheFolder.type(type); + let type = SystemFolders.indexOf(oFolder.FullNameRaw); + if (1 < type) { + oCacheFolder.type(type); + } + + oCacheFolder.collapsed(!expandedFolders + || !isArray(expandedFolders) + || !expandedFolders.includes(oCacheFolder.fullNameHash)); + + if (oFolder.Extended) { + if (oFolder.Extended.Hash) { + Cache.setFolderHash(oCacheFolder.fullNameRaw, oFolder.Extended.Hash); } - oCacheFolder.collapsed(!expandedFolders - || !isArray(expandedFolders) - || !expandedFolders.includes(oCacheFolder.fullNameHash)); + if (null != oFolder.Extended.MessageCount) { + oCacheFolder.messageCountAll(oFolder.Extended.MessageCount); + } - if (oFolder.Extended) { - if (oFolder.Extended.Hash) { - Cache.setFolderHash(oCacheFolder.fullNameRaw, oFolder.Extended.Hash); - } - - if (null != oFolder.Extended.MessageCount) { - oCacheFolder.messageCountAll(oFolder.Extended.MessageCount); - } - - if (null != oFolder.Extended.MessageUnseenCount) { - oCacheFolder.messageCountUnread(oFolder.Extended.MessageUnseenCount); - } + if (null != oFolder.Extended.MessageUnseenCount) { + oCacheFolder.messageCountUnread(oFolder.Extended.MessageUnseenCount); } } return oCacheFolder; diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php index d1c5df73a..746115826 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php @@ -2083,27 +2083,28 @@ class MailClient */ public function FolderCreate(string $sFolderNameInUtf8, string $sFolderParentFullNameRaw = '', bool $bSubscribeOnCreation = true, string $sDelimiter = '') : self { - if (!strlen(\trim($sFolderNameInUtf8))) + $sFolderNameInUtf8 = \trim($sFolderNameInUtf8); + $sFolderParentFullNameRaw = \trim($sFolderParentFullNameRaw); + + if (0 === \strlen($sFolderNameInUtf8)) { throw new \MailSo\Base\Exceptions\InvalidArgumentException; } - $sFolderNameInUtf8 = \trim($sFolderNameInUtf8); - - if (0 === \strlen($sDelimiter) || 0 < \strlen(\trim($sFolderParentFullNameRaw))) + if (0 === \strlen($sDelimiter) || 0 < \strlen($sFolderParentFullNameRaw)) { - $aFolders = $this->oImapClient->FolderList('', 0 === \strlen(\trim($sFolderParentFullNameRaw)) ? 'INBOX' : $sFolderParentFullNameRaw); + $aFolders = $this->oImapClient->FolderList('', 0 === \strlen($sFolderParentFullNameRaw) ? 'INBOX' : $sFolderParentFullNameRaw); if (!$aFolders) { // TODO throw new \MailSo\Mail\Exceptions\RuntimeException( - 0 === \strlen(trim($sFolderParentFullNameRaw)) + 0 === \strlen($sFolderParentFullNameRaw) ? 'Cannot get folder delimiter' : 'Cannot create folder in non-existen parent folder'); } $sDelimiter = $aFolders[0]->Delimiter(); - if (0 < \strlen($sDelimiter) && 0 < \strlen(\trim($sFolderParentFullNameRaw))) + if (0 < \strlen($sDelimiter) && 0 < \strlen($sFolderParentFullNameRaw)) { $sFolderParentFullNameRaw .= $sDelimiter; }