Adjust APIs for simpler examples in blog post

Nathan Sobo created

Change summary

crates/gpui/src/app.rs                      | 12 +++++++++---
crates/live_kit_client/examples/test_app.rs |  4 ++--
crates/storybook/src/storybook.rs           |  3 +--
crates/zed/src/main.rs                      |  2 +-
4 files changed, 13 insertions(+), 8 deletions(-)

Detailed changes

crates/gpui/src/app.rs 🔗

@@ -111,14 +111,20 @@ pub struct App(Rc<AppCell>);
 /// configured, you'll start the app with `App::run`.
 impl App {
     /// Builds an app with the given asset source.
-    pub fn production(asset_source: Arc<dyn AssetSource>) -> Self {
+    pub fn new() -> Self {
         Self(AppContext::new(
             current_platform(),
-            asset_source,
+            Arc::new(()),
             http::client(),
         ))
     }
 
+    /// Assign
+    pub fn with_assets(self, asset_source: impl AssetSource) -> Self {
+        self.0.borrow_mut().asset_source = Arc::new(asset_source);
+        self
+    }
+
     /// Start the application. The provided callback will be called once the
     /// app is fully launched.
     pub fn run<F>(self, on_finish_launching: F)
@@ -1167,7 +1173,7 @@ impl Context for AppContext {
     type Result<T> = T;
 
     /// Build an entity that is owned by the application. The given function will be invoked with
-    /// a `ModelContext` and must return an object representing the entity. A `Model` will be returned
+    /// a `ModelContext` and must return an object representing the entity. A `Model` handle will be returned,
     /// which can be used to access the entity in a context.
     fn new_model<T: 'static>(
         &mut self,

crates/live_kit_client/examples/test_app.rs 🔗

@@ -1,4 +1,4 @@
-use std::{sync::Arc, time::Duration};
+use std::time::Duration;
 
 use futures::StreamExt;
 use gpui::{actions, KeyBinding, Menu, MenuItem};
@@ -12,7 +12,7 @@ actions!(live_kit_client, [Quit]);
 fn main() {
     SimpleLogger::init(LevelFilter::Info, Default::default()).expect("could not initialize logger");
 
-    gpui::App::production(Arc::new(())).run(|cx| {
+    gpui::App::new().run(|cx| {
         #[cfg(any(test, feature = "test-support"))]
         println!("USING TEST LIVEKIT");
 

crates/storybook/src/storybook.rs 🔗

@@ -60,8 +60,7 @@ fn main() {
     });
     let theme_name = args.theme.unwrap_or("One Dark".to_string());
 
-    let asset_source = Arc::new(Assets);
-    gpui::App::production(asset_source).run(move |cx| {
+    gpui::App::new().with_assets(Assets).run(move |cx| {
         load_embedded_fonts(cx).unwrap();
 
         let mut store = SettingsStore::default();

crates/zed/src/main.rs 🔗

@@ -67,7 +67,7 @@ fn main() {
     }
 
     log::info!("========== starting zed ==========");
-    let app = App::production(Arc::new(Assets));
+    let app = App::new().with_assets(Assets);
 
     let (installation_id, existing_installation_id_found) = app
         .background_executor()