summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
authorGravatar default2022-09-20 11:16:24 +0200
committerGravatar default2022-09-20 11:16:24 +0200
commitf6b34ce539e3db3803333038abaff90a2bcab71f (patch)
treebde2980dfb4cf71a9b2caa1e2894168eaadc9b8c /data.c
parentMore timeline work. (diff)
downloadsnac2-f6b34ce539e3db3803333038abaff90a2bcab71f.tar.gz
snac2-f6b34ce539e3db3803333038abaff90a2bcab71f.tar.xz
snac2-f6b34ce539e3db3803333038abaff90a2bcab71f.zip
More timeline work.
Diffstat (limited to 'data.c')
-rw-r--r--data.c49
1 files changed, 49 insertions, 0 deletions
diff --git a/data.c b/data.c
index b03a84f..a1a9f66 100644
--- a/data.c
+++ b/data.c
@@ -377,3 +377,52 @@ d_char *timeline_list(snac *snac)
377 377
378 return list; 378 return list;
379} 379}
380
381
382void timeline_add(snac *snac, char *id, char *msg, char *parent)
383/* adds a message to the timeline */
384{
385 xs *pfn = _timeline_find_fn(snac, id);
386 FILE *f;
387
388 if (pfn != NULL) {
389 snac_log(snac, xs_fmt("timeline_add refusing rewrite %s %s", id, pfn));
390 return;
391 }
392
393 /* build the new filename */
394 xs *ntid = tid();
395 xs *md5 = xs_md5_hex(id, strlen(id));
396 xs *fn = xs_fmt("%s/timeline/%s-%s.json", snac->basedir, ntid, md5);
397 xs *md;
398
399 /* add metadata */
400 md = xs_json_loads("{"
401 "\"children\": [],"
402 "\"liked_by\": [],"
403 "\"announced_by\": [],"
404 "\"parent\": null"
405 "}");
406
407 if (parent != NULL)
408 md = xs_dict_set(md, "parent", parent);
409
410 msg = xs_dict_set(msg, "_snac", md);
411
412 if ((f = fopen(fn, "w")) != NULL) {
413 xs *j = xs_json_dumps_pp(msg, 4);
414
415 fwrite(j, strlen(j), 1, f);
416 fclose(f);
417
418 snac_debug(snac, 1, xs_fmt("timeline_add %s %s", id, fn));
419 }
420
421 /* generated by this user? link to local timeline */
422 if (xs_startswith(id, snac->actor)) {
423 xs *lfn = xs_replace(fn, "/timeline/", "/local/");
424 link(fn, lfn);
425
426 snac_debug(snac, 1, xs_fmt("timeline_add (local) %s %s", id, lfn));
427 }
428}