Don't panic if user quits login process

Fixes #479
This commit is contained in:
Henrik Friedrichsen
2021-07-26 18:50:08 +02:00
parent 245bb22aea
commit 6bd83ce9c8

View File

@@ -75,7 +75,7 @@ fn setup_logging(filename: &str) -> Result<(), fern::InitError> {
Ok(()) Ok(())
} }
fn credentials_prompt(error_message: Option<String>) -> Credentials { fn credentials_prompt(error_message: Option<String>) -> Result<Credentials, String> {
if let Some(message) = error_message { if let Some(message) = error_message {
let mut siv = cursive::default(); let mut siv = cursive::default();
let dialog = cursive::views::Dialog::around(cursive::views::TextView::new(format!( let dialog = cursive::views::Dialog::around(cursive::views::TextView::new(format!(
@@ -87,7 +87,7 @@ fn credentials_prompt(error_message: Option<String>) -> Credentials {
siv.run(); siv.run();
} }
authentication::create_credentials().expect("Could not create credentials") authentication::create_credentials()
} }
type UserData = Arc<UserDataInner>; type UserData = Arc<UserDataInner>;
@@ -96,7 +96,7 @@ struct UserDataInner {
} }
#[tokio::main] #[tokio::main]
async fn main() { async fn main() -> Result<(), String> {
let backends = { let backends = {
let backends: Vec<&str> = audio_backend::BACKENDS.iter().map(|b| b.0).collect(); let backends: Vec<&str> = audio_backend::BACKENDS.iter().map(|b| b.0).collect();
format!("Audio backends: {}", backends.join(", ")) format!("Audio backends: {}", backends.join(", "))
@@ -164,13 +164,13 @@ async fn main() {
info!("Using cached credentials"); info!("Using cached credentials");
c c
} }
None => credentials_prompt(None), None => credentials_prompt(None)?,
} }
}; };
while let Err(error) = spotify::Spotify::test_credentials(credentials.clone()) { while let Err(error) = spotify::Spotify::test_credentials(credentials.clone()) {
let error_msg = format!("{}", error); let error_msg = format!("{}", error);
credentials = credentials_prompt(Some(error_msg)); credentials = credentials_prompt(Some(error_msg))?;
} }
let mut cursive = cursive::default().into_runner(); let mut cursive = cursive::default().into_runner();
@@ -315,4 +315,6 @@ async fn main() {
} }
} }
} }
Ok(())
} }