diff --git a/src-tauri/src/application.rs b/src-tauri/src/application/mod.rs similarity index 95% rename from src-tauri/src/application.rs rename to src-tauri/src/application/mod.rs index f29e541..1b38e05 100644 --- a/src-tauri/src/application.rs +++ b/src-tauri/src/application/mod.rs @@ -51,7 +51,7 @@ pub fn reconcile_cursor(handle: &AppHandle) { return; } - if let Err(error) = crate::cursor::init(handle) { + if let Err(error) = crate::cursor::start_tracking(handle) { eprintln!("failed to initialize cursor tracking; will retry: {error}"); } } diff --git a/src-tauri/src/cursor/mod.rs b/src-tauri/src/cursor/mod.rs index 980cc2f..172feaa 100644 --- a/src-tauri/src/cursor/mod.rs +++ b/src-tauri/src/cursor/mod.rs @@ -34,7 +34,7 @@ pub struct CursorPositionChanged { } #[derive(Default)] -pub struct CursorState(RwLock>); +pub(crate) struct CursorState(RwLock>); impl CursorState { fn update( @@ -113,8 +113,12 @@ lazy_static! { pub static ref CURSOR_TASK: Mutex> = Mutex::new(None); } -/// Initialize cursor tracking. -pub fn init(app: &AppHandle) -> Result<(), String> { +pub fn init(app: &AppHandle) { + app.manage(CursorState::default()); +} + +/// Starts cursor tracking after Accessibility permission is available. +pub fn start_tracking(app: &AppHandle) -> Result<(), String> { println!("init_cursor_tracking called"); if !crate::macos::accessibility_permission_granted(app) { diff --git a/src-tauri/src/images.rs b/src-tauri/src/images/mod.rs similarity index 100% rename from src-tauri/src/images.rs rename to src-tauri/src/images/mod.rs diff --git a/src-tauri/src/interactions/mod.rs b/src-tauri/src/interactions/mod.rs index 7669b5a..0040f42 100644 --- a/src-tauri/src/interactions/mod.rs +++ b/src-tauri/src/interactions/mod.rs @@ -53,7 +53,11 @@ impl SeenInteractions { } #[derive(Default)] -pub struct InteractionState(Mutex); +pub(crate) struct InteractionState(Mutex); + +pub fn init(handle: &AppHandle) { + handle.manage(InteractionState::default()); +} pub(crate) fn receive( handle: &AppHandle, diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs index 87bcd13..5026e3d 100644 --- a/src-tauri/src/lib.rs +++ b/src-tauri/src/lib.rs @@ -19,20 +19,17 @@ mod ui; mod updater; mod user; -use tauri::Manager; - async fn launch_app(app: &tauri::App) -> Result<(), Box> { let handle = app.handle(); updater::init(handle).await; db::init(handle).await?; scene_configuration::init(handle).await?; keypair::init(handle).await?; - app.manage(interactions::InteractionState::default()); - app.manage(ufa::ForegroundAppState::default()); - app.manage(cursor::CursorState::default()); - app.manage(puppet::PuppetStateStore::default()); - network::init(handle).await?; + interactions::init(handle); ufa::init(handle); + cursor::init(handle); + network::init(handle).await?; + ufa::start(handle); puppet::init(handle)?; application::init(handle).await?; Ok(()) diff --git a/src-tauri/src/macos.rs b/src-tauri/src/macos/mod.rs similarity index 100% rename from src-tauri/src/macos.rs rename to src-tauri/src/macos/mod.rs diff --git a/src-tauri/src/onboarding.rs b/src-tauri/src/onboarding/mod.rs similarity index 100% rename from src-tauri/src/onboarding.rs rename to src-tauri/src/onboarding/mod.rs diff --git a/src-tauri/src/puppet/mod.rs b/src-tauri/src/puppet/mod.rs index e6d3b22..d554f5a 100644 --- a/src-tauri/src/puppet/mod.rs +++ b/src-tauri/src/puppet/mod.rs @@ -33,7 +33,7 @@ pub struct PuppetStatesChanged { } #[derive(Default)] -pub struct PuppetStateStore(RwLock>); +pub(crate) struct PuppetStateStore(RwLock>); impl PuppetStateStore { fn update( @@ -75,6 +75,7 @@ pub fn list_puppet_states(state: State<'_, PuppetStateStore>) -> Result Result<(), String> { + handle.manage(PuppetStateStore::default()); let monitor = handle .primary_monitor() .map_err(|error| error.to_string())? diff --git a/src-tauri/src/scene_configuration.rs b/src-tauri/src/scene_configuration/mod.rs similarity index 100% rename from src-tauri/src/scene_configuration.rs rename to src-tauri/src/scene_configuration/mod.rs diff --git a/src-tauri/src/skins.rs b/src-tauri/src/skins/mod.rs similarity index 100% rename from src-tauri/src/skins.rs rename to src-tauri/src/skins/mod.rs diff --git a/src-tauri/src/ufa/mod.rs b/src-tauri/src/ufa/mod.rs index 2e384bd..d205d4a 100644 --- a/src-tauri/src/ufa/mod.rs +++ b/src-tauri/src/ufa/mod.rs @@ -28,7 +28,7 @@ pub struct FriendForegroundAppChanged { } #[derive(Default)] -pub struct ForegroundAppState(RwLock>); +pub(crate) struct ForegroundAppState(RwLock>); impl ForegroundAppState { fn update(&self, user_id: String, meta: AppMeta) -> Result<(), String> { @@ -103,10 +103,12 @@ where // no-op on unsupported platforms } -/// Initializes the foreground app change listener -/// and emits events to the Tauri app on changes. -/// Used for app to emit user foreground app to peers. pub fn init(handle: &AppHandle) { + handle.manage(ForegroundAppState::default()); +} + +/// Starts the foreground app change listener after network state is available. +pub fn start(handle: &AppHandle) { update_local_app(handle, current_app()); let handle = handle.clone();