From fa0c9fedd2273225e80af66577e83f54f8a77efc Mon Sep 17 00:00:00 2001
From: AkiChase <1003019131@qq.com>
Date: Tue, 14 May 2024 19:45:01 +0800
Subject: [PATCH] feat(Device): add device presence check
---
src-tauri/Cargo.toml | 1 +
src-tauri/src/client.rs | 4 +++-
src-tauri/src/lib.rs | 1 +
src-tauri/src/main.rs | 22 ++++++++++++++++++++++
src-tauri/src/share.rs | 23 +++++++++++++++++++++++
src-tauri/src/socket.rs | 6 +++++-
src/components/Device.vue | 33 +++++++++++++++++++++++++++++++++
src/i18n/en-US.json | 4 +++-
src/i18n/zh-CN.json | 4 +++-
src/invoke.ts | 8 ++++++++
10 files changed, 102 insertions(+), 4 deletions(-)
create mode 100644 src-tauri/src/share.rs
diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml
index c35b8ff..69d93a2 100644
--- a/src-tauri/Cargo.toml
+++ b/src-tauri/Cargo.toml
@@ -16,6 +16,7 @@ tauri-plugin-store = "2.0.0-beta"
serde = { version = "1", features = ["derive"] }
serde_json = "1"
anyhow = "1.0"
+lazy_static = "1.4.0"
tokio = { version = "1.36.0", features = ["rt-multi-thread", "net", "macros", "io-util", "time", "sync"] }
tauri-plugin-process = "2.0.0-beta"
tauri-plugin-shell = "2.0.0-beta"
diff --git a/src-tauri/src/client.rs b/src-tauri/src/client.rs
index ebb59a1..85bbc28 100644
--- a/src-tauri/src/client.rs
+++ b/src-tauri/src/client.rs
@@ -3,7 +3,7 @@ use std::{io::BufRead, path::PathBuf};
use crate::{
adb::{Adb, Device},
- resource::{ResHelper, ResourceName},
+ resource::{ResHelper, ResourceName}, share,
};
/**
@@ -119,6 +119,8 @@ impl ScrcpyClient {
// clear string to store new line only
s.clear();
}
+
+ *share::CLIENT_INFO.lock().unwrap() = None;
println!("Scrcpy server closed");
Ok(())
}
diff --git a/src-tauri/src/lib.rs b/src-tauri/src/lib.rs
index 120ab6b..85eb83b 100644
--- a/src-tauri/src/lib.rs
+++ b/src-tauri/src/lib.rs
@@ -5,3 +5,4 @@ pub mod control_msg;
pub mod resource;
pub mod scrcpy_mask_cmd;
pub mod socket;
+pub mod share;
diff --git a/src-tauri/src/main.rs b/src-tauri/src/main.rs
index b31b9ae..4347073 100644
--- a/src-tauri/src/main.rs
+++ b/src-tauri/src/main.rs
@@ -5,6 +5,7 @@ use scrcpy_mask::{
adb::{Adb, Device},
client::ScrcpyClient,
resource::{ResHelper, ResourceName},
+ share,
socket::connect_socket,
};
use std::{fs::read_to_string, sync::Arc};
@@ -54,6 +55,17 @@ fn start_scrcpy_server(
address: String,
app: tauri::AppHandle,
) -> Result<(), String> {
+ let mut client_info = share::CLIENT_INFO.lock().unwrap();
+ if let Some(_) = &*client_info {
+ return Err("client already exists".to_string());
+ }
+
+ *client_info = Some(share::ClientInfo::new(
+ "unknow".to_string(),
+ id.clone(),
+ scid.clone(),
+ ));
+
let dir = app.path().resource_dir().unwrap().join("resource");
let version = ScrcpyClient::get_scrcpy_version();
@@ -108,6 +120,15 @@ fn start_scrcpy_server(
Ok(())
}
+#[tauri::command]
+fn get_cur_client_info() -> Result