Timestamps

FossilOrigin-Name: 0712c9be1b9e6b587b15a8e795f939d99295876c1372e24ecdaef0b40db80319
This commit is contained in:
nekobit 2022-05-24 06:19:46 +00:00
parent 113c2b2433
commit 385efb634d
6 changed files with 70 additions and 11 deletions

View File

@ -3,7 +3,7 @@ GIT ?= git
MASTODONT_DIR = mastodont-c/
MASTODONT = $(MASTODONT_DIR)libmastodont.a
CFLAGS += -Wall -I $(MASTODONT_DIR)include/ -Wno-unused-variable -Wno-ignored-qualifiers -I/usr/include/ $(shell pkg-config --cflags libcurl libcjson libpcre)
LDFLAGS = -L$(MASTODONT_DIR) -lmastodont $(shell pkg-config --libs libcjson libcurl libpcre) -lfcgi
LDFLAGS = -lm -L$(MASTODONT_DIR) -lmastodont $(shell pkg-config --libs libcjson libcurl libpcre) -lfcgi
SRC = $(wildcard src/*.c)
OBJ = $(patsubst %.c,%.o,$(SRC))
HEADERS = $(wildcard src/*.h)

30
dist/treebird20.css vendored
View File

@ -619,6 +619,29 @@ svg.in-reply-to-icon
width: auto;
}
.seperator
{
padding-left: 5px;
padding-right: 5px;
color: #606060;
vertical-align: middle;
font-size: 10px;
}
.time::before
{
content: "•";
padding-right: 10px;
font-size: 10px;
}
.time
{
color: #606060;
vertical-align: middle;
font-size: 15px;
padding-left: 5px;
}
.status .status-info,
.notification-info-format,
@ -640,6 +663,7 @@ svg.in-reply-to-icon
border-spacing: 0px;
padding: 0;
margin: 0;
vertical-align: middle;
}
.status .instance-info
@ -1173,6 +1197,12 @@ p}
border: 1px solid #cacaca;
}
.emoji-btn
{
position: relative;
top: 2px;
}
/* Emojo picker */
.emoji-picker
{

View File

@ -187,6 +187,7 @@ char* construct_interaction_buttons(struct session* ssn,
char* favourites_count = NULL;
char* emoji_picker_html = NULL;
char* reactions_btn_html = NULL;
char* time_str;
size_t s;
// Emojo picker
@ -211,6 +212,8 @@ char* construct_interaction_buttons(struct session* ssn,
easprintf(&likeboost_html, data_likeboost_html,
config_url_prefix,
status->id);
time_str = reltime_to_str(status->created_at);
s = easprintf(&interaction_html, data_interaction_buttons_html,
config_url_prefix,
@ -231,16 +234,18 @@ char* construct_interaction_buttons(struct session* ssn,
reactions_btn_html ? reactions_btn_html : "",
config_url_prefix,
status->id,
status->id);
status->id,
reltime_to_str(status->created_at));
if (size) *size = s;
// Cleanup
if (emoji_picker_html) free(emoji_picker_html);
if (reply_count) free(reply_count);
if (repeat_count) free(repeat_count);
if (favourites_count) free(favourites_count);
if (reactions_btn_html) free(reactions_btn_html);
if (likeboost_html) free(likeboost_html);
free(emoji_picker_html);
free(reply_count);
free(repeat_count);
free(favourites_count);
free(reactions_btn_html);
free(likeboost_html);
free(time_str);
return interaction_html;
}

View File

@ -16,6 +16,11 @@
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
#define _XOPEN_SOURCE
#define _DEFAULT_SOURCE
#include <time.h>
#include <math.h>
#include "easprintf.h"
#include <stdlib.h>
#include <stddef.h>
#include <string.h>
@ -23,10 +28,26 @@
char* reltime_to_str(time_t stime)
{
char str[16];
// Get current time
char* str;
// Get current time and convert it to GMT
time_t curr_time = time(NULL);
int since = curr_time - stime;
// Timezone likely off
if (since < 60)
easprintf(&str, "%ds", since);
else if (since < 60 * 60)
easprintf(&str, "%dm", since / 60);
else if (since < 60 * 60 * 24)
easprintf(&str, "%dh", since / (60 * 60));
else if (since < 60 * 60 * 24 * 31) // Not truly but werks
easprintf(&str, "%dd", since / (60 * 60 * 24));
else if (since < 60 * 60 * 24 * 365)
easprintf(&str, "%dmon", since / (60 * 60 * 24 * 31));
else
easprintf(&str, "%dyr", since / (60 * 60 * 24 * 365));
return str;
}
int streql(char* cmp1, char* cmp2)

View File

@ -40,6 +40,9 @@
</label>
</form>
</td>
<td>
<span class="time">%s</span>
</td>
</tr>
</table>
</div>

View File

@ -4,6 +4,6 @@
<svg class="emoji-btn" xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="#000000" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"><circle cx="12" cy="12" r="10"></circle><line x1="8" y1="12" x2="16" y2="12"></line></svg>
<input class="hidden" type="submit" value="Emoji">
</label>
%s
</form>
%s
</td>