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) {
folder.deep = json.FullNameRaw.split(folder.delimiter).length - 1;
let type = folder.metadata[FolderMetadataKeys.KolabFolderType]
|| folder.metadata[FolderMetadataKeys.KolabFolderTypeShared];
type && !type.includes('mail.') && folder.kolabType(type);
let type = (folder.metadata[FolderMetadataKeys.KolabFolderType]
|| folder.metadata[FolderMetadataKeys.KolabFolderTypeShared]
|| ''
).split('.')[0];
type && 'mail' != type && folder.kolabType(type);
folder.messageCountAll = ko.computed({
read: folder.privateMessageCountAll,

View file

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

View file

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

View file

@ -320,27 +320,33 @@ class ResponseCollection extends \MailSo\Base\Collection
$oResult->Flags = $oResponse->ResponseList[2];
}
if (is_array($oResponse->OptionalResponse) && \count($oResponse->OptionalResponse) > 1) {
if ('PERMANENTFLAGS' === $oResponse->OptionalResponse[0]
&& is_array($oResponse->OptionalResponse[1]))
{
$oResult->PermanentFlags = $oResponse->OptionalResponse[1];
}
else if ('UIDVALIDITY' === $oResponse->OptionalResponse[0])
{
$oResult->Uidvalidity = (int) $oResponse->OptionalResponse[1];
}
else if ('UNSEEN' === $oResponse->OptionalResponse[0])
{
$oResult->Unread = (int) $oResponse->OptionalResponse[1];
}
else if ('UIDNEXT' === $oResponse->OptionalResponse[0])
{
$oResult->Uidnext = (int) $oResponse->OptionalResponse[1];
}
else if ('HIGHESTMODSEQ' === $oResponse->OptionalResponse[0])
{
$oResult->HighestModSeq = (int) $oResponse->OptionalResponse[1];
if (\is_array($oResponse->OptionalResponse)) {
if (\count($oResponse->OptionalResponse) > 1) {
if ('PERMANENTFLAGS' === $oResponse->OptionalResponse[0]
&& is_array($oResponse->OptionalResponse[1]))
{
$oResult->PermanentFlags = $oResponse->OptionalResponse[1];
}
else if ('UIDVALIDITY' === $oResponse->OptionalResponse[0])
{
$oResult->Uidvalidity = (int) $oResponse->OptionalResponse[1];
}
else if ('UNSEEN' === $oResponse->OptionalResponse[0])
{
$oResult->Unread = (int) $oResponse->OptionalResponse[1];
}
else if ('UIDNEXT' === $oResponse->OptionalResponse[0])
{
$oResult->Uidnext = (int) $oResponse->OptionalResponse[1];
}
else if ('HIGHESTMODSEQ' === $oResponse->OptionalResponse[0])
{
$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;
}
}