diff options
| author | 2023-04-14 13:05:36 +0200 | |
|---|---|---|
| committer | 2023-04-14 13:05:36 +0200 | |
| commit | a050be91079e5c65589d57e9e00421345d113ac9 (patch) | |
| tree | 9a8576d3abb0ad83af28160cf2c891e9b440f448 /html.c | |
| parent | New notifications web page. (diff) | |
| download | snac2-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.c | 102 |
1 files changed, 57 insertions, 45 deletions
| @@ -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 | ||
| 682 | d_char *html_entry(snac *snac, d_char *os, char *msg, int local, int level, const char *md5) | 682 | d_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 | } |