mirror of
https://github.com/zed-industries/zed.git
synced 2024-09-19 02:17:35 +03:00
Use try_global()
This commit is contained in:
parent
933fb87013
commit
b807e6fe80
@ -145,17 +145,16 @@ pub fn view_release_notes(_: &ViewReleaseNotes, cx: &mut AppContext) {
|
|||||||
let auto_updater = auto_updater.read(cx);
|
let auto_updater = auto_updater.read(cx);
|
||||||
let server_url = &auto_updater.server_url;
|
let server_url = &auto_updater.server_url;
|
||||||
let current_version = auto_updater.current_version;
|
let current_version = auto_updater.current_version;
|
||||||
if cx.has_global::<ReleaseChannel>() {
|
|
||||||
match cx.global::<ReleaseChannel>() {
|
if let Some(release_channel) = cx.try_global::<ReleaseChannel>() {
|
||||||
ReleaseChannel::Dev => {}
|
let channel = match release_channel {
|
||||||
ReleaseChannel::Nightly => {}
|
ReleaseChannel::Preview => "preview",
|
||||||
ReleaseChannel::Preview => {
|
ReleaseChannel::Stable => "stable",
|
||||||
cx.open_url(&format!("{server_url}/releases/preview/{current_version}"))
|
_ => return,
|
||||||
}
|
};
|
||||||
ReleaseChannel::Stable => {
|
cx.open_url(&format!(
|
||||||
cx.open_url(&format!("{server_url}/releases/stable/{current_version}"))
|
"{server_url}/releases/{channel}/{current_version}"
|
||||||
}
|
))
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -257,11 +256,13 @@ impl AutoUpdater {
|
|||||||
"{server_url}/api/releases/latest?token={ZED_SECRET_CLIENT_TOKEN}&asset=Zed.dmg"
|
"{server_url}/api/releases/latest?token={ZED_SECRET_CLIENT_TOKEN}&asset=Zed.dmg"
|
||||||
);
|
);
|
||||||
cx.update(|cx| {
|
cx.update(|cx| {
|
||||||
if cx.has_global::<ReleaseChannel>() {
|
if let Some(param) = cx
|
||||||
if let Some(param) = cx.global::<ReleaseChannel>().release_query_param() {
|
.try_global::<ReleaseChannel>()
|
||||||
url_string += "&";
|
.map(|release_channel| release_channel.release_query_param())
|
||||||
url_string += param;
|
.flatten()
|
||||||
}
|
{
|
||||||
|
url_string += "&";
|
||||||
|
url_string += param;
|
||||||
}
|
}
|
||||||
})?;
|
})?;
|
||||||
|
|
||||||
@ -313,8 +314,8 @@ impl AutoUpdater {
|
|||||||
let (installation_id, release_channel, telemetry) = cx.update(|cx| {
|
let (installation_id, release_channel, telemetry) = cx.update(|cx| {
|
||||||
let installation_id = cx.global::<Arc<Client>>().telemetry().installation_id();
|
let installation_id = cx.global::<Arc<Client>>().telemetry().installation_id();
|
||||||
let release_channel = cx
|
let release_channel = cx
|
||||||
.has_global::<ReleaseChannel>()
|
.try_global::<ReleaseChannel>()
|
||||||
.then(|| cx.global::<ReleaseChannel>().display_name());
|
.map(|release_channel| release_channel.display_name());
|
||||||
let telemetry = TelemetrySettings::get_global(cx).metrics;
|
let telemetry = TelemetrySettings::get_global(cx).metrics;
|
||||||
|
|
||||||
(installation_id, release_channel, telemetry)
|
(installation_id, release_channel, telemetry)
|
||||||
|
@ -150,11 +150,9 @@ const FLUSH_INTERVAL: Duration = Duration::from_secs(60 * 5);
|
|||||||
|
|
||||||
impl Telemetry {
|
impl Telemetry {
|
||||||
pub fn new(client: Arc<dyn HttpClient>, cx: &mut AppContext) -> Arc<Self> {
|
pub fn new(client: Arc<dyn HttpClient>, cx: &mut AppContext) -> Arc<Self> {
|
||||||
let release_channel = if cx.has_global::<ReleaseChannel>() {
|
let release_channel = cx
|
||||||
Some(cx.global::<ReleaseChannel>().display_name())
|
.try_global::<ReleaseChannel>()
|
||||||
} else {
|
.map(|release_channel| release_channel.display_name());
|
||||||
None
|
|
||||||
};
|
|
||||||
|
|
||||||
TelemetrySettings::register(cx);
|
TelemetrySettings::register(cx);
|
||||||
|
|
||||||
|
@ -308,11 +308,7 @@ impl EventEmitter<Event> for Copilot {}
|
|||||||
|
|
||||||
impl Copilot {
|
impl Copilot {
|
||||||
pub fn global(cx: &AppContext) -> Option<Model<Self>> {
|
pub fn global(cx: &AppContext) -> Option<Model<Self>> {
|
||||||
if cx.has_global::<Model<Self>>() {
|
cx.try_global::<Model<Self>>().map(|model| model.clone())
|
||||||
Some(cx.global::<Model<Self>>().clone())
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn start(
|
fn start(
|
||||||
|
@ -57,18 +57,14 @@ impl FeatureFlagAppExt for AppContext {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn has_flag<T: FeatureFlag>(&self) -> bool {
|
fn has_flag<T: FeatureFlag>(&self) -> bool {
|
||||||
if self.has_global::<FeatureFlags>() {
|
self.try_global::<FeatureFlags>()
|
||||||
self.global::<FeatureFlags>().has_flag(T::NAME)
|
.map(|flags| flags.has_flag(T::NAME))
|
||||||
} else {
|
.unwrap_or(false)
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn is_staff(&self) -> bool {
|
fn is_staff(&self) -> bool {
|
||||||
if self.has_global::<FeatureFlags>() {
|
self.try_global::<FeatureFlags>()
|
||||||
return self.global::<FeatureFlags>().staff;
|
.map(|flags| flags.staff)
|
||||||
} else {
|
.unwrap_or(false)
|
||||||
false
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -42,7 +42,7 @@ impl FileAssociations {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_icon(path: &Path, cx: &AppContext) -> Option<Arc<str>> {
|
pub fn get_icon(path: &Path, cx: &AppContext) -> Option<Arc<str>> {
|
||||||
let this = cx.has_global::<Self>().then(|| cx.global::<Self>())?;
|
let this = cx.try_global::<Self>()?;
|
||||||
|
|
||||||
// FIXME: Associate a type with the languages and have the file's language
|
// FIXME: Associate a type with the languages and have the file's language
|
||||||
// override these associations
|
// override these associations
|
||||||
@ -58,7 +58,7 @@ impl FileAssociations {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_folder_icon(expanded: bool, cx: &AppContext) -> Option<Arc<str>> {
|
pub fn get_folder_icon(expanded: bool, cx: &AppContext) -> Option<Arc<str>> {
|
||||||
let this = cx.has_global::<Self>().then(|| cx.global::<Self>())?;
|
let this = cx.try_global::<Self>()?;
|
||||||
|
|
||||||
let key = if expanded {
|
let key = if expanded {
|
||||||
EXPANDED_DIRECTORY_TYPE
|
EXPANDED_DIRECTORY_TYPE
|
||||||
@ -72,7 +72,7 @@ impl FileAssociations {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn get_chevron_icon(expanded: bool, cx: &AppContext) -> Option<Arc<str>> {
|
pub fn get_chevron_icon(expanded: bool, cx: &AppContext) -> Option<Arc<str>> {
|
||||||
let this = cx.has_global::<Self>().then(|| cx.global::<Self>())?;
|
let this = cx.try_global::<Self>()?;
|
||||||
|
|
||||||
let key = if expanded {
|
let key = if expanded {
|
||||||
EXPANDED_CHEVRON_TYPE
|
EXPANDED_CHEVRON_TYPE
|
||||||
|
@ -275,11 +275,8 @@ pub struct SearchResult {
|
|||||||
|
|
||||||
impl SemanticIndex {
|
impl SemanticIndex {
|
||||||
pub fn global(cx: &mut AppContext) -> Option<Model<SemanticIndex>> {
|
pub fn global(cx: &mut AppContext) -> Option<Model<SemanticIndex>> {
|
||||||
if cx.has_global::<Model<Self>>() {
|
cx.try_global::<Model<Self>>()
|
||||||
Some(cx.global::<Model<SemanticIndex>>().clone())
|
.map(|semantic_index| semantic_index.clone())
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
pub fn authenticate(&mut self, cx: &mut AppContext) -> bool {
|
pub fn authenticate(&mut self, cx: &mut AppContext) -> bool {
|
||||||
|
@ -28,11 +28,10 @@ impl ModeIndicator {
|
|||||||
|
|
||||||
fn update_mode(&mut self, cx: &mut ViewContext<Self>) {
|
fn update_mode(&mut self, cx: &mut ViewContext<Self>) {
|
||||||
// Vim doesn't exist in some tests
|
// Vim doesn't exist in some tests
|
||||||
if !cx.has_global::<Vim>() {
|
let Some(vim) = cx.try_global::<Vim>() else {
|
||||||
return;
|
return;
|
||||||
}
|
};
|
||||||
|
|
||||||
let vim = Vim::read(cx);
|
|
||||||
if vim.enabled {
|
if vim.enabled {
|
||||||
self.mode = Some(vim.state().mode);
|
self.mode = Some(vim.state().mode);
|
||||||
} else {
|
} else {
|
||||||
|
@ -586,13 +586,9 @@ impl<T: Item> ItemHandle for View<T> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn to_followable_item_handle(&self, cx: &AppContext) -> Option<Box<dyn FollowableItemHandle>> {
|
fn to_followable_item_handle(&self, cx: &AppContext) -> Option<Box<dyn FollowableItemHandle>> {
|
||||||
if cx.has_global::<FollowableItemBuilders>() {
|
let builders = cx.try_global::<FollowableItemBuilders>()?;
|
||||||
let builders = cx.global::<FollowableItemBuilders>();
|
let item = self.to_any();
|
||||||
let item = self.to_any();
|
Some(builders.get(&item.entity_type())?.1(&item))
|
||||||
Some(builders.get(&item.entity_type())?.1(&item))
|
|
||||||
} else {
|
|
||||||
None
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn on_release(
|
fn on_release(
|
||||||
|
@ -616,8 +616,8 @@ impl Workspace {
|
|||||||
let modal_layer = cx.new_view(|_| ModalLayer::new());
|
let modal_layer = cx.new_view(|_| ModalLayer::new());
|
||||||
|
|
||||||
let mut active_call = None;
|
let mut active_call = None;
|
||||||
if cx.has_global::<Model<ActiveCall>>() {
|
if let Some(call) = cx.try_global::<Model<ActiveCall>>() {
|
||||||
let call = cx.global::<Model<ActiveCall>>().clone();
|
let call = call.clone();
|
||||||
let mut subscriptions = Vec::new();
|
let mut subscriptions = Vec::new();
|
||||||
subscriptions.push(cx.subscribe(&call, Self::on_active_call_event));
|
subscriptions.push(cx.subscribe(&call, Self::on_active_call_event));
|
||||||
active_call = Some((call, subscriptions));
|
active_call = Some((call, subscriptions));
|
||||||
@ -3686,11 +3686,8 @@ impl WorkspaceStore {
|
|||||||
update: proto::update_followers::Variant,
|
update: proto::update_followers::Variant,
|
||||||
cx: &AppContext,
|
cx: &AppContext,
|
||||||
) -> Option<()> {
|
) -> Option<()> {
|
||||||
if !cx.has_global::<Model<ActiveCall>>() {
|
let active_call = cx.try_global::<Model<ActiveCall>>()?;
|
||||||
return None;
|
let room_id = active_call.read(cx).room()?.read(cx).id();
|
||||||
}
|
|
||||||
|
|
||||||
let room_id = ActiveCall::global(cx).read(cx).room()?.read(cx).id();
|
|
||||||
let follower_ids: Vec<_> = self
|
let follower_ids: Vec<_> = self
|
||||||
.followers
|
.followers
|
||||||
.iter()
|
.iter()
|
||||||
|
@ -102,13 +102,15 @@ fn main() {
|
|||||||
let open_listener = listener.clone();
|
let open_listener = listener.clone();
|
||||||
app.on_open_urls(move |urls, _| open_listener.open_urls(&urls));
|
app.on_open_urls(move |urls, _| open_listener.open_urls(&urls));
|
||||||
app.on_reopen(move |cx| {
|
app.on_reopen(move |cx| {
|
||||||
if cx.has_global::<Weak<AppState>>() {
|
if let Some(app_state) = cx
|
||||||
if let Some(app_state) = cx.global::<Weak<AppState>>().upgrade() {
|
.try_global::<Weak<AppState>>()
|
||||||
workspace::open_new(&app_state, cx, |workspace, cx| {
|
.map(|app_state| app_state.upgrade())
|
||||||
Editor::new_file(workspace, &Default::default(), cx)
|
.flatten()
|
||||||
})
|
{
|
||||||
.detach();
|
workspace::open_new(&app_state, cx, |workspace, cx| {
|
||||||
}
|
Editor::new_file(workspace, &Default::default(), cx)
|
||||||
|
})
|
||||||
|
.detach();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user