From a08a43e7dc35120d67008d22c0d4acc401d9eacf Mon Sep 17 00:00:00 2001 From: nekobit Date: Wed, 23 Nov 2022 21:34:32 +0000 Subject: [PATCH] base_page: Finish notifs or call directly FossilOrigin-Name: 940805ebcea555253f5b98a7cb108c56cbb428a1796cd9bd2257db351c4eb33e --- src/base_page.c | 19 ++++++++++++++++--- src/path.h | 18 +++++++++++++++++- 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/base_page.c b/src/base_page.c index 647b74f..73d0c9d 100644 --- a/src/base_page.c +++ b/src/base_page.c @@ -58,8 +58,16 @@ request_cb_base_page(mstdnt_request_cb_data* cb_data, void* args) { struct mstdnt_notifications* notifs = MSTDNT_CB_DATA(cb_data); + struct path_args_data* path_data = args; - + // ->data is the page data + _render_base_page(path_data->data, + path_data->req, + path_data->ssn, + notifs); + + path_args_data_destroy(path_data); + return MSTDNT_REQUEST_DONE; } void @@ -76,10 +84,13 @@ render_base_page(struct base_page* page, keystr(ssn->cookies.access_token) && !ssn->config.notif_embed) { + struct path_args_data* path_data = + path_args_data_create(req, ssn, api, page); + mstdnt_get_notifications( api, &m_args, - request_cb_base_page, NULL, + request_cb_base_page, path_data, (struct mstdnt_notifications_args) { .exclude_types = 0, @@ -95,7 +106,9 @@ render_base_page(struct base_page* page, }); } else { - + // Render it as is, if IFrame is disabled + // TODO might get account data at this point + _render_base_page(page, req, ssn, NULL); } } diff --git a/src/path.h b/src/path.h index 3232763..d844030 100644 --- a/src/path.h +++ b/src/path.h @@ -31,12 +31,28 @@ struct path_args_data void* data; }; +/** + * Allocates a path_args_data struct. + * + * Used for mastodont-c callbacks essentially. + * + * @param req Request. + * @param ssn Session data. + * @param api API data. Usually a reference. + * @param data Any custom data, must be manually free'd + * @return Allocated struct, or NULL on error. Free with path_args_data_destroy + */ struct path_args_data* path_args_data_create(REQUEST_T req, struct session* ssn, mastodont_t* api, void* data); -void path_args_ref_destroy(struct path_args_data* refs); +/** + * Destroys the path args and struct created by @struct path_args_data_create + * + * @param ref To be destroyed. + */ +void path_args_data_destroy(struct path_args_data* ref); int handle_paths( REQUEST_T req,