diff --git a/src/main.rs b/src/main.rs index 5b4247a..25acd46 100644 --- a/src/main.rs +++ b/src/main.rs @@ -55,17 +55,7 @@ struct Args { fn main() -> anyhow::Result<()> { let args: Args = argh::from_env(); - let level_filter = if args.debug { - LevelFilter::Debug - } else { - LevelFilter::Error - }; - - SimpleLogger::new() - .with_level(LevelFilter::Off) - .with_module_level("reqwest", level_filter) - .with_module_level("tesla_auth", level_filter) - .init()?; + init_logger(args.debug)?; let event_loop = EventLoop::::with_user_event(); let event_proxy = event_loop.create_proxy(); @@ -105,44 +95,12 @@ fn main() -> anyhow::Result<()> { Event::UserEvent(CustomEvent::Failure(e)) => { error!("{}", e); - - let script = r#" - const html = ` -

An error occured. Please try again ...

-

{msg}

- `; - document.querySelector("h1.h1").outerHTML = html; - "# - .replace("{msg}", &e.to_string()); - - webview.evaluate_script(&script).unwrap(); + webview.evaluate_script(&render_error_view(e)).unwrap(); } - Event::UserEvent(CustomEvent::Tokens(tokens)) => { - println!("{}", tokens); - - let script = r#" - const html = ` -

Access Token

- -

Refresh Token

- - - Valid for {expires_in} - - `; - - document.querySelector("h1.h1").outerHTML = html; - "# - .replace("{access_token}", tokens.access.secret()) - .replace("{refresh_token}", tokens.refresh.secret()) - .replace("{expires_in}", &format!("{}", tokens.expires_in)); - - webview.evaluate_script(&script).unwrap(); + Event::UserEvent(CustomEvent::Tokens(t)) => { + println!("{}", t); + webview.evaluate_script(&render_tokens_view(t)).unwrap(); } _ => (), @@ -150,6 +108,22 @@ fn main() -> anyhow::Result<()> { }); } +fn init_logger(debug: bool) -> anyhow::Result<()> { + let level_filter = if debug { + LevelFilter::Debug + } else { + LevelFilter::Error + }; + + SimpleLogger::new() + .with_level(LevelFilter::Off) + .with_module_level("reqwest", level_filter) + .with_module_level("tesla_auth", level_filter) + .init()?; + + Ok(()) +} + fn build_menu() -> (MenuBar, MenuId) { let mut menu_bar = MenuBar::new(); let mut menu = MenuBar::new(); @@ -212,3 +186,37 @@ fn parse_url(params: Value) -> anyhow::Result { _ => Err(anyhow!("Invalid url param!")), } } + +fn render_error_view(error: anyhow::Error) -> String { + r#" + const html = ` +

An error occured. Please try again ...

+

{msg}

+ `; + document.querySelector("h1.h1").outerHTML = html; + "# + .replace("{msg}", &error.to_string()) +} + +fn render_tokens_view(tokens: auth::Tokens) -> String { + r#" + const html = ` +

Access Token

+ +

Refresh Token

+ + + Valid for {expires_in} + + `; + + document.querySelector("h1.h1").outerHTML = html; + "# + .replace("{access_token}", tokens.access.secret()) + .replace("{refresh_token}", tokens.refresh.secret()) + .replace("{expires_in}", &format!("{}", tokens.expires_in)) +}