()
| 47 | } |
| 48 | |
| 49 | async fn ensure_service() -> Result<(), String> { |
| 50 | let holder = get_service_holder(); |
| 51 | let guard = holder.read().await; |
| 52 | if guard.is_some() { |
| 53 | return Ok(()); |
| 54 | } |
| 55 | drop(guard); |
| 56 | |
| 57 | let config = RemoteConnectConfig { |
| 58 | mobile_web_dir: detect_mobile_web_dir(), |
| 59 | ..RemoteConnectConfig::default() |
| 60 | }; |
| 61 | let service = |
| 62 | RemoteConnectService::new(config).map_err(|e| format!("init remote connect: {e}"))?; |
| 63 | *holder.write().await = Some(service); |
| 64 | |
| 65 | // Auto-restore previously paired bots |
| 66 | restore_saved_bots().await; |
| 67 | |
| 68 | Ok(()) |
| 69 | } |
| 70 | |
| 71 | /// Restore any bot connections that were previously saved to disk. |
| 72 | async fn restore_saved_bots() { |
no test coverage detected