summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--data.c50
-rw-r--r--snac.h5
2 files changed, 55 insertions, 0 deletions
diff --git a/data.c b/data.c
index 7121649..481ccbb 100644
--- a/data.c
+++ b/data.c
@@ -1347,6 +1347,56 @@ int is_muted(snac *snac, const char *actor)
1347} 1347}
1348 1348
1349 1349
1350/** pinning **/
1351
1352xs_str *_pinned_fn(snac *user, const char *id)
1353{
1354 xs *md5 = xs_md5_hex(id, strlen(id));
1355 return xs_fmt("%s/pinned/%s", user->basedir, md5);
1356}
1357
1358
1359int is_pinned(snac *user, const char *id)
1360/* returns true if this note is pinned */
1361{
1362 xs *fn = _pinned_fn(user, id);
1363 return !!(mtime(fn) != 0.0);
1364}
1365
1366
1367int pin(snac *user, const char *id)
1368/* pins a message */
1369{
1370 int ret = 0;
1371
1372 if (xs_startswith(id, user->actor)) {
1373 /* create the subfolder, if it does not exist */
1374 xs *fn = xs_fmt("%s/pinned/", user->basedir);
1375 mkdirx(fn);
1376
1377 object_user_cache_add(user, id, "pinned");
1378
1379 ret = 1;
1380 }
1381
1382 return ret;
1383}
1384
1385
1386void unpin(snac *user, const char *id)
1387/* unpin a message */
1388{
1389 object_user_cache_del(user, id, "pinned");
1390}
1391
1392
1393xs_list *pinned_list(snac *user)
1394/* return the lists of pinned posts */
1395{
1396 return object_user_cache_list(user, "pinned", XS_ALL);
1397}
1398
1399
1350xs_str *_hidden_fn(snac *snac, const char *id) 1400xs_str *_hidden_fn(snac *snac, const char *id)
1351{ 1401{
1352 xs *md5 = xs_md5_hex(id, strlen(id)); 1402 xs *md5 = xs_md5_hex(id, strlen(id));
diff --git a/snac.h b/snac.h
index 71160e7..3a2b2a7 100644
--- a/snac.h
+++ b/snac.h
@@ -126,6 +126,11 @@ void mute(snac *snac, const char *actor);
126void unmute(snac *snac, const char *actor); 126void unmute(snac *snac, const char *actor);
127int is_muted(snac *snac, const char *actor); 127int is_muted(snac *snac, const char *actor);
128 128
129int pin(snac *user, const char *id);
130void unpin(snac *user, const char *id);
131int is_pinned(snac *user, const char *id);
132xs_list *pinned_list(snac *user);
133
129void hide(snac *snac, const char *id); 134void hide(snac *snac, const char *id);
130int is_hidden(snac *snac, const char *id); 135int is_hidden(snac *snac, const char *id);
131 136