mirror of
https://github.com/kunkunsh/kunkun.git
synced 2025-04-11 17:29:44 +00:00

* feat: add pin screenshot builtin command * feat: pin screenshot command nows zoom and scroll * chore: upgrade @kksh/svelte5 * feat: add mdns built-in command * feat: add sidebar for settings page * fix: builtin command command listing problem with key id in "each" loop * feat: add settings * style: modify settings sidebar style * feat: add sidebar to troubleshooter pages * fix: some styling bug * feat: add menu item highlight for sidebar * feat: improve some keyboard interaction logic * fix: improve troubleshooter flex box * feat: add uuid for mdns * fix mdns host removing caused by dead lock * feat: settings page implemented, hotkey, hide on blur implemented * style: update styles in settings * feat: improve search bar dropdown menu items
47 lines
1.3 KiB
Rust
47 lines
1.3 KiB
Rust
use std::{collections::HashMap, sync::Mutex};
|
|
use tauri_plugin_network::network::mdns::ServiceInfoMod;
|
|
|
|
#[derive(Default, Debug)]
|
|
pub struct Peers {
|
|
pub peers: Mutex<HashMap<String, ServiceInfoMod>>,
|
|
}
|
|
|
|
impl Peers {
|
|
pub fn add_peer(&self, peer: ServiceInfoMod) {
|
|
let mut peers = self.peers.lock().unwrap();
|
|
peers.insert(peer.hostname.clone(), peer);
|
|
}
|
|
|
|
pub fn remove_peer(&self, service_type: String, fullname: String) {
|
|
let peer = self
|
|
.peers
|
|
.lock()
|
|
.unwrap()
|
|
.iter()
|
|
.find(|(_, peer)| peer.fullname == fullname && peer.service_type == service_type)
|
|
.map(|(hostname, _)| hostname.clone());
|
|
if let Some(hostname) = peer {
|
|
self.peers.lock().unwrap().remove(&hostname);
|
|
}
|
|
}
|
|
|
|
pub fn clear(&self) {
|
|
let mut peers = self.peers.lock().unwrap();
|
|
peers.clear();
|
|
}
|
|
|
|
pub fn set_peers(&self, peers: HashMap<String, ServiceInfoMod>) {
|
|
self.clear();
|
|
self.peers.lock().unwrap().extend(peers);
|
|
}
|
|
}
|
|
|
|
#[tauri::command]
|
|
pub async fn get_peers(
|
|
state: tauri::State<'_, Peers>,
|
|
) -> Result<HashMap<String, ServiceInfoMod>, String> {
|
|
let _peers = state.peers.lock().unwrap();
|
|
println!("get_peers: {:?}", _peers);
|
|
Ok(_peers.to_owned())
|
|
}
|