summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
authordefault <nobody@localhost>2022-09-26 07:13:39 +0200
committerdefault <nobody@localhost>2022-09-26 07:13:39 +0200
commitd1a2a7438dddc898b794a7a9b3b0961afc1a36e4 (patch)
tree09586a035fb76a7c1ddaa78e3573629ea3b1c5cf /data.c
parentb5be6a017220820f48e896531737d07122364621 (diff)
New metadata 'referrer', that contains an actor.
This field contains the actor that boosted an entry.
Diffstat (limited to 'data.c')
-rw-r--r--data.c36
1 files changed, 19 insertions, 17 deletions
diff --git a/data.c b/data.c
index d823f88..f69ab03 100644
--- a/data.c
+++ b/data.c
@@ -526,7 +526,7 @@ void _timeline_write(snac *snac, char *id, char *msg, char *parent)
}
-int timeline_add(snac *snac, char *id, char *o_msg, char *parent)
+int timeline_add(snac *snac, char *id, char *o_msg, char *parent, char *referrer)
/* adds a message to the timeline */
{
xs *pfn = _timeline_find_fn(snac, id);
@@ -545,12 +545,16 @@ int timeline_add(snac *snac, char *id, char *o_msg, char *parent)
"\"liked_by\": [],"
"\"announced_by\": [],"
"\"version\": \"snac/2.x\","
+ "\"referrer\": null,"
"\"parent\": null"
"}");
if (!xs_is_null(parent))
md = xs_dict_set(md, "parent", parent);
+ if (!xs_is_null(referrer))
+ md = xs_dict_set(md, "parent", referrer);
+
msg = xs_dict_set(msg, "_snac", md);
_timeline_write(snac, id, msg, parent);
@@ -569,7 +573,6 @@ void timeline_admire(snac *snac, char *id, char *admirer, int like)
FILE *f;
if (ofn != NULL && (f = fopen(ofn, "r")) != NULL) {
- int changed = 0;
xs *j1 = xs_readall(f);
fclose(f);
@@ -583,27 +586,26 @@ void timeline_admire(snac *snac, char *id, char *admirer, int like)
list = xs_dup(xs_dict_get(meta, "announced_by"));
/* add the admirer if it's not already there */
- if (xs_list_in(list, admirer) == -1) {
+ if (xs_list_in(list, admirer) == -1)
list = xs_list_append(list, admirer);
- changed = 1;
- }
- if (changed) {
- /* re-store */
- if (like)
- meta = xs_dict_set(meta, "liked_by", list);
- else
- meta = xs_dict_set(meta, "announced_by", list);
+ /* set the admirer as the referrer */
+ meta = xs_dict_set(meta, "referrer", admirer);
+
+ /* re-store */
+ if (like)
+ meta = xs_dict_set(meta, "liked_by", list);
+ else
+ meta = xs_dict_set(meta, "announced_by", list);
- msg = xs_dict_set(msg, "_snac", meta);
+ msg = xs_dict_set(msg, "_snac", meta);
- unlink(ofn);
+ unlink(ofn);
- _timeline_write(snac, id, msg, xs_dict_get(meta, "parent"));
+ _timeline_write(snac, id, msg, xs_dict_get(meta, "parent"));
- snac_log(snac, xs_fmt("timeline_admire (%s) %s %s",
- like ? "Like" : "Announce", id, admirer));
- }
+ snac_log(snac, xs_fmt("timeline_admire (%s) %s %s",
+ like ? "Like" : "Announce", id, admirer));
}
}