Removed old experiments settings and staff mode flag, added new StaffMode global that is set based on the webserver's staff bit
This commit is contained in:
parent
ca2e0256e1
commit
ea39983f78
40 changed files with 66 additions and 124 deletions
|
@ -7,7 +7,7 @@ use postage::{sink::Sink, watch};
|
|||
use rpc::proto::{RequestMessage, UsersResponse};
|
||||
use settings::Settings;
|
||||
use std::sync::{Arc, Weak};
|
||||
use util::TryFutureExt as _;
|
||||
use util::{paths::StaffMode, TryFutureExt as _};
|
||||
|
||||
#[derive(Default, Debug)]
|
||||
pub struct User {
|
||||
|
@ -148,6 +148,15 @@ impl UserStore {
|
|||
cx.read(|cx| cx.global::<Settings>().telemetry()),
|
||||
);
|
||||
|
||||
cx.update(|cx| {
|
||||
cx.update_global::<StaffMode, _, _>(|staff_mode, _| {
|
||||
*staff_mode = info
|
||||
.as_ref()
|
||||
.map(|info| StaffMode(info.staff))
|
||||
.unwrap_or(StaffMode(false));
|
||||
})
|
||||
});
|
||||
|
||||
current_user_tx.send(user).await.ok();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -11,7 +11,7 @@ use client::{
|
|||
EstablishConnectionError, UserStore,
|
||||
};
|
||||
use collections::{HashMap, HashSet};
|
||||
use fs::{FakeFs, HomeDir};
|
||||
use fs::FakeFs;
|
||||
use futures::{channel::oneshot, StreamExt as _};
|
||||
use gpui::{
|
||||
executor::Deterministic, test::EmptyView, ModelHandle, Task, TestAppContext, ViewHandle,
|
||||
|
@ -100,7 +100,6 @@ impl TestServer {
|
|||
|
||||
async fn create_client(&mut self, cx: &mut TestAppContext, name: &str) -> TestClient {
|
||||
cx.update(|cx| {
|
||||
cx.set_global(HomeDir(Path::new("/tmp/").to_path_buf()));
|
||||
cx.set_global(Settings::test(cx));
|
||||
});
|
||||
|
||||
|
|
|
@ -13,7 +13,6 @@ use smol::io::{AsyncReadExt, AsyncWriteExt};
|
|||
use std::borrow::Cow;
|
||||
use std::cmp;
|
||||
use std::io::Write;
|
||||
use std::ops::Deref;
|
||||
use std::sync::Arc;
|
||||
use std::{
|
||||
io,
|
||||
|
@ -94,16 +93,6 @@ impl LineEnding {
|
|||
}
|
||||
}
|
||||
|
||||
pub struct HomeDir(pub PathBuf);
|
||||
|
||||
impl Deref for HomeDir {
|
||||
type Target = PathBuf;
|
||||
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
|
||||
#[async_trait::async_trait]
|
||||
pub trait Fs: Send + Sync {
|
||||
async fn create_dir(&self, path: &Path) -> Result<()>;
|
||||
|
|
|
@ -550,7 +550,6 @@ impl Project {
|
|||
if !cx.read(|cx| cx.has_global::<Settings>()) {
|
||||
cx.update(|cx| {
|
||||
cx.set_global(Settings::test(cx));
|
||||
cx.set_global(HomeDir(Path::new("/tmp/").to_path_buf()))
|
||||
});
|
||||
}
|
||||
|
||||
|
|
|
@ -5,8 +5,8 @@ use anyhow::{anyhow, Context, Result};
|
|||
use client::{proto, Client};
|
||||
use clock::ReplicaId;
|
||||
use collections::{HashMap, VecDeque};
|
||||
use fs::LineEnding;
|
||||
use fs::{repository::GitRepository, Fs};
|
||||
use fs::{HomeDir, LineEnding};
|
||||
use futures::{
|
||||
channel::{
|
||||
mpsc::{self, UnboundedSender},
|
||||
|
@ -49,6 +49,7 @@ use std::{
|
|||
time::{Duration, SystemTime},
|
||||
};
|
||||
use sum_tree::{Bias, Edit, SeekTarget, SumTree, TreeMap, TreeSet};
|
||||
use util::paths::HOME;
|
||||
use util::{ResultExt, TryFutureExt};
|
||||
|
||||
#[derive(Copy, Clone, PartialEq, Eq, Debug, Hash, PartialOrd, Ord)]
|
||||
|
@ -1831,9 +1832,9 @@ impl language::File for File {
|
|||
} else {
|
||||
let path = worktree.abs_path();
|
||||
|
||||
if worktree.is_local() && path.starts_with(cx.global::<HomeDir>().as_path()) {
|
||||
if worktree.is_local() && path.starts_with(HOME.as_path()) {
|
||||
full_path.push("~");
|
||||
full_path.push(path.strip_prefix(cx.global::<HomeDir>().as_path()).unwrap());
|
||||
full_path.push(path.strip_prefix(HOME.as_path()).unwrap());
|
||||
} else {
|
||||
full_path.push(path)
|
||||
}
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
use crate::{parse_json_with_comments, Settings};
|
||||
use crate::parse_json_with_comments;
|
||||
use anyhow::{Context, Result};
|
||||
use assets::Assets;
|
||||
use collections::BTreeMap;
|
||||
|
@ -42,16 +42,7 @@ struct ActionWithData(Box<str>, Box<RawValue>);
|
|||
|
||||
impl KeymapFileContent {
|
||||
pub fn load_defaults(cx: &mut MutableAppContext) {
|
||||
let settings = cx.global::<Settings>();
|
||||
let mut paths = vec!["keymaps/default.json", "keymaps/vim.json"];
|
||||
|
||||
if settings.staff_mode {
|
||||
paths.push("keymaps/internal.json")
|
||||
}
|
||||
|
||||
paths.extend(settings.experiments.keymap_files());
|
||||
|
||||
for path in paths {
|
||||
for path in ["keymaps/default.json", "keymaps/vim.json"] {
|
||||
Self::load(path, cx).unwrap();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -27,7 +27,6 @@ pub use keymap_file::{keymap_file_json_schema, KeymapFileContent};
|
|||
|
||||
#[derive(Clone)]
|
||||
pub struct Settings {
|
||||
pub experiments: FeatureFlags,
|
||||
pub buffer_font_family: FamilyId,
|
||||
pub default_buffer_font_size: f32,
|
||||
pub buffer_font_size: f32,
|
||||
|
@ -53,7 +52,6 @@ pub struct Settings {
|
|||
pub theme: Arc<Theme>,
|
||||
pub telemetry_defaults: TelemetrySettings,
|
||||
pub telemetry_overrides: TelemetrySettings,
|
||||
pub staff_mode: bool,
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, Default, Serialize, Deserialize, JsonSchema)]
|
||||
|
@ -71,17 +69,6 @@ impl TelemetrySettings {
|
|||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, Default, Serialize, Deserialize, JsonSchema)]
|
||||
pub struct FeatureFlags {
|
||||
pub experimental_themes: bool,
|
||||
}
|
||||
|
||||
impl FeatureFlags {
|
||||
pub fn keymap_files(&self) -> Vec<&'static str> {
|
||||
vec![]
|
||||
}
|
||||
}
|
||||
|
||||
#[derive(Copy, Clone, Debug, Default, Serialize, Deserialize, JsonSchema)]
|
||||
pub struct GitSettings {
|
||||
pub git_gutter: Option<GitGutter>,
|
||||
|
@ -283,7 +270,6 @@ impl Column for DockAnchor {
|
|||
|
||||
#[derive(Clone, Debug, Default, Serialize, Deserialize, JsonSchema)]
|
||||
pub struct SettingsFileContent {
|
||||
pub experiments: Option<FeatureFlags>,
|
||||
#[serde(default)]
|
||||
pub projects_online_by_default: Option<bool>,
|
||||
#[serde(default)]
|
||||
|
@ -323,8 +309,6 @@ pub struct SettingsFileContent {
|
|||
pub theme: Option<String>,
|
||||
#[serde(default)]
|
||||
pub telemetry: TelemetrySettings,
|
||||
#[serde(default)]
|
||||
pub staff_mode: Option<bool>,
|
||||
}
|
||||
|
||||
#[derive(Clone, Debug, Serialize, Deserialize, PartialEq, Eq, JsonSchema)]
|
||||
|
@ -352,7 +336,6 @@ impl Settings {
|
|||
.unwrap();
|
||||
|
||||
Self {
|
||||
experiments: FeatureFlags::default(),
|
||||
buffer_font_family: font_cache
|
||||
.load_family(&[defaults.buffer_font_family.as_ref().unwrap()])
|
||||
.unwrap(),
|
||||
|
@ -388,7 +371,6 @@ impl Settings {
|
|||
theme: themes.get(&defaults.theme.unwrap()).unwrap(),
|
||||
telemetry_defaults: defaults.telemetry,
|
||||
telemetry_overrides: Default::default(),
|
||||
staff_mode: false,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -425,8 +407,6 @@ impl Settings {
|
|||
);
|
||||
merge(&mut self.vim_mode, data.vim_mode);
|
||||
merge(&mut self.autosave, data.autosave);
|
||||
merge(&mut self.experiments, data.experiments);
|
||||
merge(&mut self.staff_mode, data.staff_mode);
|
||||
merge(&mut self.default_dock_anchor, data.default_dock_anchor);
|
||||
|
||||
// Ensure terminal font is loaded, so we can request it in terminal_element layout
|
||||
|
@ -552,7 +532,6 @@ impl Settings {
|
|||
#[cfg(any(test, feature = "test-support"))]
|
||||
pub fn test(cx: &gpui::AppContext) -> Settings {
|
||||
Settings {
|
||||
experiments: FeatureFlags::default(),
|
||||
buffer_font_family: cx.font_cache().load_family(&["Monaco"]).unwrap(),
|
||||
buffer_font_size: 14.,
|
||||
active_pane_magnification: 1.,
|
||||
|
@ -589,7 +568,6 @@ impl Settings {
|
|||
metrics: Some(true),
|
||||
},
|
||||
telemetry_overrides: Default::default(),
|
||||
staff_mode: false,
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -647,8 +625,6 @@ pub fn settings_file_json_schema(
|
|||
]);
|
||||
let root_schema_object = &mut root_schema.schema.object.as_mut().unwrap();
|
||||
|
||||
// Avoid automcomplete for non-user facing settings
|
||||
root_schema_object.properties.remove("staff_mode");
|
||||
root_schema_object.properties.extend([
|
||||
(
|
||||
"theme".to_owned(),
|
||||
|
|
|
@ -22,20 +22,13 @@ impl ThemeRegistry {
|
|||
})
|
||||
}
|
||||
|
||||
pub fn list(&self, internal: bool, experiments: bool) -> impl Iterator<Item = ThemeMeta> + '_ {
|
||||
pub fn list(&self, staff: bool) -> impl Iterator<Item = ThemeMeta> + '_ {
|
||||
let mut dirs = self.assets.list("themes/");
|
||||
|
||||
if !internal {
|
||||
if !staff {
|
||||
dirs = dirs
|
||||
.into_iter()
|
||||
.filter(|path| !path.starts_with("themes/Internal"))
|
||||
.collect()
|
||||
}
|
||||
|
||||
if !experiments {
|
||||
dirs = dirs
|
||||
.into_iter()
|
||||
.filter(|path| !path.starts_with("themes/Experiments"))
|
||||
.filter(|path| !path.starts_with("themes/staff"))
|
||||
.collect()
|
||||
}
|
||||
|
||||
|
|
|
@ -16,6 +16,7 @@ picker = { path = "../picker" }
|
|||
theme = { path = "../theme" }
|
||||
settings = { path = "../settings" }
|
||||
workspace = { path = "../workspace" }
|
||||
util = { path = "../util" }
|
||||
log = { version = "0.4.16", features = ["kv_unstable_serde"] }
|
||||
parking_lot = "0.11.1"
|
||||
postage = { version = "0.4.1", features = ["futures-traits"] }
|
||||
|
|
|
@ -7,6 +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 workspace::{AppState, Workspace};
|
||||
|
||||
pub struct ThemeSelector {
|
||||
|
@ -44,10 +45,7 @@ impl ThemeSelector {
|
|||
let original_theme = settings.theme.clone();
|
||||
|
||||
let mut theme_names = registry
|
||||
.list(
|
||||
settings.staff_mode,
|
||||
settings.experiments.experimental_themes,
|
||||
)
|
||||
.list(**cx.global::<StaffMode>())
|
||||
.collect::<Vec<_>>();
|
||||
theme_names.sort_unstable_by(|a, b| {
|
||||
a.is_light
|
||||
|
|
|
@ -1,4 +1,15 @@
|
|||
use std::path::PathBuf;
|
||||
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
|
||||
}
|
||||
}
|
||||
|
||||
lazy_static::lazy_static! {
|
||||
pub static ref HOME: PathBuf = dirs::home_dir().expect("failed to determine home directory");
|
||||
|
|
|
@ -349,9 +349,6 @@ pub struct AppState {
|
|||
impl AppState {
|
||||
#[cfg(any(test, feature = "test-support"))]
|
||||
pub fn test(cx: &mut MutableAppContext) -> Arc<Self> {
|
||||
use fs::HomeDir;
|
||||
|
||||
cx.set_global(HomeDir(Path::new("/tmp/").to_path_buf()));
|
||||
let settings = Settings::test(cx);
|
||||
cx.set_global(settings);
|
||||
|
||||
|
|
|
@ -24,7 +24,7 @@ use isahc::{config::Configurable, Request};
|
|||
use language::LanguageRegistry;
|
||||
use log::LevelFilter;
|
||||
use parking_lot::Mutex;
|
||||
use project::{Fs, HomeDir};
|
||||
use project::Fs;
|
||||
use serde_json::json;
|
||||
use settings::{
|
||||
self, settings_file::SettingsFile, KeymapFileContent, Settings, SettingsFileContent,
|
||||
|
@ -39,7 +39,11 @@ 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, ResultExt, TryFutureExt};
|
||||
use util::{
|
||||
channel::RELEASE_CHANNEL,
|
||||
paths::{self, StaffMode},
|
||||
ResultExt, TryFutureExt,
|
||||
};
|
||||
use workspace::{
|
||||
self, item::ItemHandle, notifications::NotifyResultExt, AppState, NewFile, OpenPaths, Workspace,
|
||||
};
|
||||
|
@ -104,7 +108,11 @@ fn main() {
|
|||
|
||||
app.run(move |cx| {
|
||||
cx.set_global(*RELEASE_CHANNEL);
|
||||
cx.set_global(HomeDir(paths::HOME.to_path_buf()));
|
||||
|
||||
#[cfg(not(debug_assertions))]
|
||||
cx.set_global(StaffMode(false));
|
||||
#[cfg(debug_assertions)]
|
||||
cx.set_global(StaffMode(true));
|
||||
|
||||
let (settings_file_content, keymap_file) = cx.background().block(config_files).unwrap();
|
||||
|
||||
|
|
|
@ -32,7 +32,11 @@ 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, ResultExt};
|
||||
use util::{
|
||||
channel::ReleaseChannel,
|
||||
paths::{self, StaffMode},
|
||||
ResultExt,
|
||||
};
|
||||
use uuid::Uuid;
|
||||
pub use workspace;
|
||||
use workspace::{sidebar::SidebarSide, AppState, Workspace};
|
||||
|
@ -297,14 +301,9 @@ pub fn initialize_workspace(
|
|||
cx.emit(workspace::Event::PaneAdded(workspace.active_pane().clone()));
|
||||
cx.emit(workspace::Event::PaneAdded(workspace.dock_pane().clone()));
|
||||
|
||||
let settings = cx.global::<Settings>();
|
||||
|
||||
let theme_names = app_state
|
||||
.themes
|
||||
.list(
|
||||
settings.staff_mode,
|
||||
settings.experiments.experimental_themes,
|
||||
)
|
||||
.list(**cx.global::<StaffMode>())
|
||||
.map(|meta| meta.name)
|
||||
.collect();
|
||||
let language_names = app_state.languages.language_names();
|
||||
|
@ -1868,7 +1867,7 @@ mod tests {
|
|||
let settings = Settings::defaults(Assets, cx.font_cache(), &themes);
|
||||
|
||||
let mut has_default_theme = false;
|
||||
for theme_name in themes.list(false, false).map(|meta| meta.name) {
|
||||
for theme_name in themes.list(false).map(|meta| meta.name) {
|
||||
let theme = themes.get(&theme_name).unwrap();
|
||||
if theme.meta.name == settings.theme.meta.name {
|
||||
has_default_theme = true;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue