@@ -66,12 +66,12 @@ pub const ZED_SECRET_CLIENT_TOKEN: &str = "618033988749894";
pub const INITIAL_RECONNECTION_DELAY: Duration = Duration::from_millis(100);
pub const CONNECTION_TIMEOUT: Duration = Duration::from_secs(5);
-actions!(client, [Authenticate, SignOut]);
+actions!(client, [SignIn, SignOut]);
pub fn init(client: Arc<Client>, cx: &mut MutableAppContext) {
cx.add_global_action({
let client = client.clone();
- move |_: &Authenticate, cx| {
+ move |_: &SignIn, cx| {
let client = client.clone();
cx.spawn(
|cx| async move { client.authenticate_and_connect(true, &cx).log_err().await },
@@ -4,7 +4,7 @@ use crate::{
ToggleScreenSharing,
};
use call::{ActiveCall, ParticipantLocation, Room};
-use client::{proto::PeerId, Authenticate, ContactEventKind, SignOut, User, UserStore};
+use client::{proto::PeerId, ContactEventKind, SignIn, SignOut, User, UserStore};
use clock::ReplicaId;
use contacts_popover::ContactsPopover;
use context_menu::{ContextMenu, ContextMenuItem};
@@ -119,12 +119,12 @@ impl View for CollabTitlebarItem {
let status = &*status.borrow();
if matches!(status, client::Status::Connected { .. }) {
right_container.add_child(self.render_toggle_contacts_button(&theme, cx));
+ right_container.add_child(self.render_user_menu_button(&theme, cx));
} else {
right_container.add_children(self.render_connection_status(status, cx));
+ right_container.add_child(self.render_sign_in_button(&theme, cx));
}
- right_container.add_child(self.render_user_menu_button(&theme, cx));
-
Stack::new()
.with_child(left_container.boxed())
.with_child(right_container.aligned().right().boxed())
@@ -313,7 +313,7 @@ impl CollabTitlebarItem {
vec![
ContextMenuItem::Item {
label: "Sign in".into(),
- action: Box::new(Authenticate),
+ action: Box::new(SignIn),
},
ContextMenuItem::Item {
label: "Give Feedback".into(),
@@ -554,6 +554,22 @@ impl CollabTitlebarItem {
.boxed()
}
+ fn render_sign_in_button(&self, theme: &Theme, cx: &mut RenderContext<Self>) -> ElementBox {
+ let titlebar = &theme.workspace.titlebar;
+ MouseEventHandler::<SignIn>::new(0, cx, |state, _| {
+ let style = titlebar.sign_in_prompt.style_for(state, false);
+ Label::new("Sign In", style.text.clone())
+ .contained()
+ .with_style(style.container)
+ .boxed()
+ })
+ .with_cursor_style(CursorStyle::PointingHand)
+ .on_click(MouseButton::Left, move |_, cx| {
+ cx.dispatch_action(SignIn);
+ })
+ .boxed()
+ }
+
fn render_contacts_popover_host<'a>(
&'a self,
theme: &'a theme::Titlebar,