Just check if there is anything in the contact, it shouldn't matter what.
- Feed Queries
- All Stories
- Search
- Feed Search
- Transactions
- Transaction Logs
May 2 2025
The empty string works and is rendered as "Name is unavailable" in Outlook.
May 1 2025
In D5223#66996, @machniak wrote:Wouldn't it be easier to remember which folder is missing in Sync/Ping (e.g. using cache) and then in FolderSync treat it as deleted?
In D5226#66984, @machniak wrote:Maybe setting it to an empty string would work, but we're ignoring such values on our side (AXMLEntry::appendXML()), so we'd have to change how we handle empty strings. Maybe it was a problem for the original Syncroton authors implementation, but I think this change should be safe for us. So, I'd propose to try this first.
In D5229#66975, @machniak wrote:The Kolab3 XML objects are read like this:
$emails = $this->obj->emailAddresses(); if ($emails instanceof vectoremail) { $emailtypes = array_flip($this->emailtypes); for ($i = 0; $i < $emails->size(); $i++) { $email = $emails->get($i); $object['email'][] = ['address' => $email->address(), 'type' => $emailtypes[$email->types()]]; } } else { $object['email'] = self::vector2array($emails); }but Kolab4 vCards are read using rcube_vcard::get_assoc(), so the output is different. We have to support both. And looking at the code it seems that writing is also broken. I can work on this.
The writing side currently crashes for similar reasons I think (we insert an array where a string would be expected).
I think on the reading side the problem is that we get:
Apr 30 2025
I'm aware that we're not actually taking the is_deleted flag into account anywhere, but I haven't found a place where it matters yet.
Apr 29 2025
Apr 24 2025
Apr 19 2025
Apr 18 2025
I think kolab_subscriptions.php is missing?
We should probably just get this merged, but it would be nice if we could fall-back to the metadata value for a seamless upgrade path (not sure what the current state is).
Cache clearing works now
Looks good. For the theme / logo we'll have to contemplate where to store the actual image/theme. I could see it being an http link to with the backend being s3 or cephfs. I suppose for the image that would just work, and for the theme we would require some caching logic to download the theme as required.
Looks good apart from the comment.
This now properly tests the metadata cache issue.
Apr 16 2025
We either have time left to sleep, or we break. So no point in having the min anymore.
Avoid unnecessary and confusing secondsLeft updates
In D5202#66198, @machniak wrote:I'm going to keep tests against a real backend in tests/Feature/Backends/, where all IMAP methods should have it's test. Also DataMigrator tests and Infrastructure tests will stay this way.
But anywhere else we can use mocking.
I think this is a good idea. There's always a tradeoff where there is some value in testing against the actual backend vs having a mock + a separate imap backend test. But I think especially we the currently relatively simple interface having a mock makes a lot of sense to make our tests faster and more robust.
Apr 14 2025
In D5196#66111, @machniak wrote:That's not exactly the same as doing it in another client. I don't like the test code in Ping command code. Maybe create a php script that will sleep for a few seconds and then do the metadata update, which you could call using exec() before the Ping request in the test.
Apr 13 2025
Added some tests
Stick to the logic that we only sleep if we have a at least ping-timeout + 10s left.
Apr 12 2025
Adjust the kolab4 implementation as well
Apr 11 2025
Apr 9 2025
I think we'll need the same in the metrics controller.