Display emoji reacts

FossilOrigin-Name: 2a98c43dd72822b00edc5590f3032ef9f6ab535e70acd996df4f365d2e7f9e71
This commit is contained in:
me@ow.nekobit.net 2022-03-01 04:30:51 +00:00
parent 2ef8740731
commit 266426ca10
11 changed files with 122 additions and 0 deletions

View file

@ -48,6 +48,10 @@ $(PAGES_DIR)/attachments.chtml: $(PAGES_DIR)/attachments.html
./filec $< data_attachments_html > $@
$(PAGES_DIR)/attachment_image.chtml: $(PAGES_DIR)/attachment_image.html
./filec $< data_attachment_image_html > $@
$(PAGES_DIR)/emoji_reactions.chtml: $(PAGES_DIR)/emoji_reactions.html
./filec $< data_emoji_reactions_html > $@
$(PAGES_DIR)/emoji_reaction.chtml: $(PAGES_DIR)/emoji_reaction.html
./filec $< data_emoji_reaction_html > $@
$(MASTODONT_DIR):
git clone $(MASTODONT_URL) || true

7
dist/ratfe20.css vendored
View file

@ -463,3 +463,10 @@ ul li:first-child a.sidebarbtn
color: #fff !important;
text-shadow: 0px 0px 5px #cc4444cc !important;
}
/* Emoji reacts */
.emoji-react-box
{
border-radius: 4px;
border: 1px solid #cacaca;
}

14
dist/skel.css vendored
View file

@ -484,3 +484,17 @@ ul li:not(:last-child) .split,
{
border: 1px solid #cacaca;
}
/* Emoji reacts */
.emoji-reactions
{
display: flex;
margin-top: 8px;
}
.emoji-react-box
{
padding: 3px 7px;
margin: 0 4px;
}

1
src/.#attachments.c Symbolic link
View file

@ -0,0 +1 @@
nekobit@toomuchram.2139:1646100446

55
src/emoji_reaction.c Normal file
View file

@ -0,0 +1,55 @@
/*
* RatFE - Lightweight frontend for Pleroma
* Copyright (C) 2022 Nekobit
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#include "string_helpers.h"
#include "emoji_reaction.h"
#include <stdlib.h>
#include "easprintf.h"
// Templates
#include "../static/emoji_reaction.chtml"
#include "../static/emoji_reactions.chtml"
char* construct_emoji_reaction(struct mstdnt_emoji_reaction* emo, int* str_size)
{
char* emo_html;
size_t s = easprintf(&emo_html, data_emoji_reaction_html,
emo->name, emo->count);
if (str_size) *str_size = s;
return emo_html;
}
static char* construct_emoji_reactions_voidwrap(void* passed, size_t index, int* res)
{
return construct_emoji_reaction((struct mstdnt_emoji_reaction*)passed + index, res);
}
char* construct_emoji_reactions(struct mstdnt_emoji_reaction* emos, size_t emos_len, size_t* str_size)
{
size_t elements_size;
char* elements = construct_func_strings(construct_emoji_reactions_voidwrap, emos, emos_len, &elements_size);
char* emos_view;
size_t s = easprintf(&emos_view, data_emoji_reactions_html, elements);
if (str_size) *str_size = s;
// Cleanup
free(elements);
return emos_view;
}

26
src/emoji_reaction.h Normal file
View file

@ -0,0 +1,26 @@
/*
* RatFE - Lightweight frontend for Pleroma
* Copyright (C) 2022 Nekobit
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#ifndef EMOJI_REACTION_H
#define EMOJI_REACTION_H
#include <mastodont.h>
char* construct_emoji_reaction(struct mstdnt_emoji_reaction* emo, int* str_len);
char* construct_emoji_reactions(struct mstdnt_emoji_reaction* emos, size_t emos_len, size_t* str_len);
#endif // EMOJI_REACTION_H

View file

@ -26,6 +26,7 @@
#include "string_helpers.h"
#include "reply.h"
#include "attachments.h"
#include "emoji_reaction.h"
#include "../config.h"
// Pages
@ -91,6 +92,7 @@ char* construct_status(struct mstdnt_status* status, int* size)
char* repeat_count = NULL;
char* favourites_count = NULL;
char* attachments = NULL;
char* emoji_reactions = NULL;
if (status->replies_count)
easprintf(&reply_count, NUM_STR, status->replies_count);
if (status->reblogs_count)
@ -99,6 +101,9 @@ char* construct_status(struct mstdnt_status* status, int* size)
easprintf(&favourites_count, NUM_STR, status->favourites_count);
if (status->media_attachments_len)
attachments = construct_attachments(status->media_attachments, status->media_attachments_len, NULL);
if (status->pleroma.emoji_reactions_len)
emoji_reactions = construct_emoji_reactions(status->pleroma.emoji_reactions, status->pleroma.emoji_reactions_len, NULL);
size_t s = easprintf(&stat_html, data_status_html,
status->account.avatar,
@ -109,6 +114,7 @@ char* construct_status(struct mstdnt_status* status, int* size)
"Public", /* visibility */
status->content,
attachments ? attachments : "",
emoji_reactions ? emoji_reactions : "",
config_url_prefix,
status->id,
reply_count ? reply_count : "",
@ -130,6 +136,7 @@ char* construct_status(struct mstdnt_status* status, int* size)
if (repeat_count) free(repeat_count);
if (favourites_count) free(favourites_count);
if (attachments) free(attachments);
if (emoji_reactions) free(emoji_reactions);
return stat_html;
}

View file

@ -18,6 +18,7 @@
#ifndef STRING_HELPERS_H
#define STRING_HELPERS_H
#include <stddef.h>
/**
* Constructs a string based on a function

View file

@ -0,0 +1,3 @@
<div class="emoji-react-box btn">
<span class="emoji">%s</span> %u
</div>

View file

@ -0,0 +1,3 @@
<div class="emoji-reactions">
%s
</div>

View file

@ -13,6 +13,7 @@
%s
</span>
%s
%s
<div class="status-interact">
<ul>
<li>