minor consolidation & handling of data from frontend to rust side

This commit is contained in:
2026-03-08 22:14:30 +08:00
parent 23c778a0bb
commit 2aa1d5f92f
26 changed files with 464 additions and 154 deletions

View File

@@ -11,7 +11,10 @@ use crate::services::app_events::{
FriendRequestAccepted, FriendRequestDenied, FriendRequestReceived, FriendUserStatusChanged,
Unfriended,
};
use crate::services::cursor::{normalized_to_absolute, CursorPositions};
use crate::services::{
cursor::{normalized_to_absolute, CursorPositions},
presence_state, scene_friends,
};
use crate::state::AppDataRefreshScope;
use super::{
@@ -72,7 +75,13 @@ pub fn on_friend_cursor_position(payload: Payload, _socket: RawClient) {
},
};
scene_friends::set_friend_cursor_position(
outgoing_payload.user_id.clone(),
outgoing_payload.position.clone(),
);
emitter::emit_to_frontend_typed(&FriendCursorPositionUpdated(outgoing_payload));
scene_friends::emit_scene_friends_updated();
}
}
@@ -81,7 +90,11 @@ pub fn on_friend_disconnected(payload: Payload, _socket: RawClient) {
if let Ok(data) =
utils::extract_and_parse::<FriendDisconnectedPayload>(payload, "friend-disconnected")
{
scene_friends::remove_friend(&data.user_id);
presence_state::remove_friend_presence(&data.user_id);
emitter::emit_to_frontend_typed(&FriendDisconnected(data));
scene_friends::emit_scene_friends_updated();
presence_state::emit_presence_state_updated();
}
}
@@ -114,7 +127,9 @@ pub fn on_friend_active_doll_changed(payload: Payload, _socket: RawClient) {
payload,
"friend-active-doll-changed",
) {
scene_friends::set_friend_active_doll(data.friend_id.clone(), data.doll.clone());
emitter::emit_to_frontend_typed(&FriendActiveDollChanged(data));
scene_friends::emit_scene_friends_updated();
refresh::refresh_app_data(AppDataRefreshScope::Friends);
}
}
@@ -124,6 +139,8 @@ pub fn on_friend_user_status(payload: Payload, _socket: RawClient) {
if let Ok(data) =
utils::extract_and_parse::<FriendUserStatusPayload>(payload, "friend-user-status")
{
presence_state::set_friend_presence(data.user_id.clone(), data.status.clone());
emitter::emit_to_frontend_typed(&FriendUserStatusChanged(data));
presence_state::emit_presence_state_updated();
}
}