diff --git a/apps/api/sharedLibs/html-transformer/src/lib.rs b/apps/api/sharedLibs/html-transformer/src/lib.rs index f4a96c35..4b1b57cf 100644 --- a/apps/api/sharedLibs/html-transformer/src/lib.rs +++ b/apps/api/sharedLibs/html-transformer/src/lib.rs @@ -268,7 +268,8 @@ fn _transform_html_inner(opts: TranformHTMLOptions) -> Result { } } - for img in document.select("img[srcset]")? { + let srcset_images: Vec<_> = document.select("img[srcset]")?.collect(); + for img in srcset_images { let mut sizes: Vec = img.attributes.borrow().get("srcset").ok_or(())?.split(",").filter_map(|x| { let tok: Vec<&str> = x.trim().split(" ").collect(); let tok_1 = if tok.len() > 1 && !tok[1].is_empty() { @@ -306,14 +307,16 @@ fn _transform_html_inner(opts: TranformHTMLOptions) -> Result { let url = Url::parse(&opts.url).map_err(|_| ())?; - for img in document.select("img[src]")? { + let src_images: Vec<_> = document.select("img[src]")?.collect(); + for img in src_images { let old = img.attributes.borrow().get("src").map(|x| x.to_string()).ok_or(())?; if let Ok(new) = url.join(&old) { img.attributes.borrow_mut().insert("src", new.to_string()); } } - for anchor in document.select("a[href]")? { + let href_anchors: Vec<_> = document.select("a[href]")?.collect(); + for anchor in href_anchors { let old = anchor.attributes.borrow().get("href").map(|x| x.to_string()).ok_or(())?; if let Ok(new) = url.join(&old) { anchor.attributes.borrow_mut().insert("href", new.to_string());