Bugfix: inboxFolderName was incorrect

You could have potentionally deleted INBOX and other issues
This commit is contained in:
djmaze 2020-10-15 12:23:11 +02:00
parent 3bfe2c67d1
commit b68d04aacd
4 changed files with 23 additions and 26 deletions

View file

@ -7,7 +7,7 @@ let FOLDERS_CACHE = {},
FOLDERS_UID_NEXT_CACHE = {}, FOLDERS_UID_NEXT_CACHE = {},
MESSAGE_FLAGS_CACHE = {}, MESSAGE_FLAGS_CACHE = {},
NEW_MESSAGE_CACHE = {}, NEW_MESSAGE_CACHE = {},
inboxFolderName = ''; inboxFolderName = 'INBOX';
const REQUESTED_MESSAGE_CACHE = {}; const REQUESTED_MESSAGE_CACHE = {};
@ -79,7 +79,14 @@ export function clearNewMessageCache() {
* @returns {string} * @returns {string}
*/ */
export function getFolderInboxName() { export function getFolderInboxName() {
return inboxFolderName || 'INBOX'; return inboxFolderName;
}
/**
* @returns {string}
*/
export function setFolderInboxName(name) {
inboxFolderName = name;
} }
/** /**
@ -93,12 +100,11 @@ export function getFolderFullNameRaw(folderHash) {
/** /**
* @param {string} folderHash * @param {string} folderHash
* @param {string} folderFullNameRaw * @param {string} folderFullNameRaw
* @param {?FolderModel} folder
*/ */
export function setFolderFullNameRaw(folderHash, folderFullNameRaw) { export function setFolder(folderHash, folderFullNameRaw, folder) {
FOLDERS_CACHE[folderFullNameRaw] = folder;
FOLDERS_NAME_CACHE[folderHash] = folderFullNameRaw; FOLDERS_NAME_CACHE[folderHash] = folderFullNameRaw;
if (!inboxFolderName || 'INBOX' === folderFullNameRaw) {
inboxFolderName = folderFullNameRaw;
}
} }
/** /**
@ -145,19 +151,11 @@ export function getFolderFromCacheList(folderFullNameRaw) {
return folderFullNameRaw && FOLDERS_CACHE[folderFullNameRaw] ? FOLDERS_CACHE[folderFullNameRaw] : null; return folderFullNameRaw && FOLDERS_CACHE[folderFullNameRaw] ? FOLDERS_CACHE[folderFullNameRaw] : null;
} }
/**
* @param {string} folderFullNameRaw
* @param {?FolderModel} folder
*/
export function setFolderToCacheList(folderFullNameRaw, folder) {
FOLDERS_CACHE[folderFullNameRaw] = folder;
}
/** /**
* @param {string} folderFullNameRaw * @param {string} folderFullNameRaw
*/ */
export function removeFolderFromCacheList(folderFullNameRaw) { export function removeFolderFromCacheList(folderFullNameRaw) {
setFolderToCacheList(folderFullNameRaw, null); delete FOLDERS_CACHE[folderFullNameRaw];
} }
/** /**

View file

@ -3,7 +3,6 @@ import ko from 'ko';
import { FolderType } from 'Common/Enums'; import { FolderType } from 'Common/Enums';
import { isPosNumeric } from 'Common/UtilsUser'; import { isPosNumeric } from 'Common/UtilsUser';
import { i18n, trigger as translatorTrigger } from 'Common/Translator'; import { i18n, trigger as translatorTrigger } from 'Common/Translator';
import { getFolderInboxName } from 'Common/Cache';
import { AbstractModel } from 'Knoin/AbstractModel'; import { AbstractModel } from 'Knoin/AbstractModel';
@ -56,8 +55,6 @@ class FolderModel extends AbstractModel {
* @returns {FolderModel} * @returns {FolderModel}
*/ */
initComputed() { initComputed() {
const inboxFolderName = getFolderInboxName();
this.isInbox = ko.computed(() => FolderType.Inbox === this.type()); this.isInbox = ko.computed(() => FolderType.Inbox === this.type());
this.hasSubScribedSubfolders = ko.computed( this.hasSubScribedSubfolders = ko.computed(
@ -136,11 +133,11 @@ class FolderModel extends AbstractModel {
this.canBeDeleted = ko.computed(() => { this.canBeDeleted = ko.computed(() => {
const bSystem = this.isSystemFolder(); const bSystem = this.isSystemFolder();
return !bSystem && !this.subFolders().length && inboxFolderName !== this.fullNameRaw; return !bSystem && !this.subFolders().length;
}); });
this.canBeSubScribed = ko.computed( this.canBeSubScribed = ko.computed(
() => !this.isSystemFolder() && this.selectable && inboxFolderName !== this.fullNameRaw () => !this.isSystemFolder() && this.selectable
); );
this.canBeChecked = this.canBeSubScribed; this.canBeChecked = this.canBeSubScribed;
@ -263,7 +260,6 @@ class FolderModel extends AbstractModel {
*/ */
initByJson(json) { initByJson(json) {
let bResult = false; let bResult = false;
const sInboxFolderName = getFolderInboxName();
if (json && 'Object/Folder' === json['@Object']) { if (json && 'Object/Folder' === json['@Object']) {
this.name(json.Name); this.name(json.Name);
@ -278,8 +274,6 @@ class FolderModel extends AbstractModel {
this.subScribed(!!json.IsSubscribed); this.subScribed(!!json.IsSubscribed);
this.checkable(!!json.Checkable); this.checkable(!!json.Checkable);
this.type(sInboxFolderName === this.fullNameRaw ? FolderType.Inbox : FolderType.User);
bResult = true; bResult = true;
} }

View file

@ -2,7 +2,7 @@ import { AbstractCollectionModel } from 'Model/AbstractCollection';
import { UNUSED_OPTION_VALUE } from 'Common/Consts'; import { UNUSED_OPTION_VALUE } from 'Common/Consts';
import { pInt } from 'Common/Utils'; import { pInt } from 'Common/Utils';
import { ClientSideKeyName, ServerFolderType } from 'Common/Enums'; import { ClientSideKeyName, FolderType, ServerFolderType } from 'Common/Enums';
import * as Cache from 'Common/Cache'; import * as Cache from 'Common/Cache';
import * as Local from 'Storage/Client'; import * as Local from 'Storage/Client';
@ -55,8 +55,11 @@ export class FolderCollectionModel extends AbstractCollectionModel
if (!oCacheFolder) { if (!oCacheFolder) {
oCacheFolder = FolderModel.newInstanceFromJson(oFolder); oCacheFolder = FolderModel.newInstanceFromJson(oFolder);
if (oCacheFolder) { if (oCacheFolder) {
Cache.setFolderToCacheList(oFolder.FullNameRaw, oCacheFolder); if (oFolder.FullNameRaw == result.SystemFolders[ServerFolderType.INBOX]) {
Cache.setFolderFullNameRaw(oCacheFolder.fullNameHash, oFolder.FullNameRaw, oCacheFolder); oCacheFolder.type(FolderType.Inbox);
Cache.setFolderInboxName(oFolder.FullNameRaw);
}
Cache.setFolder(oCacheFolder.fullNameHash, oFolder.FullNameRaw, oCacheFolder);
} }
} }

View file

@ -3108,6 +3108,7 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
{ {
$iFolderListType = $oFolder->GetFolderListType(); $iFolderListType = $oFolder->GetFolderListType();
if (!isset($aResult[$iFolderListType]) && \in_array($iFolderListType, array( if (!isset($aResult[$iFolderListType]) && \in_array($iFolderListType, array(
\MailSo\Imap\Enumerations\FolderType::INBOX,
\MailSo\Imap\Enumerations\FolderType::SENT, \MailSo\Imap\Enumerations\FolderType::SENT,
\MailSo\Imap\Enumerations\FolderType::DRAFTS, \MailSo\Imap\Enumerations\FolderType::DRAFTS,
\MailSo\Imap\Enumerations\FolderType::JUNK, \MailSo\Imap\Enumerations\FolderType::JUNK,
@ -3139,6 +3140,7 @@ NewThemeLink IncludeCss TemplatesLink LangLink IncludeBackground PluginsLink Aut
{ {
$iFolderType = isset($aMap[$sName]) ? $aMap[$sName] : $aMap[$sFullName]; $iFolderType = isset($aMap[$sName]) ? $aMap[$sName] : $aMap[$sFullName];
if (!isset($aResult[$iFolderType]) && \in_array($iFolderType, array( if (!isset($aResult[$iFolderType]) && \in_array($iFolderType, array(
\MailSo\Imap\Enumerations\FolderType::INBOX,
\MailSo\Imap\Enumerations\FolderType::SENT, \MailSo\Imap\Enumerations\FolderType::SENT,
\MailSo\Imap\Enumerations\FolderType::DRAFTS, \MailSo\Imap\Enumerations\FolderType::DRAFTS,
\MailSo\Imap\Enumerations\FolderType::JUNK, \MailSo\Imap\Enumerations\FolderType::JUNK,