summaryrefslogtreecommitdiff
path: root/html.c
diff options
context:
space:
mode:
authorGravatar default2023-04-14 13:05:36 +0200
committerGravatar default2023-04-14 13:05:36 +0200
commita050be91079e5c65589d57e9e00421345d113ac9 (patch)
tree9a8576d3abb0ad83af28160cf2c891e9b440f448 /html.c
parentNew notifications web page. (diff)
downloadsnac2-a050be91079e5c65589d57e9e00421345d113ac9.tar.gz
snac2-a050be91079e5c65589d57e9e00421345d113ac9.tar.xz
snac2-a050be91079e5c65589d57e9e00421345d113ac9.zip
Don't show the full tree in notifications.
Diffstat (limited to 'html.c')
-rw-r--r--html.c102
1 files changed, 57 insertions, 45 deletions
diff --git a/html.c b/html.c
index c9d9c86..29b18a3 100644
--- a/html.c
+++ b/html.c
@@ -679,7 +679,8 @@ d_char *html_entry_controls(snac *snac, d_char *os, char *msg, const char *md5)
679} 679}
680 680
681 681
682d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, const char *md5) 682d_char *html_entry(snac *snac, d_char *os, char *msg, int local,
683 int level, const char *md5, int hide_children)
683{ 684{
684 char *id = xs_dict_get(msg, "id"); 685 char *id = xs_dict_get(msg, "id");
685 char *type = xs_dict_get(msg, "type"); 686 char *type = xs_dict_get(msg, "type");
@@ -922,56 +923,58 @@ d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, cons
922 s = html_entry_controls(snac, s, msg, md5); 923 s = html_entry_controls(snac, s, msg, md5);
923 924
924 /** children **/ 925 /** children **/
925 xs *children = object_children(id); 926 if (!hide_children) {
926 int left = xs_list_len(children); 927 xs *children = object_children(id);
928 int left = xs_list_len(children);
927 929
928 if (left) { 930 if (left) {
929 char *p, *cmd5; 931 char *p, *cmd5;
930 int older_open = 0; 932 int older_open = 0;
931 xs *ss = xs_str_new(NULL); 933 xs *ss = xs_str_new(NULL);
932 int n_children = 0; 934 int n_children = 0;
933 935
934 ss = xs_str_cat(ss, "<details open><summary>...</summary><p>\n"); 936 ss = xs_str_cat(ss, "<details open><summary>...</summary><p>\n");
935 937
936 if (level < 4) 938 if (level < 4)
937 ss = xs_str_cat(ss, "<div class=\"snac-children\">\n"); 939 ss = xs_str_cat(ss, "<div class=\"snac-children\">\n");
938 else 940 else
939 ss = xs_str_cat(ss, "<div>\n"); 941 ss = xs_str_cat(ss, "<div>\n");
940 942
941 if (left > 3) { 943 if (left > 3) {
942 xs *s1 = xs_fmt("<details><summary>%s</summary>\n", L("Older...")); 944 xs *s1 = xs_fmt("<details><summary>%s</summary>\n", L("Older..."));
943 ss = xs_str_cat(ss, s1); 945 ss = xs_str_cat(ss, s1);
944 older_open = 1; 946 older_open = 1;
945 } 947 }
946 948
947 p = children; 949 p = children;
948 while (xs_list_iter(&p, &cmd5)) { 950 while (xs_list_iter(&p, &cmd5)) {
949 xs *chd = NULL; 951 xs *chd = NULL;
950 timeline_get_by_md5(snac, cmd5, &chd); 952 timeline_get_by_md5(snac, cmd5, &chd);
951 953
952 if (older_open && left <= 3) { 954 if (older_open && left <= 3) {
953 ss = xs_str_cat(ss, "</details>\n"); 955 ss = xs_str_cat(ss, "</details>\n");
954 older_open = 0; 956 older_open = 0;
955 } 957 }
958
959 if (chd != NULL) {
960 ss = html_entry(snac, ss, chd, local, level + 1, cmd5, hide_children);
961 n_children++;
962 }
963 else
964 snac_debug(snac, 2, xs_fmt("cannot read from timeline child %s", cmd5));
956 965
957 if (chd != NULL) { 966 left--;
958 ss = html_entry(snac, ss, chd, local, level + 1, cmd5);
959 n_children++;
960 } 967 }
961 else
962 snac_debug(snac, 2, xs_fmt("cannot read from timeline child %s", cmd5));
963 968
964 left--; 969 if (older_open)
965 } 970 ss = xs_str_cat(ss, "</details>\n");
966 971
967 if (older_open) 972 ss = xs_str_cat(ss, "</div>\n");
968 ss = xs_str_cat(ss, "</details>\n"); 973 ss = xs_str_cat(ss, "</details>\n");
969 974
970 ss = xs_str_cat(ss, "</div>\n"); 975 if (n_children)
971 ss = xs_str_cat(ss, "</details>\n"); 976 s = xs_str_cat(s, ss);
972 977 }
973 if (n_children)
974 s = xs_str_cat(s, ss);
975 } 978 }
976 979
977 s = xs_str_cat(s, "</div>\n</div>\n"); 980 s = xs_str_cat(s, "</div>\n</div>\n");
@@ -1015,7 +1018,7 @@ d_char *html_timeline(snac *snac, char *list, int local, int skip, int show, int
1015 if (!valid_status(timeline_get_by_md5(snac, v, &msg))) 1018 if (!valid_status(timeline_get_by_md5(snac, v, &msg)))
1016 continue; 1019 continue;
1017 1020
1018 s = html_entry(snac, s, msg, local, 0, v); 1021 s = html_entry(snac, s, msg, local, 0, v, 0);
1019 } 1022 }
1020 1023
1021 s = xs_str_cat(s, "</div>\n"); 1024 s = xs_str_cat(s, "</div>\n");
@@ -1204,7 +1207,7 @@ xs_str *html_notifications(snac *snac)
1204 1207
1205 xs *obj = NULL; 1208 xs *obj = NULL;
1206 const char *type = xs_dict_get(noti, "type"); 1209 const char *type = xs_dict_get(noti, "type");
1207 const char *id = xs_dict_get(noti, strcmp(type, "Follow") == 0 ? "actor" : "objid"); 1210 const char *id = xs_dict_get(noti, "objid");
1208 1211
1209 if (!valid_status(object_get(id, &obj))) 1212 if (!valid_status(object_get(id, &obj)))
1210 continue; 1213 continue;
@@ -1224,7 +1227,7 @@ xs_str *html_notifications(snac *snac)
1224 else { 1227 else {
1225 /* already seen notification */ 1228 /* already seen notification */
1226 if (stage != NHDR_OLD) { 1229 if (stage != NHDR_OLD) {
1227 xs *s1 = xs_fmt("<h2>%s</h2>\n", L("Older")); 1230 xs *s1 = xs_fmt("<h2>%s</h2>\n", L("Already seen"));
1228 s = xs_str_cat(s, s1); 1231 s = xs_str_cat(s, s1);
1229 1232
1230 stage = NHDR_OLD; 1233 stage = NHDR_OLD;
@@ -1233,11 +1236,20 @@ xs_str *html_notifications(snac *snac)
1233 1236
1234 s = xs_str_cat(s, "<div>\n"); 1237 s = xs_str_cat(s, "<div>\n");
1235 1238
1236 xs *s1 = xs_fmt("<p><b>%s</b>:</p>\n", strcmp("Create", type) == 0 ? "Mention" : type); 1239 xs *s1 = xs_fmt("<p><b>%s</b>:</p>\n", strcmp(type, "Create") == 0 ? "Mention" : type);
1237 s = xs_str_cat(s, s1); 1240 s = xs_str_cat(s, s1);
1238 1241
1239 xs *md5 = xs_md5_hex(id, strlen(id)); 1242 if (strcmp(type, "Follow") == 0) {
1240 s = html_entry(snac, s, obj, 0, 0, md5); 1243 s = xs_str_cat(s, "<div class=\"snac-post\">\n");
1244
1245 s = html_msg_icon(snac, s, obj);
1246
1247 s = xs_str_cat(s, "</div>\n");
1248 }
1249 else {
1250 xs *md5 = xs_md5_hex(id, strlen(id));
1251 s = html_entry(snac, s, obj, 0, 0, md5, 1);
1252 }
1241 1253
1242 s = xs_str_cat(s, "</div>\n"); 1254 s = xs_str_cat(s, "</div>\n");
1243 } 1255 }