aboutsummaryrefslogtreecommitdiffstats
path: root/src/bin/rbw-agent
diff options
context:
space:
mode:
authorJesse Luehrs <doy@tozt.net>2020-04-18 03:45:49 -0400
committerJesse Luehrs <doy@tozt.net>2020-04-18 03:45:49 -0400
commitf2e12534b876e73a0c7c4593acb23ac200529309 (patch)
tree3348552733e4fa812d513468ce0f172a27a466ef /src/bin/rbw-agent
parentf1d63c8bfb76b218822ee417e98a9015877ab528 (diff)
downloadrbw-f2e12534b876e73a0c7c4593acb23ac200529309.tar.gz
rbw-f2e12534b876e73a0c7c4593acb23ac200529309.zip
refactor
Diffstat (limited to 'src/bin/rbw-agent')
-rw-r--r--src/bin/rbw-agent/actions.rs30
1 files changed, 10 insertions, 20 deletions
diff --git a/src/bin/rbw-agent/actions.rs b/src/bin/rbw-agent/actions.rs
index 9559f73..75c1c25 100644
--- a/src/bin/rbw-agent/actions.rs
+++ b/src/bin/rbw-agent/actions.rs
@@ -132,28 +132,18 @@ pub async fn sync(sock: &mut crate::sock::Sock) -> anyhow::Result<()> {
} else {
return Err(anyhow::anyhow!("failed to find access token in db"));
};
- let res = rbw::actions::sync(&access_token).await;
- let res = if let Err(e) = &res {
- if let rbw::error::Error::RequestUnauthorized = e {
- if let Some(refresh_token) = &db.refresh_token {
- let access_token =
- rbw::actions::exchange_refresh_token_async(refresh_token)
- .await?;
- db.access_token = Some(access_token.clone());
- rbw::actions::sync(&access_token).await
- } else {
- return Err(anyhow::anyhow!(
- "failed to find refresh token in db"
- ));
- }
- } else {
- res
- }
+ let refresh_token = if let Some(refresh_token) = &db.refresh_token {
+ refresh_token.clone()
} else {
- res
+ return Err(anyhow::anyhow!("failed to find refresh token in db"));
};
- let (protected_key, ciphers) =
- res.context("failed to sync database from server")?;
+ let (access_token, protected_key, ciphers) =
+ rbw::actions::sync(&access_token, &refresh_token)
+ .await
+ .context("failed to sync database from server")?;
+ if let Some(access_token) = access_token {
+ db.access_token = Some(access_token);
+ }
db.protected_key = Some(protected_key);
db.ciphers = ciphers;
db.save_async(&email)