Clean up obsolete / fulfilled TODO items

legacy
Charlotte Som 2021-09-12 22:35:48 +01:00
parent 77c789b39e
commit bd5669d3e4
3 changed files with 59 additions and 69 deletions

View File

@ -16,8 +16,6 @@ impl From<&Message> for MessageReference {
}
}
// TODO: Some way to emit messages for matrix,
// and some way to receive messages from matrix.
struct DiscordHandler {
ctx_tx: mpsc::UnboundedSender<Context>,
message_tx: mpsc::UnboundedSender<SentMessage>,
@ -38,7 +36,6 @@ impl EventHandler for DiscordHandler {
}
let message_ref = MessageReference::from(&message);
// TODO: Store this message ref & associations in the DB
let content = discord_message_format::parse(&message.content);
let content = message_ast::convert_discord(&content);

View File

@ -93,7 +93,6 @@ impl EventHandler for MatrixHandler {
.filter(|f| f.format == MessageFormat::Html)
.map(|f| &f.body)
{
// TODO: Parse html_body into MessageContent AST
convert_matrix(html)
} else {
convert_plain(&text.body)
@ -113,10 +112,7 @@ impl EventHandler for MatrixHandler {
}
}
MessageType::Emote(_emote) => {
// TODO
}
// TODO: Handle reactions, uploads (audio, video, image, file), and any other types of event
_ => {}
};
}

View File

@ -45,75 +45,72 @@ pub fn convert_matrix(message: &str) -> MessageContent {
}
}
NodeEdge::End(node) => {
match node.data() {
NodeData::Text(text) => {
// TODO: Does this need to get HTML-decoded or something
components.push(MessageComponent::Plain(text.borrow().clone()));
NodeEdge::End(node) => match node.data() {
NodeData::Text(text) => {
components.push(MessageComponent::Plain(text.borrow().clone()));
}
NodeData::Element(element) => {
macro_rules! construct_component {
($f:expr) => {{
let component_type = $f;
if let Some(mut parent_components) = parents.pop() {
parent_components.push((component_type)(components));
components = parent_components;
}
}};
}
NodeData::Element(element) => {
macro_rules! construct_component {
($f:expr) => {{
let component_type = $f;
if element.name.ns == ns!(html) {
match element.name.local {
local_name!("strong") | local_name!("b") => {
construct_component!(MessageComponent::Bold)
}
local_name!("em") | local_name!("i") => {
construct_component!(MessageComponent::Italic)
}
local_name!("s") => {
construct_component!(MessageComponent::Strikethrough)
}
local_name!("u") => {
construct_component!(MessageComponent::Underline)
}
local_name!("a") => {
if let Some(mut parent_components) = parents.pop() {
parent_components.push((component_type)(components));
let attrs = element.attributes.borrow();
if let Some(href) = attrs.get(local_name!("href")) {
parent_components.push(MessageComponent::Link {
target: href.to_string(),
text: components,
});
} else {
parent_components.append(&mut components);
}
components = parent_components;
}
}};
}
if element.name.ns == ns!(html) {
match element.name.local {
local_name!("strong") | local_name!("b") => {
construct_component!(MessageComponent::Bold)
}
local_name!("em") | local_name!("i") => {
construct_component!(MessageComponent::Italic)
}
local_name!("s") => {
construct_component!(MessageComponent::Strikethrough)
}
local_name!("u") => {
construct_component!(MessageComponent::Underline)
}
local_name!("a") => {
if let Some(mut parent_components) = parents.pop() {
let attrs = element.attributes.borrow();
if let Some(href) = attrs.get(local_name!("href")) {
parent_components.push(MessageComponent::Link {
target: href.to_string(),
text: components,
});
} else {
parent_components.append(&mut components);
}
components = parent_components;
}
}
local_name!("br") => {
components.push(MessageComponent::HardBreak);
}
local_name!("blockquote") => {
construct_component!(MessageComponent::BlockQuote)
}
local_name!("span") => {
let attrs = element.attributes.borrow();
if let Some(spoiler_reason) = attrs.get("data-mx-spoiler") {
construct_component!(|inner| MessageComponent::Spoiler {
reason: (!spoiler_reason.is_empty())
.then(|| spoiler_reason.to_string()),
content: inner,
})
}
}
_ => {}
}
local_name!("br") => {
components.push(MessageComponent::HardBreak);
}
local_name!("blockquote") => {
construct_component!(MessageComponent::BlockQuote)
}
local_name!("span") => {
let attrs = element.attributes.borrow();
if let Some(spoiler_reason) = attrs.get("data-mx-spoiler") {
construct_component!(|inner| MessageComponent::Spoiler {
reason: (!spoiler_reason.is_empty())
.then(|| spoiler_reason.to_string()),
content: inner,
})
}
}
_ => {}
}
}
_ => {}
}
}
_ => {}
},
};
}