diff --git a/apps/app/src/main.rs b/apps/app/src/main.rs index 402f3c8cc..f313bb9a3 100644 --- a/apps/app/src/main.rs +++ b/apps/app/src/main.rs @@ -4,6 +4,7 @@ )] use native_dialog::{MessageDialog, MessageType}; +use std::env; use tauri::{Listener, Manager}; use theseus::prelude::*; @@ -29,7 +30,12 @@ async fn initialize_state(app: tauri::AppHandle) -> api::Result<()> { theseus::EventState::init(app.clone()).await?; #[cfg(feature = "updater")] - { + 'updater: { + if env::var("MODRINTH_EXTERNAL_UPDATE_PROVIDER").is_ok() { + State::init().await?; + break 'updater; + } + use tauri_plugin_updater::UpdaterExt; let updater = app.updater_builder().build()?; diff --git a/packages/app-lib/src/state/minecraft_auth.rs b/packages/app-lib/src/state/minecraft_auth.rs index e1c204aaf..411e49c89 100644 --- a/packages/app-lib/src/state/minecraft_auth.rs +++ b/packages/app-lib/src/state/minecraft_auth.rs @@ -178,19 +178,16 @@ pub async fn login_finish( minecraft_entitlements(&minecraft_token.access_token).await?; - let profile = minecraft_profile(&minecraft_token.access_token).await?; - - let profile_id = profile.id.unwrap_or_default(); - - let credentials = Credentials { - id: profile_id, - username: profile.name, + let mut credentials = Credentials { + id: Uuid::default(), + username: String::default(), access_token: minecraft_token.access_token, refresh_token: oauth_token.value.refresh_token, expires: oauth_token.date + Duration::seconds(oauth_token.value.expires_in as i64), active: true, }; + credentials.get_profile().await?; credentials.upsert(exec).await?; @@ -245,11 +242,22 @@ impl Credentials { self.expires = oauth_token.date + Duration::seconds(oauth_token.value.expires_in as i64); + self.get_profile().await?; + self.upsert(exec).await?; Ok(()) } + async fn get_profile(&mut self) -> crate::Result<()> { + let profile = minecraft_profile(&self.access_token).await?; + + self.id = profile.id.unwrap_or_default(); + self.username = profile.name; + + Ok(()) + } + #[tracing::instrument] pub async fn get_default_credential( exec: impl sqlx::Executor<'_, Database = sqlx::Sqlite> + Copy,