Skip to content

Commit 7bf2b9f

Browse files
committed
Remove clean urls mutex and add correct version to new settings field
1 parent 857379b commit 7bf2b9f

1 file changed

Lines changed: 16 additions & 10 deletions

File tree

src/utils.rs

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ use hyper::{Body, Request, Response};
1313
use libflate::deflate::{Decoder, Encoder};
1414
use log::error;
1515
use regex::Regex;
16-
use revision::revisioned;
16+
use revision::{revisioned, Error};
1717
use rust_embed::RustEmbed;
1818
use serde::{Deserialize, Deserializer, Serialize, Serializer};
1919
use serde_json::Value;
@@ -23,7 +23,7 @@ use std::env;
2323
use std::io::{Read, Write};
2424
use std::str::FromStr;
2525
use std::string::ToString;
26-
use std::sync::{LazyLock, Mutex};
26+
use std::sync::{Arc, LazyLock};
2727
use time::{macros::format_description, Duration, OffsetDateTime};
2828
use url::Url;
2929

@@ -622,7 +622,7 @@ pub struct Params {
622622
}
623623

624624
#[derive(Default, Serialize, Deserialize, Debug, PartialEq, Eq)]
625-
#[revisioned(revision = 1)]
625+
#[revisioned(revision = 2)]
626626
pub struct Preferences {
627627
#[revision(start = 1)]
628628
#[serde(skip_serializing, skip_deserializing)]
@@ -671,7 +671,7 @@ pub struct Preferences {
671671
pub hide_score: String,
672672
#[revision(start = 1)]
673673
pub remove_default_feeds: String,
674-
#[revision(start = 1)]
674+
#[revision(start = 2, default_fn = "default_clean_urls")]
675675
pub clean_urls: String,
676676
}
677677

@@ -748,6 +748,9 @@ impl Preferences {
748748
pub fn to_bincode_str(&self) -> Result<String, String> {
749749
Ok(base2048::encode(&self.to_compressed_bincode()?))
750750
}
751+
fn default_clean_urls(_revision: u16) -> Result<String, Error> {
752+
Ok("off".to_owned())
753+
}
751754
}
752755

753756
pub fn deflate_compress(i: Vec<u8>) -> Result<Vec<u8>, String> {
@@ -1080,7 +1083,7 @@ pub fn format_url(url: &str) -> String {
10801083
}
10811084

10821085
// Remove tracking query params
1083-
static URL_CLEANER: LazyLock<Mutex<UrlCleaner>> = LazyLock::new(|| Mutex::new(UrlCleaner::from_embedded_rules().expect("Failed to initialize UrlCleaner")));
1086+
static URL_CLEANER: LazyLock<Arc<UrlCleaner>> = LazyLock::new(|| Arc::new(UrlCleaner::from_embedded_rules().expect("Failed to initialize UrlCleaner")));
10841087

10851088
pub fn clean_url(url: String) -> String {
10861089
let is_external_url = match Url::parse(url.as_str()) {
@@ -1089,8 +1092,10 @@ pub fn clean_url(url: String) -> String {
10891092
};
10901093
let mut cleaned_url = url.clone();
10911094
if is_external_url {
1092-
let cleaner = URL_CLEANER.lock().unwrap();
1093-
cleaned_url = cleaner.clear_single_url_str(cleaned_url.as_str()).expect("Unable to clean the URL.").as_ref().to_owned();
1095+
cleaned_url = match URL_CLEANER.clear_single_url_str(cleaned_url.as_str()) {
1096+
Ok(cleaned_result) => cleaned_result.as_ref().to_owned(),
1097+
_ => cleaned_url,
1098+
}
10941099
}
10951100
cleaned_url
10961101
}
@@ -1675,9 +1680,10 @@ fn test_default_prefs_serialization_loop_bincode() {
16751680
}
16761681

16771682
static KNOWN_GOOD_CONFIGS: &[&str] = &[
1678-
"ਧӐΥºÃΦĴгౡୡϤҚԷŽဎՐΧΣೡຽဒ೨ʛĽତ๘Ӓǹভµɾ൦ॴцৱ௬చΣҭжҭȱȾཊజĊȔ௸७ƘȂј۰ȥėǨԯၻíႽਈႴ۹ଆ",
1679-
"ਧҫടºÃǒɣυໃਣөŕǁజ८ௐɪDžઘႴ౨ඛႻຫǪၼդɍ৪Êѕ୶ʭѹŪҚຊೱѰງიŠСঌາඌĨğਜડ࿅ଠಲೱҋŇƞਭăʁझшȖǾཔ௧ந۞ສÚ",
1680-
"ਧҫടºÃǒɿဧϯljഔค๖۞ԆНȦ൨ĭ྅ҤƍตཧႯƅशञঊମਇȕමзқଽijჰଐՋບӎՓஶཕ૭ଛกήऋĜɀಱӔԩझԩîဓŒԬũլಙટщೞຝ৪༎",
1683+
"ఴӅβØØҞÉဏႢձĬ༧ȒʯऌԔӵ୮༏",
1684+
"ਧՊΥÀÃǎƱГ۸ඣമĖฤ႙ʟาúໜϾௐɥঀĜໃહཞઠѫҲɂఙ࿔DzઉƲӟӻĻฅΜδ໖ԜǗဖငƦơ৶Ą௩ԹʛใЛʃශаΏ",
1685+
"ਧԩΥÀÃΊ౭൩ඔႠϼҭöҪƸռઇԾॐნɔາǒՍҰच௨ಖມŃЉŐདƦ๙ϩএఠȝഽйʮჯඒϰळՋ௮ສ৵ऎΦѧਹಧଟƙŃ३î༦ŌပղयƟแҜ།",
1686+
"ԅҫടÀÁÓɿဧඑปฎɣĊဨ۹ÕќଌઞೱũდϚӕӜĄӑƺӌĩҹஸইພÇƄŴ࿀টŨ୬ਦတႣಮѿౡಛളƖljljೱ႒ઽරਊԚƢൿɧűХխபծಥဤ౧À",
16811687
];
16821688

16831689
#[test]

0 commit comments

Comments
 (0)