use super::prelude::*;
pub fn render_user(ctx: &mut HtmlContext, name: &str, show_avatar: bool) {
debug!("Rendering user block (name '{name}', show-avatar {show_avatar})");
ctx.html()
.span()
.attr(attr!("class" => "wj-user-info"))
.inner(|ctx| match ctx.handle().get_user_info(name) {
Some(info) => {
trace!(
"Got user information (user id {}, name {})",
info.user_id,
info.user_name.as_ref(),
);
ctx.html()
.a()
.attr(attr!(
"class" => "wj-user-info-link",
"href" => &info.user_profile_url,
))
.inner(|ctx| {
if show_avatar {
ctx.html()
.span()
.attr(attr!(
"class" => "wj-karma",
"data-karma" => &info.user_karma.to_string(),
))
.inner(|ctx| {
ctx.html().sprite("wj-karma");
});
ctx.html().img().attr(attr!(
"class" => "wj-user-info-avatar",
"src" => &info.user_avatar_data,
));
}
ctx.html()
.span()
.attr(attr!("class" => "wj-user-info-name"))
.contents(&info.user_name);
});
}
None => {
trace!("No such user found");
ctx.html()
.span()
.attr(attr!("class" => "wj-error-inline"))
.inner(|ctx| {
if show_avatar {
ctx.html()
.span()
.attr(attr!(
"class" => "wj-karma",
"data-karma" => "0",
))
.inner(|ctx| {
ctx.html().sprite("wj-karma");
});
ctx.html().img().attr(attr!(
"class" => "wj-user-info-avatar",
"src" => "/files--static/media/bad-avatar.png",
));
}
ctx.html()
.span()
.attr(attr!("class" => "wj-user-info-name"))
.contents(name);
});
}
});
}