Perlify chats

FossilOrigin-Name: 3386c14b1650d67751762df511b6ed641499890a3992c8e31dbf57ba62efd102
This commit is contained in:
nekobit 2022-08-18 02:27:05 +00:00
parent c9ec49af9f
commit 56a4146a42
3 changed files with 52 additions and 6 deletions

View File

@ -6,7 +6,7 @@ use Exporter 'import';
our @EXPORTS = qw( content_chats construct_chat );
use template_helpers 'to_template';
use string_helpers 'format_username';
use string_helpers qw( format_username emojify reltime_to_str );
sub construct_chat
{
@ -17,6 +17,9 @@ sub construct_chat
ssn => $ssn,
chat => $chat,
messages => $messages,
format_username => \&format_username,
emojify => \&emojify,
reltime => \&reltime_to_str,
);
to_template(\%vars, \$data->{'chat.tt'});

View File

@ -185,7 +185,9 @@ void content_chats(PATH_ARGS)
HV* session_hv = perlify_session(ssn);
XPUSHs(newRV_noinc((SV*)session_hv));
XPUSHs(newRV_noinc((SV*)template_files));
XPUSHs(newRV_noinc((SV*)perlify_chats(chats, chats_len)));
if (chats)
XPUSHs(newRV_noinc((SV*)perlify_chats(chats, chats_len)));
else ARG_UNDEFINED();
// ARGS
PUTBACK;
call_pv("chat::content_chats", G_SCALAR);
@ -235,7 +237,7 @@ void content_chat_view(PATH_ARGS)
};
mastodont_get_chat_messages(api, &m_args, data[0], &args, &storage, &messages, &messages_len);
mastodont_get_chat(api, &m_args, data[0],
int chat_code = mastodont_get_chat(api, &m_args, data[0],
&storage_chat, &chat);
perl_lock();
@ -246,8 +248,12 @@ void content_chat_view(PATH_ARGS)
HV* session_hv = perlify_session(ssn);
XPUSHs(newRV_noinc((SV*)session_hv));
XPUSHs(newRV_noinc((SV*)template_files));
XPUSHs(newRV_noinc((SV*)perlify_chat(&chat)));
XPUSHs(newRV_noinc((SV*)perlify_messages(messages, messages_len)));
if (chat_code)
XPUSHs(newRV_noinc((SV*)perlify_chat(&chat)));
else ARG_UNDEFINED();
if (messages)
XPUSHs(newRV_noinc((SV*)perlify_messages(messages, messages_len)));
else ARG_UNDEFINED();
// ARGS
PUTBACK;
call_pv("chat::construct_chat", G_SCALAR);

View File

@ -1 +1,38 @@
chat
<div class="page-header">
<a href="/chats" class="page-header-button">&larr;</a>
<img src="[% chat.account.avatar %]" class="page-header-image avatar">
<a href="/@[% chat.account.acct %]" class="page-header-title">[% format_username(chat.account) %]</a>
</div>
<div class="chat-view">
[% FOREACH msg IN messages %]
<div class="message-container[% IF msg.account_id == ssn.account.id %] message-you[% END %]">
<img src="
[%- IF msg.account_id == ssn.account.id -%]
[% ssn.account.avatar %]
[%- ELSE -%]
[% chat.account.avatar %]
[%- END -%]
" class="avatar">
<div class="message-wrapper">
<div class="message" id="[% msg.id %]">
<span class="content">[% emojify(msg.content, msg.emojis) %]</span>
<span class="time">[% reltime(msg.created_at) %]</span>
</div>
</div>
</div>
[% END %]
<div class="anchor"></div>
</div>
<form action="" method="post">
<table class="chatbox ui-table">
<tr>
<td>
<textarea></textarea>
</td>
<td>
<input type="submit" class="chatbox-btn btn" value="Send">
</td>
</tr>
</table>
</form>