use steamid::SteamID;
use crate::client::SteamClient;
use crate::error::SteamError;
use crate::services::friends::AddFriendResult;
pub struct FriendsHandle<'a> {
pub(crate) client: &'a mut SteamClient,
}
impl<'a> FriendsHandle<'a> {
pub(crate) fn new(client: &'a mut SteamClient) -> Self {
Self { client }
}
pub async fn request(&mut self) -> Result<(), SteamError> {
self.client.request_friends().await
}
pub async fn add(&mut self, steam_id: SteamID) -> Result<AddFriendResult, SteamError> {
self.client.add_friend(steam_id).await
}
pub async fn remove(&mut self, steam_id: SteamID) -> Result<(), SteamError> {
self.client.remove_friend(steam_id).await
}
pub async fn steam_levels(&mut self, steam_ids: Vec<SteamID>) -> Result<std::collections::HashMap<SteamID, u32>, SteamError> {
self.client.get_steam_levels(steam_ids).await
}
pub async fn set_nickname(&mut self, steam_id: SteamID, nickname: &str) -> Result<(), SteamError> {
self.client.set_nickname(steam_id, nickname).await
}
pub async fn nicknames(&mut self) -> Result<std::collections::HashMap<SteamID, String>, SteamError> {
self.client.get_nicknames().await
}
}
impl SteamClient {
pub fn friends(&mut self) -> FriendsHandle<'_> {
FriendsHandle::new(self)
}
}