Просмотр исходного кода

Added a pending follow request count next to the "people" link.

grunfink 1 год назад
Родитель
Сommit
ee84140ecc
3 измененных файлов с 23 добавлено и 0 удалено
  1. 10 0
      data.c
  2. 12 0
      html.c
  3. 1 0
      snac.h

+ 10 - 0
data.c

@@ -1335,6 +1335,16 @@ xs_list *pending_list(snac *user)
 }
 
 
+int pending_count(snac *user)
+/* returns the number of pending follow confirmations */
+{
+    xs *spec = xs_fmt("%s/pending/""*.json", user->basedir);
+    xs *l = xs_glob(spec, 0, 0);
+
+    return xs_list_len(l);
+}
+
+
 /** timeline **/
 
 double timeline_mtime(snac *snac)

+ 12 - 0
html.c

@@ -923,7 +923,9 @@ static xs_html *html_user_body(snac *user, int read_only)
     }
     else {
         int n_len = notify_new_num(user);
+        int p_len = pending_count(user);
         xs_html *notify_count = NULL;
+        xs_html *pending_follow_count = NULL;
 
         /* show the number of new notifications, if there are any */
         if (n_len) {
@@ -935,6 +937,15 @@ static xs_html *html_user_body(snac *user, int read_only)
         else
             notify_count = xs_html_text("");
 
+        if (p_len) {
+            xs *s = xs_fmt(" %d ", p_len);
+            pending_follow_count = xs_html_tag("sup",
+                xs_html_attr("style", "background-color: red; color: white;"),
+                xs_html_text(s));
+        }
+        else
+            pending_follow_count = xs_html_text("");
+
         xs *admin_url = xs_fmt("%s/admin", user->actor);
         xs *notify_url = xs_fmt("%s/notifications", user->actor);
         xs *people_url = xs_fmt("%s/people", user->actor);
@@ -957,6 +968,7 @@ static xs_html *html_user_body(snac *user, int read_only)
             xs_html_tag("a",
                 xs_html_attr("href", people_url),
                 xs_html_text(L("people"))),
+            pending_follow_count,
             xs_html_text(" - "),
             xs_html_tag("a",
                 xs_html_attr("href", instance_url),

+ 1 - 0
snac.h

@@ -159,6 +159,7 @@ int pending_check(snac *user, const char *actor);
 xs_dict *pending_get(snac *user, const char *actor);
 void pending_del(snac *user, const char *actor);
 xs_list *pending_list(snac *user);
+int pending_count(snac *user);
 
 double timeline_mtime(snac *snac);
 int timeline_touch(snac *snac);