presence module & update_status

This commit is contained in:
2026-02-16 00:52:38 +08:00
parent 44556ca3a1
commit c76e436529
7 changed files with 61 additions and 17 deletions

49
src-tauri/Cargo.lock generated
View File

@@ -2306,18 +2306,18 @@ checksum = "34080505efa8e45a4b816c349525ebe327ceaa8559756f0356cba97ef3bf7432"
[[package]] [[package]]
name = "lua-src" name = "lua-src"
version = "547.0.0" version = "550.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1edaf29e3517b49b8b746701e5648ccb5785cde1c119062cbabbc5d5cd115e42" checksum = "e836dc8ae16806c9bdcf42003a88da27d163433e3f9684c52f0301258004a4fb"
dependencies = [ dependencies = [
"cc", "cc",
] ]
[[package]] [[package]]
name = "luajit-src" name = "luajit-src"
version = "210.5.12+a4f56a4" version = "210.6.6+707c12b"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b3a8e7962a5368d5f264d045a5a255e90f9aa3fc1941ae15a8d2940d42cac671" checksum = "a86cc925d4053d0526ae7f5bc765dbd0d7a5d1a63d43974f4966cb349ca63295"
dependencies = [ dependencies = [
"cc", "cc",
"which", "which",
@@ -2432,25 +2432,32 @@ dependencies = [
[[package]] [[package]]
name = "mlua" name = "mlua"
version = "0.9.9" version = "0.11.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d111deb18a9c9bd33e1541309f4742523bfab01d276bfa9a27519f6de9c11dc7" checksum = "ccd36acfa49ce6ee56d1307a061dd302c564eee757e6e4cd67eb4f7204846fab"
dependencies = [ dependencies = [
"bstr", "bstr",
"either",
"erased-serde",
"libc",
"mlua-sys", "mlua-sys",
"num-traits", "num-traits",
"once_cell", "parking_lot",
"rustc-hash", "rustc-hash",
"rustversion",
"serde",
"serde-value",
] ]
[[package]] [[package]]
name = "mlua-sys" name = "mlua-sys"
version = "0.6.8" version = "0.10.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "380c1f7e2099cafcf40e51d3a9f20a346977587aa4d012eae1f043149a728a93" checksum = "0f1c3a7fc7580227ece249fd90aa2fa3b39eb2b49d3aec5e103b3e85f2c3dfc8"
dependencies = [ dependencies = [
"cc", "cc",
"cfg-if", "cfg-if",
"libc",
"lua-src", "lua-src",
"luajit-src", "luajit-src",
"pkg-config", "pkg-config",
@@ -2946,6 +2953,15 @@ version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d" checksum = "04744f49eae99ab78e0d5c0b603ab218f515ea8cfe5a456d7629ad883a3b6e7d"
[[package]]
name = "ordered-float"
version = "2.10.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68f19d67e5a2795c94e73e0bb1cc1a7edeb2e28efd39e2e1c9b7a40c1108b11c"
dependencies = [
"num-traits",
]
[[package]] [[package]]
name = "ordered-stream" name = "ordered-stream"
version = "0.2.0" version = "0.2.0"
@@ -3932,6 +3948,16 @@ dependencies = [
"typeid", "typeid",
] ]
[[package]]
name = "serde-value"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f3a1a3341211875ef120e117ea7fd5228530ae7e7036a779fdc9117be6b3282c"
dependencies = [
"ordered-float",
"serde",
]
[[package]] [[package]]
name = "serde_core" name = "serde_core"
version = "1.0.228" version = "1.0.228"
@@ -5704,11 +5730,10 @@ checksum = "a28ac98ddc8b9274cb41bb4d9d4d5c425b6020c50c46f25559911905610b4a88"
[[package]] [[package]]
name = "which" name = "which"
version = "7.0.3" version = "8.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "24d643ce3fd3e5b54854602a080f34fb10ab75e0b813ee32d00ca2b44fa74762" checksum = "d3fabb953106c3c8eea8306e4393700d7657561cb43122571b172bbfb7c7ba1d"
dependencies = [ dependencies = [
"either",
"env_home", "env_home",
"rustix", "rustix",
"winsafe", "winsafe",

View File

@@ -45,7 +45,7 @@ gif = "0.14.1"
raw-window-handle = "0.6" raw-window-handle = "0.6"
enigo = { version = "0.6.1", features = ["wayland"] } enigo = { version = "0.6.1", features = ["wayland"] }
lazy_static = "1.5.0" lazy_static = "1.5.0"
mlua = { version = "0.9", default-features = false, features = ["lua54", "vendored"] } mlua = { version = "0.11", default-features = false, features = ["lua54", "vendored", "serde"] }
[target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies] [target.'cfg(not(any(target_os = "android", target_os = "ios")))'.dependencies]
tauri-plugin-global-shortcut = "2" tauri-plugin-global-shortcut = "2"
tauri-plugin-positioner = "2" tauri-plugin-positioner = "2"

View File

@@ -7,7 +7,7 @@ use crate::{
active_app::init_foreground_app_change_listener, active_app::init_foreground_app_change_listener,
auth::get_session_token, auth::get_session_token,
cursor::init_cursor_tracking, cursor::init_cursor_tracking,
modules::init_modules, presence_modules::init_modules,
scene::{close_splash_window, open_splash_window}, scene::{close_splash_window, open_splash_window},
welcome::open_welcome_window, welcome::open_welcome_window,
}, },

View File

@@ -11,7 +11,7 @@ pub mod doll_editor;
pub mod health_manager; pub mod health_manager;
pub mod health_monitor; pub mod health_monitor;
pub mod interaction; pub mod interaction;
pub mod modules; pub mod presence_modules;
pub mod scene; pub mod scene;
pub mod sprite_recolor; pub mod sprite_recolor;
pub mod welcome; pub mod welcome;

View File

@@ -6,6 +6,7 @@ use serde::{Deserialize, Serialize};
use serde_json; use serde_json;
use std::fs; use std::fs;
pub mod models;
pub mod runtime; pub mod runtime;
#[derive(Serialize, Deserialize, Debug)] #[derive(Serialize, Deserialize, Debug)]

View File

@@ -0,0 +1,11 @@
use serde::{Deserialize, Serialize};
use ts_rs::TS;
#[derive(Debug, Clone, Serialize, Deserialize, TS)]
#[serde(rename_all = "camelCase")]
#[ts(export)]
pub struct PresenceStatus {
pub title: Option<String>,
pub subtitle: Option<String>,
pub graphics_b64: Option<String>,
}

View File

@@ -1,11 +1,13 @@
use mlua::{Lua, UserData, UserDataMethods}; use mlua::{Lua, LuaSerdeExt, UserData, UserDataMethods, Value};
use std::{path::Path, thread, time::Duration}; use std::{path::Path, thread, time::Duration};
use tracing::{error, info}; use tracing::{error, info};
use super::models::PresenceStatus;
pub struct Engine; pub struct Engine;
impl UserData for Engine { impl UserData for Engine {
fn add_methods<'lua, M: UserDataMethods<'lua, Self>>(methods: &mut M) { fn add_methods<M: UserDataMethods<Self>>(methods: &mut M) {
methods.add_method("log", |_, _, message: String| { methods.add_method("log", |_, _, message: String| {
info!("{}", message); info!("{}", message);
Ok(()) Ok(())
@@ -14,6 +16,11 @@ impl UserData for Engine {
thread::sleep(Duration::from_secs(seconds)); thread::sleep(Duration::from_secs(seconds));
Ok(()) Ok(())
}); });
methods.add_method("update_status", |lua, _, value: Value| {
let status: PresenceStatus = lua.from_value(value)?;
dbg!(status);
Ok(())
});
} }
} }