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
}