@@ -11,7 +11,10 @@ use highlighted_workspace_location::HighlightedWorkspaceLocation;
use ordered_float::OrderedFloat;
use picker::{Picker, PickerDelegate};
use settings::Settings;
-use workspace::{OpenPaths, Workspace, WorkspaceLocation, WORKSPACE_DB};
+use workspace::{
+ notifications::simple_message_notification::MessageNotification, OpenPaths, Workspace,
+ WorkspaceLocation, WORKSPACE_DB,
+};
actions!(projects, [OpenRecent]);
@@ -42,7 +45,7 @@ impl RecentProjectsView {
fn toggle(_: &mut Workspace, _: &OpenRecent, cx: &mut ViewContext<Workspace>) {
cx.spawn(|workspace, mut cx| async move {
- let workspace_locations = cx
+ let workspace_locations: Vec<_> = cx
.background()
.spawn(async {
WORKSPACE_DB
@@ -56,12 +59,20 @@ impl RecentProjectsView {
.await;
workspace.update(&mut cx, |workspace, cx| {
- workspace.toggle_modal(cx, |_, cx| {
- let view = cx.add_view(|cx| Self::new(workspace_locations, cx));
- cx.subscribe(&view, Self::on_event).detach();
- view
- });
- })
+ if !workspace_locations.is_empty() {
+ workspace.toggle_modal(cx, |_, cx| {
+ let view = cx.add_view(|cx| Self::new(workspace_locations, cx));
+ cx.subscribe(&view, Self::on_event).detach();
+ view
+ });
+ } else {
+ workspace.show_notification(0, cx, |cx| {
+ cx.add_view(|_| {
+ MessageNotification::new_message("No recent projects to open.")
+ })
+ })
+ }
+ });
})
.detach();
}
@@ -174,7 +174,7 @@ pub mod simple_message_notification {
}
impl MessageNotification {
- pub fn new_messsage<S: AsRef<str>>(message: S) -> MessageNotification {
+ pub fn new_message<S: AsRef<str>>(message: S) -> MessageNotification {
Self {
message: message.as_ref().to_string(),
click_action: None,
@@ -320,7 +320,7 @@ where
Err(err) => {
workspace.show_notification(0, cx, |cx| {
cx.add_view(|_cx| {
- simple_message_notification::MessageNotification::new_messsage(format!(
+ simple_message_notification::MessageNotification::new_message(format!(
"Error: {:?}",
err,
))