summaryrefslogtreecommitdiff
path: root/data.c
diff options
context:
space:
mode:
Diffstat (limited to 'data.c')
-rw-r--r--data.c25
1 files changed, 21 insertions, 4 deletions
diff --git a/data.c b/data.c
index ebf54b1..644bb04 100644
--- a/data.c
+++ b/data.c
@@ -556,14 +556,28 @@ int object_admire(const char *id, const char *actor, int like)
556} 556}
557 557
558 558
559int object_user_cache_add(snac *snac, const char *id, const char *cachedir) 559int _object_user_cache(snac *snac, const char *id, const char *cachedir, int del)
560/* caches an object into a user cache */ 560/* adds or deletes from a user cache */
561{ 561{
562 xs *ofn = _object_fn(id); 562 xs *ofn = _object_fn(id);
563 xs *l = xs_split(ofn, "/"); 563 xs *l = xs_split(ofn, "/");
564 xs *cfn = xs_fmt("%s/%s/%s", snac->basedir, cachedir, xs_list_get(l, -1)); 564 xs *cfn = xs_fmt("%s/%s/%s", snac->basedir, cachedir, xs_list_get(l, -1));
565 565
566 return link(ofn, cfn); 566 return del ? unlink(cfn) : link(ofn, cfn);
567}
568
569
570int object_user_cache_add(snac *snac, const char *id, const char *cachedir)
571/* caches an object into a user cache */
572{
573 return _object_user_cache(snac, id, cachedir, 0);
574}
575
576
577int object_user_cache_del(snac *snac, const char *id, const char *cachedir)
578/* deletes an object from a user cache */
579{
580 return _object_user_cache(snac, id, cachedir, 1);
567} 581}
568 582
569 583
@@ -737,7 +751,10 @@ int timeline_del(snac *snac, char *id)
737 ret = 200; 751 ret = 200;
738 } 752 }
739 753
740 object_del(id); 754 if (valid_status(object_del(id))) {
755 object_user_cache_del(snac, id, "public");
756 object_user_cache_del(snac, id, "private");
757 }
741 758
742 return ret; 759 return ret;
743} 760}