Make sign_in init conditional
This commit is contained in:
parent
f5bbb41cc2
commit
ad8162fc9c
1 changed files with 37 additions and 37 deletions
|
@ -23,51 +23,51 @@ struct OpenGithub;
|
||||||
const COPILOT_SIGN_UP_URL: &'static str = "https://github.com/features/copilot";
|
const COPILOT_SIGN_UP_URL: &'static str = "https://github.com/features/copilot";
|
||||||
|
|
||||||
pub fn init(cx: &mut AppContext) {
|
pub fn init(cx: &mut AppContext) {
|
||||||
let copilot = Copilot::global(cx).unwrap();
|
if let Some(copilot) = Copilot::global(cx) {
|
||||||
|
let mut code_verification: Option<ViewHandle<CopilotCodeVerification>> = None;
|
||||||
|
cx.observe(&copilot, move |copilot, cx| {
|
||||||
|
let status = copilot.read(cx).status();
|
||||||
|
|
||||||
let mut code_verification: Option<ViewHandle<CopilotCodeVerification>> = None;
|
match &status {
|
||||||
cx.observe(&copilot, move |copilot, cx| {
|
crate::Status::SigningIn { prompt } => {
|
||||||
let status = copilot.read(cx).status();
|
if let Some(code_verification_handle) = code_verification.as_mut() {
|
||||||
|
if cx.has_window(code_verification_handle.window_id()) {
|
||||||
match &status {
|
code_verification_handle.update(cx, |code_verification_view, cx| {
|
||||||
crate::Status::SigningIn { prompt } => {
|
code_verification_view.set_status(status, cx)
|
||||||
if let Some(code_verification_handle) = code_verification.as_mut() {
|
});
|
||||||
if cx.has_window(code_verification_handle.window_id()) {
|
cx.activate_window(code_verification_handle.window_id());
|
||||||
code_verification_handle.update(cx, |code_verification_view, cx| {
|
} else {
|
||||||
code_verification_view.set_status(status, cx)
|
create_copilot_auth_window(cx, &status, &mut code_verification);
|
||||||
});
|
}
|
||||||
cx.activate_window(code_verification_handle.window_id());
|
} else if let Some(_prompt) = prompt {
|
||||||
} else {
|
|
||||||
create_copilot_auth_window(cx, &status, &mut code_verification);
|
create_copilot_auth_window(cx, &status, &mut code_verification);
|
||||||
}
|
}
|
||||||
} else if let Some(_prompt) = prompt {
|
|
||||||
create_copilot_auth_window(cx, &status, &mut code_verification);
|
|
||||||
}
|
}
|
||||||
}
|
Status::Authorized | Status::Unauthorized => {
|
||||||
Status::Authorized | Status::Unauthorized => {
|
if let Some(code_verification) = code_verification.as_ref() {
|
||||||
if let Some(code_verification) = code_verification.as_ref() {
|
code_verification.update(cx, |code_verification, cx| {
|
||||||
code_verification.update(cx, |code_verification, cx| {
|
code_verification.set_status(status, cx)
|
||||||
code_verification.set_status(status, cx)
|
});
|
||||||
});
|
|
||||||
|
|
||||||
cx.platform().activate(true);
|
cx.platform().activate(true);
|
||||||
cx.activate_window(code_verification.window_id());
|
cx.activate_window(code_verification.window_id());
|
||||||
|
}
|
||||||
|
}
|
||||||
|
_ => {
|
||||||
|
if let Some(code_verification) = code_verification.take() {
|
||||||
|
cx.remove_window(code_verification.window_id());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
_ => {
|
})
|
||||||
if let Some(code_verification) = code_verification.take() {
|
.detach();
|
||||||
cx.remove_window(code_verification.window_id());
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
})
|
|
||||||
.detach();
|
|
||||||
|
|
||||||
cx.add_action(
|
cx.add_action(
|
||||||
|code_verification: &mut CopilotCodeVerification, _: &ClickedConnect, _| {
|
|code_verification: &mut CopilotCodeVerification, _: &ClickedConnect, _| {
|
||||||
code_verification.connect_clicked = true;
|
code_verification.connect_clicked = true;
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn create_copilot_auth_window(
|
fn create_copilot_auth_window(
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue