diff --git a/Cargo.lock b/Cargo.lock index f0ef0b6..36de61c 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -609,7 +609,7 @@ checksum = "18794a8ad5b29321f790b55d93dfba91e125cb1a9edbd4f8e3150acc771c1a5e" [[package]] name = "libreddit" -version = "0.13.0" +version = "0.13.1" dependencies = [ "askama", "async-recursion", diff --git a/Cargo.toml b/Cargo.toml index 9a5caaa..9ee060d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -3,7 +3,7 @@ name = "libreddit" description = " Alternative private front-end to Reddit" license = "AGPL-3.0" repository = "https://github.com/spikecodes/libreddit" -version = "0.13.0" +version = "0.13.1" authors = ["spikecodes <19519553+spikecodes@users.noreply.github.com>"] edition = "2018" diff --git a/src/subreddit.rs b/src/subreddit.rs index 5939667..8c4a228 100644 --- a/src/subreddit.rs +++ b/src/subreddit.rs @@ -114,16 +114,19 @@ pub async fn subscriptions(req: Request) -> Result, String> let mut sub_list = Preferences::new(req).subscriptions; // Retrieve list of posts for these subreddits to extract display names - let display = json(format!("/r/{}/hot.json?raw_json=1", sub)).await?; - let display_lookup: Vec<(String, &str)> = display["data"]["children"] + let posts = json(format!("/r/{}/hot.json?raw_json=1", sub)).await?; + let display_lookup: Vec<(String, &str)> = posts["data"]["children"] .as_array() - .unwrap() - .iter() - .map(|post| { - let display_name = post["data"]["subreddit"].as_str().unwrap(); - (display_name.to_lowercase(), display_name) + .map(|list| { + list + .iter() + .map(|post| { + let display_name = post["data"]["subreddit"].as_str().unwrap_or_default(); + (display_name.to_lowercase(), display_name) + }) + .collect::>() }) - .collect(); + .unwrap_or_default(); // Find each subreddit name (separated by '+') in sub parameter for part in sub.split('+') { @@ -275,7 +278,7 @@ async fn subreddit(sub: &str) -> Result { let active: i64 = res["data"]["accounts_active"].as_u64().unwrap_or_default() as i64; // Fetch subreddit icon either from the community_icon or icon_img value - let community_icon: &str = res["data"]["community_icon"].as_str().unwrap(); + let community_icon: &str = res["data"]["community_icon"].as_str().unwrap_or_default(); let icon = if community_icon.is_empty() { val(&res, "icon_img") } else { community_icon.to_string() }; let sub = Subreddit { diff --git a/src/utils.rs b/src/utils.rs index e3319b5..e65e2b3 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -528,7 +528,7 @@ pub fn rewrite_urls(input_text: &str) -> String { match Regex::new(r"https://external-preview\.redd\.it(.*)[^?]") { Ok(re) => { if re.is_match(&text1) { - re.replace_all(&text1, format_url(re.find(&text1).unwrap().as_str())).to_string() + re.replace_all(&text1, format_url(re.find(&text1).map(|x| x.as_str()).unwrap_or_default())).to_string() } else { text1 }