1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
/*
* This file is part of laurelin/client
* Copyright (C) 2023 Jonni Liljamo <jonni@liljamo.com>
*
* Licensed under GPL-3.0-only.
* See LICENSE for licensing information.
*/
use bevy::prelude::{EventReader, ResMut};
use crate::Global;
pub struct PubUserDetailsEvent {
pub id: String,
}
pub fn pub_user_details_event(
mut ev: EventReader<PubUserDetailsEvent>,
mut client: Client,
mut global: ResMut<Global>,
) {
for ev in ev.iter() {
// check if already in cache OR in cache queue
if global.users_cache.contains_key(&ev.id) {
return;
}
if !global
.users_cache_queue
.iter()
.filter(|&id| id == &ev.id)
.cloned()
.collect::<Vec<String>>()
.is_empty()
{
return;
}
// add to cache queue
global.users_cache_queue.push(ev.id.clone());
// send request
client.send_message::<DataRequestChannel, DataRequest>(&DataRequest::new(
DataRequestType::PubUserDetails as u8,
Some(ev.id.clone()),
));
}
}