commit 5bfaaadf942c097c586f527a8760793d612f8e05
parent 12f3b2963b78fc4e3de2ccbc01973e9615ff16ff
Author: Marcel <mtrnord1@gmail.com>
Date: Mon, 1 Jun 2020 15:16:42 +0200
Fix #7
Took 9 minutes
Diffstat:
3 files changed, 8 insertions(+), 8 deletions(-)
diff --git a/Cargo.toml b/Cargo.toml
@@ -27,7 +27,7 @@ url = "2.1.1"
thiserror = "1.0"
futures-locks = { git = "https://github.com/asomers/futures-locks", default-features = false }
linked_hash_set = {version = "0.1.3", features = ["serde"] }
-comrak = "0.7"
+pulldown-cmark = "0.7.1"
[dev-dependencies]
wasm-bindgen-test = "0.3"
diff --git a/src/app/matrix.rs b/src/app/matrix.rs
@@ -2,7 +2,6 @@ use std::collections::{HashMap, HashSet};
use std::convert::TryFrom;
use std::sync::{Arc, Mutex};
-use comrak::{format_html, parse_document, Arena, ComrakOptions};
use futures_locks::RwLock;
use log::*;
use matrix_sdk::{
@@ -26,6 +25,7 @@ use yew::worker::*;
use crate::app::matrix::types::get_media_download_url;
use crate::constants::AUTH_KEY;
use crate::errors::MatrixError;
+use pulldown_cmark::{html, Options, Parser};
mod sync;
pub mod types;
@@ -343,13 +343,13 @@ impl Agent for MatrixAgent {
Request::SendMessage((room_id, message)) => {
let client = self.matrix_client.clone().unwrap();
spawn_local(async move {
- let arena = Arena::new();
- let root = parse_document(&arena, message.as_str(), &ComrakOptions::default());
+ let mut options = Options::empty();
+ options.insert(Options::ENABLE_STRIKETHROUGH);
+ let parser = Parser::new_ext(message.as_str(), options);
- let mut html = vec![];
- format_html(root, &ComrakOptions::default(), &mut html).unwrap();
- let mut formatted_message = String::from_utf8(html).unwrap();
+ let mut formatted_message: String = String::with_capacity(message.len() * 3 / 2);
+ html::push_html(&mut formatted_message, parser);
formatted_message = formatted_message.replace("<p>", "").replace("</p>", "");
formatted_message.pop();
diff --git a/src/app/matrix/sync.rs b/src/app/matrix/sync.rs
@@ -17,7 +17,7 @@ pub struct Sync {
impl Sync {
pub async fn start_sync(&self) {
let client = self.matrix_client.clone();
- let settings = SyncSettings::default().timeout(Duration::from_secs(30));
+ let settings = SyncSettings::default().timeout(Duration::from_secs(30)).full_state(true);
client
.sync_forever(settings, |response| self.on_sync_response(response))