comparison mcabber/src/jabglue.c @ 1018:45d022fbce3a

XEP-0145: Handle dates Save cdate and mdate when creating/updating an annotation.
author Mikael Berthe <mikael@lilotux.net>
date Wed, 15 Nov 2006 19:27:59 +0100
parents 41f9a2a4c1de
children 9d5f6e0ea7b3
comparison
equal deleted inserted replaced
1017:41f9a2a4c1de 1018:45d022fbce3a
1280 // If note is nil, we remove the existing note. 1280 // If note is nil, we remove the existing note.
1281 void jb_set_storage_rosternotes(const char *barejid, const char *note) 1281 void jb_set_storage_rosternotes(const char *barejid, const char *note)
1282 { 1282 {
1283 xmlnode x; 1283 xmlnode x;
1284 bool changed = FALSE; 1284 bool changed = FALSE;
1285 const char *cdate = NULL;
1285 1286
1286 if (!barejid) 1287 if (!barejid)
1287 return; 1288 return;
1288 1289
1289 // If we have no rosternotes, probably the server doesn't support them. 1290 // If we have no rosternotes, probably the server doesn't support them.
1305 if (!jid) 1306 if (!jid)
1306 continue; 1307 continue;
1307 if (!strcmp(jid, barejid)) { 1308 if (!strcmp(jid, barejid)) {
1308 // We've found a note for this jid. Let's hide it and we'll 1309 // We've found a note for this jid. Let's hide it and we'll
1309 // create a new one. 1310 // create a new one.
1311 cdate = xmlnode_get_attrib(x, "cdate");
1310 xmlnode_hide(x); 1312 xmlnode_hide(x);
1311 changed = TRUE; 1313 changed = TRUE;
1312 break; 1314 break;
1313 } 1315 }
1314 } 1316 }
1315 } 1317 }
1316 1318
1317 // Let's create a node for this jid, if the note is not NULL. 1319 // Let's create a node for this jid, if the note is not NULL.
1318 if (note) { 1320 if (note) {
1321 char mdate[20];
1322 time_t now;
1323 time(&now);
1324 to_iso8601(mdate, now);
1325 if (!cdate)
1326 cdate = mdate;
1319 x = xmlnode_insert_tag(rosternotes, "note"); 1327 x = xmlnode_insert_tag(rosternotes, "note");
1320 xmlnode_put_attrib(x, "jid", barejid); 1328 xmlnode_put_attrib(x, "jid", barejid);
1329 xmlnode_put_attrib(x, "cdate", cdate);
1330 xmlnode_put_attrib(x, "mdate", mdate);
1321 xmlnode_insert_cdata(x, note, -1); 1331 xmlnode_insert_cdata(x, note, -1);
1322 changed = TRUE; 1332 changed = TRUE;
1323 } 1333 }
1324 1334
1325 if (!changed) 1335 if (!changed)