libidav/jmapsession.c

branch
dav-2
changeset 927
0bcf3d69b37a
parent 925
61a231a8d8f5
--- a/libidav/jmapsession.c	Thu Jul 09 22:07:33 2026 +0200
+++ b/libidav/jmapsession.c	Fri Jul 10 17:56:21 2026 +0200
@@ -78,16 +78,33 @@
     CxJsonValue *uploadUrl = cxJsonObjGet(sessionValue, "uploadUrl");
     
     if(cxJsonIsString(username)) {
-        sn->username = cx_strdup_a(mp->allocator, username->string.ptr).ptr;
+        sn->username = cx_strdup_a(mp->allocator, username->string).ptr;
     }
     if(cxJsonIsString(apiUrl)) {
-        sn->apiUrl = cx_strdup_a(mp->allocator, apiUrl->string.ptr).ptr;
+        sn->apiUrl = cx_strdup_a(mp->allocator, apiUrl->string).ptr;
     }
     if(cxJsonIsString(downloadUrl)) {
-        sn->downloadUrl = cx_strdup_a(mp->allocator, downloadUrl->string.ptr).ptr;
+        sn->downloadUrl = cx_strdup_a(mp->allocator, downloadUrl->string).ptr;
     }
     if(cxJsonIsString(uploadUrl)) {
-        sn->uploadUrl = cx_strdup_a(mp->allocator, uploadUrl->string.ptr).ptr;
+        sn->uploadUrl = cx_strdup_a(mp->allocator, uploadUrl->string).ptr;
+    }
+    
+    // primary accounts
+    CxJsonValue *primary_accounts = cxJsonObjGet(sessionValue, "primaryAccounts");
+    if(cxJsonIsObject(primary_accounts)) {
+        CxJsonValue *pm_mail = cxJsonObjGet(primary_accounts, "urn:ietf:params:jmap:mail");
+        CxJsonValue *pm_contacts = cxJsonObjGet(primary_accounts, "urn:ietf:params:jmap:contacts");
+        CxJsonValue *pm_calendars = cxJsonObjGet(primary_accounts, "urn:ietf:params:jmap:calendars");
+        if(cxJsonIsString(pm_mail)) {
+            sn->primary_accounts.mail = cx_strdup_a(mp->allocator, pm_mail->string).ptr;
+        }
+        if(cxJsonIsString(pm_contacts)) {
+            sn->primary_accounts.contacts = cx_strdup_a(mp->allocator, pm_contacts->string).ptr;
+        }
+        if(cxJsonIsString(pm_calendars)) {
+            sn->primary_accounts.calendars = cx_strdup_a(mp->allocator, pm_calendars->string).ptr;
+        }
     }
     
     return sn;

mercurial