Fix issues with tags and mentions
Fix issue where leading @ or # of a mention/hashtag get duplicated Fix issue where normal tags were being overwritten by hashtags
This commit is contained in:
parent
d6e220cc8d
commit
5f059c3e98
@ -85,7 +85,6 @@ pub fn md_to_html(md: &str) -> (String, HashSet<String>, HashSet<String>) {
|
||||
}
|
||||
}
|
||||
State::Ready => {
|
||||
text_acc.push(c);
|
||||
if c == '@' {
|
||||
events.push(Event::Text(text_acc.into()));
|
||||
(events, State::Mention, String::new(), n + 1, mentions, hashtags)
|
||||
@ -93,11 +92,13 @@ pub fn md_to_html(md: &str) -> (String, HashSet<String>, HashSet<String>) {
|
||||
events.push(Event::Text(text_acc.into()));
|
||||
(events, State::Hashtag, String::new(), n + 1, mentions, hashtags)
|
||||
} else if c.is_alphanumeric() {
|
||||
text_acc.push(c);
|
||||
if n >= (txt.chars().count() - 1) { // Add the text after at the end, even if it is not followed by a mention.
|
||||
events.push(Event::Text(text_acc.clone().into()))
|
||||
}
|
||||
(events, State::Word, text_acc, n + 1, mentions, hashtags)
|
||||
} else {
|
||||
text_acc.push(c);
|
||||
if n >= (txt.chars().count() - 1) { // Add the text after at the end, even if it is not followed by a mention.
|
||||
events.push(Event::Text(text_acc.clone().into()))
|
||||
}
|
||||
|
@ -719,7 +719,7 @@ impl Post {
|
||||
}
|
||||
}
|
||||
|
||||
for ot in old_tags {
|
||||
for ot in old_tags.iter().filter(|t| !t.is_hashtag) {
|
||||
if !tags_name.contains(&ot.tag) {
|
||||
ot.delete(conn);
|
||||
}
|
||||
@ -756,7 +756,7 @@ impl Post {
|
||||
}
|
||||
}
|
||||
|
||||
for ot in old_tags {
|
||||
for ot in old_tags.into_iter().filter(|t| t.is_hashtag) {
|
||||
if !tags_name.contains(&ot.tag) {
|
||||
ot.delete(conn);
|
||||
}
|
||||
|
@ -231,7 +231,7 @@ fn update(blog: String, slug: String, user: User, conn: DbConn, data: LenientFor
|
||||
|
||||
let hashtags = hashtags.into_iter().map(|h| h.to_camel_case()).collect::<HashSet<_>>()
|
||||
.into_iter().map(|t| Tag::build_activity(&conn, t)).collect::<Vec<_>>();
|
||||
post.update_tags(&conn, hashtags);
|
||||
post.update_hashtags(&conn, hashtags);
|
||||
|
||||
if post.published {
|
||||
if newly_published {
|
||||
|
Loading…
Reference in New Issue
Block a user