daydream

A small matrix web client written in rust
git clone git://archive.git.mtrnord.blog/daydream-mx/daydream.git
Log | Files | Refs | README | LICENSE

commit 5bfaaadf942c097c586f527a8760793d612f8e05
parent 12f3b2963b78fc4e3de2ccbc01973e9615ff16ff
Author: Marcel <mtrnord1@gmail.com>
Date:   Mon,  1 Jun 2020 15:16:42 +0200

Fix #7

Took 9 minutes

Diffstat:
MCargo.toml | 2+-
Msrc/app/matrix.rs | 12++++++------
Msrc/app/matrix/sync.rs | 2+-
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))