/* * This file is part of laurelin/client * Copyright (C) 2023 Jonni Liljamo * * Licensed under GPL-3.0-only. * See LICENSE for licensing information. */ use bevy::prelude::{EventReader, ResMut}; use laurelin_shared::{ server::{ channels::DataRequestChannel, messages::{DataRequest, DataRequestType}, }, types::user::UserPub, }; use naia_bevy_client::Client; use crate::Global; pub struct PubUserDetailsEvent { pub id: String, } pub fn pub_user_details_event( mut ev: EventReader, mut client: Client, mut global: ResMut, ) { for ev in ev.iter() { // check if already in cache OR in cache queue if !global .users_cache .iter() .filter(|&u| u.id == ev.id) .cloned() .collect::>() .is_empty() { return; } if !global .users_cache_queue .iter() .filter(|&id| id == &ev.id) .cloned() .collect::>() .is_empty() { return; } // add to cache queue global.users_cache_queue.push(ev.id.clone()); // send request client.send_message::(&DataRequest::new( DataRequestType::PubUserDetails as u8, Some(ev.id.clone()), )); } }