commit 9a730ff

default  ·  2024-08-29 04:40:38 +0000 UTC
parent 5cbb315
New function object_user_cache_fn().
1 files changed,  +58, -14
M data.c
M data.c
+58, -14
  1@@ -1013,13 +1013,19 @@ int object_unadmire(const char *id, const char *actor, int like)
  2 }
  3 
  4 
  5-int _object_user_cache(snac *snac, const char *id, const char *cachedir, int del)
  6+xs_str *object_user_cache_fn(snac *user, const char *id, const char *cachedir)
  7+{
  8+    xs *md5 = xs_md5_hex(id, strlen(id));
  9+    return xs_fmt("%s/%s/%s.json", user->basedir, cachedir, md5);
 10+}
 11+
 12+
 13+int _object_user_cache(snac *user, const char *id, const char *cachedir, int del)
 14 /* adds or deletes from a user cache */
 15 {
 16     xs *ofn = _object_fn(id);
 17-    xs *l   = xs_split(ofn, "/");
 18-    xs *cfn = xs_fmt("%s/%s/%s", snac->basedir, cachedir, xs_list_get(l, -1));
 19-    xs *idx = xs_fmt("%s/%s.idx", snac->basedir, cachedir);
 20+    xs *cfn = object_user_cache_fn(user, id, cachedir);
 21+    xs *idx = xs_fmt("%s/%s.idx", user->basedir, cachedir);
 22     int ret;
 23 
 24     if (del) {
 25@@ -1035,34 +1041,32 @@ int _object_user_cache(snac *snac, const char *id, const char *cachedir, int del
 26 }
 27 
 28 
 29-int object_user_cache_add(snac *snac, const char *id, const char *cachedir)
 30+int object_user_cache_add(snac *user, const char *id, const char *cachedir)
 31 /* caches an object into a user cache */
 32 {
 33-    return _object_user_cache(snac, id, cachedir, 0);
 34+    return _object_user_cache(user, id, cachedir, 0);
 35 }
 36 
 37 
 38-int object_user_cache_del(snac *snac, const char *id, const char *cachedir)
 39+int object_user_cache_del(snac *user, const char *id, const char *cachedir)
 40 /* deletes an object from a user cache */
 41 {
 42-    return _object_user_cache(snac, id, cachedir, 1);
 43+    return _object_user_cache(user, id, cachedir, 1);
 44 }
 45 
 46 
 47-int object_user_cache_in(snac *snac, const char *id, const char *cachedir)
 48+int object_user_cache_in(snac *user, const char *id, const char *cachedir)
 49 /* checks if an object is stored in a cache */
 50 {
 51-    xs *md5 = xs_md5_hex(id, strlen(id));
 52-    xs *cfn = xs_fmt("%s/%s/%s.json", snac->basedir, cachedir, md5);
 53-
 54+    xs *cfn = object_user_cache_fn(user, id, cachedir);
 55     return !!(mtime(cfn) != 0.0);
 56 }
 57 
 58 
 59-xs_list *object_user_cache_list(snac *snac, const char *cachedir, int max, int inv)
 60+xs_list *object_user_cache_list(snac *user, const char *cachedir, int max, int inv)
 61 /* returns the objects in a cache as a list */
 62 {
 63-    xs *idx = xs_fmt("%s/%s.idx", snac->basedir, cachedir);
 64+    xs *idx = xs_fmt("%s/%s.idx", user->basedir, cachedir);
 65     return inv ? index_list_desc(idx, 0, max) : index_list(idx, max);
 66 }
 67 
 68@@ -1535,6 +1539,44 @@ int is_muted(snac *snac, const char *actor)
 69 }
 70 
 71 
 72+/** bookmarking **/
 73+
 74+xs_str *_bookmark_fn(snac *user, const char *id)
 75+{
 76+    xs *md5 = xs_md5_hex(id, strlen(id));
 77+    return xs_fmt("%s/bookmark/%s.json", user->basedir, md5);
 78+}
 79+
 80+
 81+int is_bookmarked(snac *user, const char *id)
 82+/* returns true if this note is bookmarked */
 83+{
 84+    xs *fn = _bookmark_fn(user, id);
 85+    return !!(mtime(fn) != 0.0);
 86+}
 87+
 88+
 89+int bookmark(snac *user, const char *id)
 90+/* bookmarks a post */
 91+{
 92+    if (is_bookmarked(user, id))
 93+        return -3;
 94+
 95+    /* create the subfolder, if it does not exist */
 96+    xs *fn = xs_fmt("%s/bookmark/", user->basedir);
 97+    mkdirx(fn);
 98+
 99+    return object_user_cache_add(user, id, "bookmark");
100+}
101+
102+
103+int unbookmark(snac *user, const char *id)
104+/* unbookmarks a post */
105+{
106+    return object_user_cache_del(user, id, "bookmark");
107+}
108+
109+
110 /** pinning **/
111 
112 xs_str *_pinned_fn(snac *user, const char *id)
113@@ -1602,6 +1644,8 @@ xs_list *pinned_list(snac *user)
114 }
115 
116 
117+/** hiding **/
118+
119 xs_str *_hidden_fn(snac *snac, const char *id)
120 {
121     xs *md5 = xs_md5_hex(id, strlen(id));