-- vim: ft=terra
local pstr = lib.mem.ptr(int8)
local pref = lib.mem.ref(int8)
local terra cs(s: rawstring)
return pstr { ptr = s, ct = lib.str.sz(s) }
end
local terra
render_tweet_page(
co: &lib.srv.convo,
path: lib.mem.ptr(pref),
p: &lib.store.post
): {}
var pg: lib.str.acc pg:init(256)
lib.render.tweet(co, p, &pg)
pg:lpush('<form class="action-bar" method="post">')
if co.aid ~= 0 then
var liked = false -- FIXME
var rtd = false
if not liked
then pg:lpush('<button class="pos" name="act" value="like">like</button>')
else pg:lpush('<button class="neg" name="act" value="dislike">dislike</button>')
end
if not rtd
then pg:lpush('<button class="pos" name="act" value="rt">retweet</button>')
else pg:lpush('<button class="neg" name="act" value="unrt">detweet</button>')
end
if p.author == co.who.id then
pg:lpush('<a class="button" href="/post/'):rpush(path(1)):lpush('/edit">edit</a><a class="neg button" href="/post/'):rpush(path(1)):lpush('/del">delete</a>')
end
-- TODO list user's chosen reaction emoji
pg:lpush('</form>')
if co.who.rights.powers.post() then
lib.render.compose(co, nil, &pg)
end
end
var ppg = pg:finalize() defer ppg:free()
co:stdpage([lib.srv.convo.page] {
title = lib.str.plit 'post'; cache = false;
class = lib.str.plit 'post'; body = ppg;
})
-- TODO display conversation
-- perhaps display descendant nodes here, and have a link to the top of the whole tree?
end
return render_tweet_page