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