commit 6d0b0cdaab829c8c0d98b0f3cdc5d3526f1c5662
parent 6154ce75826ccb4ade18a45b838d159cd26d81f8
Author: default <nobody@localhost>
Date: Sun, 12 Jan 2025 14:31:45 +0100
Show event start / end times.
This code is a ugly as fuck.
Diffstat:
M | html.c | | | 43 | +++++++++++++++++++++++++++++++++++++++++++ |
1 file changed, 43 insertions(+), 0 deletions(-)
diff --git a/html.c b/html.c
@@ -2272,6 +2272,49 @@ xs_html *html_entry(snac *user, xs_dict *msg, int read_only,
}
}
+ if (strcmp(type, "Event") == 0) { /** Event start and end times **/
+ const char *s_time = xs_dict_get(msg, "startTime");
+
+ if (xs_type(s_time) == XSTYPE_STRING) {
+ const char *e_time = xs_dict_get(msg, "endTime");
+ const char *tz = xs_dict_get(msg, "timezone");
+
+ xs *s = xs_replace_i(xs_dup(s_time), "T", " ");
+ xs *e = NULL;
+
+ if (xs_type(e_time) == XSTYPE_STRING)
+ e = xs_replace_i(xs_dup(e_time), "T", " ");
+
+ /* if the event has a timezone, crop the offsets */
+ if (xs_type(tz) == XSTYPE_STRING) {
+ s = xs_crop_i(s, 0, 19);
+
+ if (e)
+ e = xs_crop_i(e, 0, 19);
+ }
+ else
+ tz = "";
+
+ /* if start and end share the same day, crop it from the end */
+ if (e && memcmp(s, e, 11) == 0)
+ e = xs_crop_i(e, 11, strlen(e));
+
+ if (e)
+ s = xs_str_cat(s, " / ", e);
+
+ if (*tz)
+ s = xs_str_cat(s, " (", tz, ")");
+
+ /* replace ugly decimals */
+ s = xs_replace_i(s, ".000", "");
+
+ xs_html_add(snac_content_wrap,
+ xs_html_tag("p",
+ xs_html_text(L("Time: ")),
+ xs_html_text(s)));
+ }
+ }
+
/* show all hashtags that has not been shown previously in the content */
const xs_list *tags = xs_dict_get(msg, "tag");
if (xs_type(tags) == XSTYPE_LIST && xs_list_len(tags)) {