mirror of
https://github.com/2e3s/awatcher.git
synced 2025-06-05 19:15:33 +00:00
ReportClient: send_active_window_with_instance -> send_active_window_with_extra
This commit is contained in:
parent
990843bb05
commit
d733008a45
@ -7,6 +7,7 @@ use chrono::{DateTime, TimeDelta, Utc};
|
|||||||
use serde_json::{Map, Value};
|
use serde_json::{Map, Value};
|
||||||
use std::error::Error;
|
use std::error::Error;
|
||||||
use std::future::Future;
|
use std::future::Future;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
pub struct ReportClient {
|
pub struct ReportClient {
|
||||||
pub client: AwClient,
|
pub client: AwClient,
|
||||||
@ -94,14 +95,14 @@ impl ReportClient {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub async fn send_active_window(&self, app_id: &str, title: &str) -> anyhow::Result<()> {
|
pub async fn send_active_window(&self, app_id: &str, title: &str) -> anyhow::Result<()> {
|
||||||
self.send_active_window_with_instance(app_id, title, None).await
|
self.send_active_window_with_extra(app_id, title, None).await
|
||||||
}
|
}
|
||||||
|
|
||||||
pub async fn send_active_window_with_instance(
|
pub async fn send_active_window_with_extra(
|
||||||
&self,
|
&self,
|
||||||
app_id: &str,
|
app_id: &str,
|
||||||
title: &str,
|
title: &str,
|
||||||
wm_instance: Option<&str>,
|
extra_data: Option<HashMap<String, String>>,
|
||||||
) -> anyhow::Result<()> {
|
) -> anyhow::Result<()> {
|
||||||
let mut data = Map::new();
|
let mut data = Map::new();
|
||||||
|
|
||||||
@ -126,8 +127,10 @@ impl ReportClient {
|
|||||||
data.insert("app".to_string(), Value::String(inserted_app_id));
|
data.insert("app".to_string(), Value::String(inserted_app_id));
|
||||||
data.insert("title".to_string(), Value::String(inserted_title));
|
data.insert("title".to_string(), Value::String(inserted_title));
|
||||||
|
|
||||||
if let Some(instance) = wm_instance {
|
if let Some(extra) = extra_data {
|
||||||
data.insert("wm_instance".to_string(), Value::String(instance.to_string()));
|
for (key, value) in extra {
|
||||||
|
data.insert(key, Value::String(value));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let event = AwEvent {
|
let event = AwEvent {
|
||||||
|
@ -3,6 +3,7 @@ use crate::report_client::ReportClient;
|
|||||||
use anyhow::Context;
|
use anyhow::Context;
|
||||||
use async_trait::async_trait;
|
use async_trait::async_trait;
|
||||||
use std::sync::Arc;
|
use std::sync::Arc;
|
||||||
|
use std::collections::HashMap;
|
||||||
|
|
||||||
pub struct WindowWatcher {
|
pub struct WindowWatcher {
|
||||||
client: X11Client,
|
client: X11Client,
|
||||||
@ -12,6 +13,18 @@ pub struct WindowWatcher {
|
|||||||
}
|
}
|
||||||
|
|
||||||
impl WindowWatcher {
|
impl WindowWatcher {
|
||||||
|
pub async fn send_active_window_with_instance(
|
||||||
|
&self,
|
||||||
|
client: &ReportClient,
|
||||||
|
app_id: &str,
|
||||||
|
title: &str,
|
||||||
|
wm_instance: &str,
|
||||||
|
) -> anyhow::Result<()> {
|
||||||
|
let mut extra_data = HashMap::new();
|
||||||
|
extra_data.insert("wm_instance".to_string(), wm_instance.to_string());
|
||||||
|
client.send_active_window_with_extra(app_id, title, Some(extra_data)).await
|
||||||
|
}
|
||||||
|
|
||||||
async fn send_active_window(&mut self, client: &ReportClient) -> anyhow::Result<()> {
|
async fn send_active_window(&mut self, client: &ReportClient) -> anyhow::Result<()> {
|
||||||
let data = self.client.active_window_data()?;
|
let data = self.client.active_window_data()?;
|
||||||
|
|
||||||
@ -25,8 +38,8 @@ impl WindowWatcher {
|
|||||||
self.last_wm_instance = data.wm_instance.clone();
|
self.last_wm_instance = data.wm_instance.clone();
|
||||||
}
|
}
|
||||||
|
|
||||||
client
|
self
|
||||||
.send_active_window_with_instance(&self.last_app_id, &self.last_title, Some(&self.last_wm_instance))
|
.send_active_window_with_instance(client, &self.last_app_id, &self.last_title, &self.last_wm_instance)
|
||||||
.await
|
.await
|
||||||
.with_context(|| "Failed to send heartbeat for active window")
|
.with_context(|| "Failed to send heartbeat for active window")
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user