diff --git a/composables/state-navigation.ts b/composables/state-navigation.ts index 46d9e2b..3eb8181 100644 --- a/composables/state-navigation.ts +++ b/composables/state-navigation.ts @@ -1,9 +1,11 @@ +import { invoke } from "@tauri-apps/api/core"; import { listen } from "@tauri-apps/api/event"; import { data } from "autoprefixer"; import { AppStatus, type AppState } from "~/types"; export function setupHooks() { const router = useRouter(); + const state = useAppState(); listen("auth/processing", (event) => { router.push("/auth/processing"); @@ -15,8 +17,9 @@ export function setupHooks() { ); }); - listen("auth/finished", (event) => { + listen("auth/finished", async (event) => { router.push("/store"); + state.value = JSON.parse(await invoke("fetch_state")); }); listen("download_error", (event) => { diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index 77755ee..b0f233d 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -2212,6 +2212,12 @@ dependencies = [ "serde", ] +[[package]] +name = "http-range" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21dec9db110f5f872ed9699c3ecf50cf16f423502706ba5c72462e28d3157573" + [[package]] name = "http-serde" version = "1.1.3" @@ -5247,6 +5253,7 @@ dependencies = [ "gtk", "heck 0.5.0", "http 1.3.1", + "http-range", "jni", "libc", "log", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index 5faba5e..b3fda91 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -75,7 +75,7 @@ features = ["curly"] [dependencies.tauri] version = "2.1.1" -features = ["tray-icon"] +features = ["protocol-asset", "tray-icon"] [dependencies.tokio] version = "1.40.0" diff --git a/src-tauri/src/remote/auth.rs b/src-tauri/src/remote/auth.rs index 346a224..fc242a1 100644 --- a/src-tauri/src/remote/auth.rs +++ b/src-tauri/src/remote/auth.rs @@ -1,11 +1,11 @@ -use std::{collections::HashMap, env}; +use std::{collections::HashMap, env, sync::Mutex}; use chrono::Utc; use droplet_rs::ssl::sign_nonce; use gethostname::gethostname; use log::{debug, error, warn}; use serde::{Deserialize, Serialize}; -use tauri::{AppHandle, Emitter}; +use tauri::{AppHandle, Emitter, Manager}; use url::Url; use crate::{ @@ -14,7 +14,7 @@ use crate::{ models::data::DatabaseAuth, }, error::{drop_server_error::DropServerError, remote_access_error::RemoteAccessError}, - AppStatus, User, + AppState, AppStatus, User, }; use super::{ @@ -157,6 +157,16 @@ pub fn recieve_handshake(app: AppHandle, path: String) { return; } + let app_state = app.state::>(); + let mut state_lock = app_state.lock().unwrap(); + + let (app_status, user) = setup(); + + state_lock.status = app_status; + state_lock.user = user; + + drop(state_lock); + app.emit("auth/finished", ()).unwrap(); } diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index daf149f..ce42161 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -11,7 +11,11 @@ }, "app": { "security": { - "csp": null + "csp": null, + "assetProtocol": { + "enable": true, + "scope": {} + } } }, "plugins": {