use crate::*;
pub(crate) fn current_url_without_params() -> String {
let window: Window = window().expect("no global window exists");
let location: Location = window.location();
let origin: String = location
.origin()
.unwrap_or_else(|_error: JsValue| "Unknown".to_string());
let pathname: String = location
.pathname()
.unwrap_or_else(|_error: JsValue| "/".to_string());
format!("{origin}{pathname}")
}
fn encode_svg_for_data_url(raw: &str) -> String {
raw.chars()
.map(|character: char| match character {
'%' | '#' | '"' | '\'' | '<' | '>' | '&' | '{' | '}' => {
format!("%{:02X}", character as u8)
}
_ => character.to_string(),
})
.collect()
}
pub(crate) fn generate_qr_code_data_url(content: &str) -> String {
let code: QrCode = QrCode::new(content).unwrap_or_else(|_| QrCode::new("error").unwrap());
let svg_string: String = code
.render::<svg::Color>()
.min_dimensions(QR_CODE_MIN_DIMENSION, QR_CODE_MIN_DIMENSION)
.quiet_zone(false)
.build();
let encoded_svg: String = encode_svg_for_data_url(&svg_string);
format!("{SVG_DATA_URL_PREFIX}{encoded_svg}")
}