Attempting to fix sendplayer

This commit is contained in:
2026-02-23 17:46:47 +01:00
parent bdbd37307c
commit 768bbd239b
5 changed files with 43 additions and 8 deletions
+12 -2
View File
@@ -27,6 +27,7 @@ async fn main() -> session_rs::Result<()> {
Box::pin(async move {
println!("Connected");
let uuid = Arc::new(Mutex::new(String::new()));
let name = Arc::new(Mutex::new(String::new()));
session
.on_close({
@@ -63,13 +64,15 @@ async fn main() -> session_rs::Result<()> {
.on_request::<methods::Auth, _>({
let pool = Arc::clone(&pool);
let uuid = Arc::clone(&uuid);
let sessions = Arc::clone(&sessions);
let name = Arc::clone(&name);
let session = session.clone();
let sessions = sessions.clone();
move |_, token| {
methods::auth::authenticate(
sessions.clone(),
session.clone(),
name.clone(),
uuid.clone(),
token,
pool.clone(),
@@ -188,9 +191,16 @@ async fn main() -> session_rs::Result<()> {
let sessions = Arc::clone(&sessions);
let pool = Arc::clone(&pool);
let uuid = Arc::clone(&uuid);
let name = Arc::clone(&name);
move |_, targets| {
methods::user::send_user(sessions.clone(), uuid.clone(), targets.clone(), pool.clone())
methods::user::send_user(
sessions.clone(),
name.clone(),
uuid.clone(),
targets.targets.clone(),
pool.clone(),
)
}
})
.await;
+2
View File
@@ -11,6 +11,7 @@ use crate::{
pub async fn authenticate(
sessions: SessionMap,
session: Session,
name: UUID,
uuid: UUID,
session_token: String,
pool: Arc<SqlitePool>,
@@ -41,6 +42,7 @@ pub async fn authenticate(
.map_err(|_| "Unable to parse auth response".to_string())?;
*uuid.lock().await = auth.id.clone();
*name.lock().await = auth.name.clone();
sessions
.lock()
+9 -4
View File
@@ -6,7 +6,7 @@ use serde::{Deserialize, Serialize};
use session_rs::Method;
use crate::{
types::{EmoteRequest, EventEmote},
types::{EmoteRequest, EventEmote, PlayerStream},
user::User,
};
@@ -84,7 +84,7 @@ impl Method for EmoteEvent {
pub struct GetPlayer;
impl Method for GetPlayer {
const NAME: &'static str = "player";
const NAME: &'static str = "get_player";
type Request = String;
type Response = Option<User>;
type Error = String;
@@ -95,7 +95,7 @@ pub struct Player;
impl Method for Player {
const NAME: &'static str = "player";
type Request = User;
type Request = PlayerStream;
type Response = ();
type Error = ();
}
@@ -103,9 +103,14 @@ impl Method for Player {
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SendPlayer;
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct SendPlayerRequest {
pub targets: Vec<String>,
}
impl Method for SendPlayer {
const NAME: &'static str = "send_player";
type Request = Vec<String>;
type Request = SendPlayerRequest;
type Response = ();
type Error = String;
}
+11 -2
View File
@@ -4,7 +4,7 @@ use sqlx::SqlitePool;
use crate::{
methods,
types::{SessionMap, UUID},
types::{PlayerStream, SessionMap, UUID},
user::User,
};
@@ -22,11 +22,20 @@ pub async fn get_user(
pub async fn send_user(
sessions: SessionMap,
name: UUID,
uuid: UUID,
targets: Vec<String>,
pool: Arc<SqlitePool>,
) -> Result<(), String> {
let user = crate::user::get(&uuid.lock().await, pool.as_ref()).await?;
let user = PlayerStream {
player: crate::user::get(&uuid.lock().await, pool.as_ref()).await?,
uuid: uuid.lock().await.clone(),
name: name.lock().await.clone(),
};
println!("{user:?}");
println!("{targets:?}");
for target in targets {
if let Some(sessions) = sessions.lock().await.get_mut(&target) {
+9
View File
@@ -7,6 +7,8 @@ use std::{
sync::Arc,
};
use crate::user::User;
pub type SessionMap = Arc<Mutex<HashMap<String, HashSet<Session>>>>;
pub type UUID = Arc<Mutex<String>>;
@@ -29,3 +31,10 @@ pub struct EventEmote {
pub emote: String,
pub from: String,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PlayerStream {
pub player: User,
pub uuid: String,
pub name: String,
}