Move StaffMode declaration out of paths

Mikayla Maki created

Change summary

crates/client/src/user.rs                   | 17 +++++++++++------
crates/theme_selector/src/theme_selector.rs |  4 ++--
crates/util/src/lib.rs                      | 11 +++++++++++
crates/util/src/paths.rs                    | 13 +------------
crates/zed/src/main.rs                      |  8 +-------
crates/zed/src/zed.rs                       |  8 ++------
6 files changed, 28 insertions(+), 33 deletions(-)

Detailed changes

crates/client/src/user.rs 🔗

@@ -7,7 +7,7 @@ use postage::{sink::Sink, watch};
 use rpc::proto::{RequestMessage, UsersResponse};
 use settings::Settings;
 use std::sync::{Arc, Weak};
-use util::{paths::StaffMode, TryFutureExt as _};
+use util::{StaffMode, TryFutureExt as _};
 
 #[derive(Default, Debug)]
 pub struct User {
@@ -149,11 +149,16 @@ impl UserStore {
                                 );
 
                                 cx.update(|cx| {
-                                    cx.set_global(
-                                        info.as_ref()
-                                            .map(|info| StaffMode(info.staff))
-                                            .unwrap_or(StaffMode(false)),
-                                    );
+                                    cx.update_default_global(|staff_mode: &mut StaffMode, _| {
+                                        if !staff_mode.0 {
+                                            *staff_mode = StaffMode(
+                                                info.as_ref()
+                                                    .map(|info| info.staff)
+                                                    .unwrap_or_default(),
+                                            )
+                                        }
+                                        ()
+                                    });
                                 });
 
                                 current_user_tx.send(user).await.ok();

crates/theme_selector/src/theme_selector.rs 🔗

@@ -7,7 +7,7 @@ use picker::{Picker, PickerDelegate};
 use settings::{settings_file::SettingsFile, Settings};
 use std::sync::Arc;
 use theme::{Theme, ThemeMeta, ThemeRegistry};
-use util::paths::StaffMode;
+use util::StaffMode;
 use workspace::{AppState, Workspace};
 
 pub struct ThemeSelector {
@@ -45,7 +45,7 @@ impl ThemeSelector {
         let original_theme = settings.theme.clone();
 
         let mut theme_names = registry
-            .list(**cx.try_global::<StaffMode>().unwrap_or(&StaffMode(false)))
+            .list(**cx.default_global::<StaffMode>())
             .collect::<Vec<_>>();
         theme_names.sort_unstable_by(|a, b| {
             a.is_light

crates/util/src/lib.rs 🔗

@@ -13,6 +13,17 @@ use std::{
     task::{Context, Poll},
 };
 
+#[derive(Debug, Default)]
+pub struct StaffMode(pub bool);
+
+impl std::ops::Deref for StaffMode {
+    type Target = bool;
+
+    fn deref(&self) -> &Self::Target {
+        &self.0
+    }
+}
+
 #[macro_export]
 macro_rules! debug_panic {
     ( $($fmt_arg:tt)* ) => {

crates/util/src/paths.rs 🔗

@@ -1,15 +1,4 @@
-use std::{ops::Deref, path::PathBuf};
-
-#[derive(Debug)]
-pub struct StaffMode(pub bool);
-
-impl Deref for StaffMode {
-    type Target = bool;
-
-    fn deref(&self) -> &Self::Target {
-        &self.0
-    }
-}
+use std::path::PathBuf;
 
 lazy_static::lazy_static! {
     pub static ref HOME: PathBuf = dirs::home_dir().expect("failed to determine home directory");

crates/zed/src/main.rs 🔗

@@ -39,11 +39,7 @@ use terminal_view::{get_working_directory, TerminalView};
 use fs::RealFs;
 use settings::watched_json::{watch_keymap_file, watch_settings_file, WatchedJsonFile};
 use theme::ThemeRegistry;
-use util::{
-    channel::RELEASE_CHANNEL,
-    paths::{self, StaffMode},
-    ResultExt, TryFutureExt,
-};
+use util::{channel::RELEASE_CHANNEL, paths, ResultExt, StaffMode, TryFutureExt};
 use workspace::{
     self, item::ItemHandle, notifications::NotifyResultExt, AppState, NewFile, OpenPaths, Workspace,
 };
@@ -109,8 +105,6 @@ fn main() {
     app.run(move |cx| {
         cx.set_global(*RELEASE_CHANNEL);
 
-        #[cfg(not(debug_assertions))]
-        cx.set_global(StaffMode(false));
         #[cfg(debug_assertions)]
         cx.set_global(StaffMode(true));
 

crates/zed/src/zed.rs 🔗

@@ -32,11 +32,7 @@ use serde::Deserialize;
 use serde_json::to_string_pretty;
 use settings::{keymap_file_json_schema, settings_file_json_schema, Settings};
 use std::{borrow::Cow, env, path::Path, str, sync::Arc};
-use util::{
-    channel::ReleaseChannel,
-    paths::{self, StaffMode},
-    ResultExt,
-};
+use util::{channel::ReleaseChannel, paths, ResultExt, StaffMode};
 use uuid::Uuid;
 pub use workspace;
 use workspace::{sidebar::SidebarSide, AppState, Workspace};
@@ -303,7 +299,7 @@ pub fn initialize_workspace(
 
     let theme_names = app_state
         .themes
-        .list(**cx.try_global::<StaffMode>().unwrap_or(&StaffMode(false)))
+        .list(**cx.default_global::<StaffMode>())
         .map(|meta| meta.name)
         .collect();
     let language_names = app_state.languages.language_names();