Refactor load into a seperate function

Mikayla Maki created

Change summary

crates/settings/src/settings_file.rs | 43 +++++++++++++++--------------
1 file changed, 22 insertions(+), 21 deletions(-)

Detailed changes

crates/settings/src/settings_file.rs 🔗

@@ -27,6 +27,27 @@ impl SettingsFile {
         }
     }
 
+    async fn load_settings(path: &Path, fs: &Arc<dyn Fs>) -> Result<String> {
+        match fs.load(path).await {
+            result @ Ok(_) => result,
+            Err(err) => {
+                if let Some(e) = err.downcast_ref::<std::io::Error>() {
+                    if e.kind() == ErrorKind::NotFound {
+                        return Ok(std::str::from_utf8(
+                            Assets
+                                .load("settings/initial_user_settings.json")
+                                .unwrap()
+                                .as_ref(),
+                        )
+                        .unwrap()
+                        .to_string());
+                    }
+                }
+                return Err(err);
+            }
+        }
+    }
+
     pub fn update(
         cx: &mut MutableAppContext,
         update: impl 'static + Send + FnOnce(&mut SettingsFileContent),
@@ -40,27 +61,7 @@ impl SettingsFile {
 
         cx.background()
             .spawn(async move {
-                let old_text = match fs.load(path).await {
-                    Ok(settings) => settings,
-                    Err(err) => {
-                        if let Ok(e) = err.downcast::<std::io::Error>() {
-                            if e.kind() == ErrorKind::NotFound {
-                                std::str::from_utf8(
-                                    Assets
-                                        .load("settings/initial_user_settings.json")
-                                        .unwrap()
-                                        .as_ref(),
-                                )
-                                .unwrap()
-                                .to_string()
-                            } else {
-                                anyhow::bail!("Failed to load settings");
-                            }
-                        } else {
-                            anyhow::bail!("Failed to load settings")
-                        }
-                    }
-                };
+                let old_text = SettingsFile::load_settings(path, &fs).await?;
 
                 let new_text = update_settings_file(old_text, current_file_content, update);