Improved kolab folder-type detection as they can also be appended with '.default'

This commit is contained in:
djmaze 2021-10-19 12:44:09 +02:00
parent 9f5f066dbf
commit c8a5ae5c3a
4 changed files with 35 additions and 24 deletions

View file

@ -236,9 +236,11 @@ export class FolderModel extends AbstractModel {
if (folder) { if (folder) {
folder.deep = json.FullNameRaw.split(folder.delimiter).length - 1; folder.deep = json.FullNameRaw.split(folder.delimiter).length - 1;
let type = folder.metadata[FolderMetadataKeys.KolabFolderType] let type = (folder.metadata[FolderMetadataKeys.KolabFolderType]
|| folder.metadata[FolderMetadataKeys.KolabFolderTypeShared]; || folder.metadata[FolderMetadataKeys.KolabFolderTypeShared]
type && !type.includes('mail.') && folder.kolabType(type); || ''
).split('.')[0];
type && 'mail' != type && folder.kolabType(type);
folder.messageCountAll = ko.computed({ folder.messageCountAll = ko.computed({
read: folder.privateMessageCountAll, read: folder.privateMessageCountAll,

View file

@ -139,6 +139,7 @@ export class FoldersUserSettings /*extends AbstractViewSettings*/ {
toggleFolderKolabType(folder, event) { toggleFolderKolabType(folder, event) {
let type = event.target.value; let type = event.target.value;
// TODO: append '.default' ?
Remote.folderSetMetadata(()=>0, folder.fullNameRaw, FolderMetadataKeys.KolabFolderType, type); Remote.folderSetMetadata(()=>0, folder.fullNameRaw, FolderMetadataKeys.KolabFolderType, type);
folder.kolabType(type); folder.kolabType(type);
} }

View file

@ -38,11 +38,13 @@ class FolderInformation
public $PermanentFlags = array(); public $PermanentFlags = array();
/** /**
* https://datatracker.ietf.org/doc/html/rfc3501#section-7.3.1
* @var int * @var int
*/ */
public $Exists = null; public $Exists = null;
/** /**
* https://datatracker.ietf.org/doc/html/rfc3501#section-7.3.2
* @var int * @var int
*/ */
public $Recent = null; public $Recent = null;

View file

@ -320,27 +320,33 @@ class ResponseCollection extends \MailSo\Base\Collection
$oResult->Flags = $oResponse->ResponseList[2]; $oResult->Flags = $oResponse->ResponseList[2];
} }
if (is_array($oResponse->OptionalResponse) && \count($oResponse->OptionalResponse) > 1) { if (\is_array($oResponse->OptionalResponse)) {
if ('PERMANENTFLAGS' === $oResponse->OptionalResponse[0] if (\count($oResponse->OptionalResponse) > 1) {
&& is_array($oResponse->OptionalResponse[1])) if ('PERMANENTFLAGS' === $oResponse->OptionalResponse[0]
{ && is_array($oResponse->OptionalResponse[1]))
$oResult->PermanentFlags = $oResponse->OptionalResponse[1]; {
} $oResult->PermanentFlags = $oResponse->OptionalResponse[1];
else if ('UIDVALIDITY' === $oResponse->OptionalResponse[0]) }
{ else if ('UIDVALIDITY' === $oResponse->OptionalResponse[0])
$oResult->Uidvalidity = (int) $oResponse->OptionalResponse[1]; {
} $oResult->Uidvalidity = (int) $oResponse->OptionalResponse[1];
else if ('UNSEEN' === $oResponse->OptionalResponse[0]) }
{ else if ('UNSEEN' === $oResponse->OptionalResponse[0])
$oResult->Unread = (int) $oResponse->OptionalResponse[1]; {
} $oResult->Unread = (int) $oResponse->OptionalResponse[1];
else if ('UIDNEXT' === $oResponse->OptionalResponse[0]) }
{ else if ('UIDNEXT' === $oResponse->OptionalResponse[0])
$oResult->Uidnext = (int) $oResponse->OptionalResponse[1]; {
} $oResult->Uidnext = (int) $oResponse->OptionalResponse[1];
else if ('HIGHESTMODSEQ' === $oResponse->OptionalResponse[0]) }
{ else if ('HIGHESTMODSEQ' === $oResponse->OptionalResponse[0])
$oResult->HighestModSeq = (int) $oResponse->OptionalResponse[1]; {
$oResult->HighestModSeq = (int) $oResponse->OptionalResponse[1];
}
} else if ('READ-ONLY' === $oResponse->OptionalResponse[0]) {
// $oResult->IsWritable = false;
} else if ('READ-WRITE' === $oResponse->OptionalResponse[0]) {
// $oResult->IsWritable = true;
} }
} }