});
}
+pub struct VisibilityLine {
+ vis: Visibility,
+}
+
+impl VisibilityLine {
+ pub fn new(vis: Visibility) -> Self { VisibilityLine { vis } }
+}
+
+impl TextFragment for VisibilityLine {
+ fn render_highlighted(&self, width: usize, _highlight: Option<Highlight>)
+ -> Vec<ColouredString>
+ {
+ let line = match self.vis {
+ Visibility::Public => ColouredString::general(
+ "Visibility: public",
+ " ffffff"),
+ Visibility::Unlisted => ColouredString::plain(
+ "Visibility: unlisted"),
+ Visibility::Private => ColouredString::general(
+ "Visibility: private",
+ " rrrrrrr"),
+ Visibility::Direct => ColouredString::general(
+ "Visibility: direct",
+ " rrrrrr"),
+ };
+ vec! { line.truncate(width).to_owned() }
+ }
+}
+
pub struct NotificationLog {
timestamp: DateTime<Utc>,
account_desc: String,
from: UsernameHeader,
via: Option<UsernameHeader>,
irt: Option<InReplyToLine>,
+ vis: Option<VisibilityLine>,
content: Html,
media: Vec<Media>,
blank: BlankLine,
Some(id) => Some(InReplyToLine::from_id(id, client)),
};
+ let vis = match st.visibility {
+ Visibility::Public => None,
+ vis => Some(VisibilityLine::new(vis)),
+ };
+
let content = Html::new(&st.content);
let media = st.media_attachments.iter().map(|m| {
from,
via,
irt,
+ vis,
content,
media,
blank: BlankLine::new(),
width, &mut highlight));
push_fragment(&mut lines, self.via.render_highlighted_update(
width, &mut highlight));
+ push_fragment(&mut lines, self.vis.render(width));
push_fragment(&mut lines, self.irt.render(width));
push_fragment(&mut lines, self.blank.render(width));
let rendered_content = self.content.render(width);