add preference updating
This commit is contained in:
parent
8b53d0f650
commit
d715fe27e4
3 changed files with 28 additions and 1 deletions
5
.vscode/settings.json
vendored
Normal file
5
.vscode/settings.json
vendored
Normal file
|
|
@ -0,0 +1,5 @@
|
||||||
|
{
|
||||||
|
"rust-analyzer.cargo.features": [
|
||||||
|
"friends"
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
@ -320,6 +320,26 @@ impl Friends for FriendsUser {
|
||||||
async fn check_setting_status(&self) -> Result<u8, ErrorCode> {
|
async fn check_setting_status(&self) -> Result<u8, ErrorCode> {
|
||||||
Ok(0xFF)
|
Ok(0xFF)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn update_preference(&self, preference: PrincipalPreference) -> Result<(),ErrorCode> {
|
||||||
|
info!("user updated preference: {:?}", preference);
|
||||||
|
let any_presence: Any = Any::new(&preference).expect("out of memory");
|
||||||
|
|
||||||
|
let users = self.fm.users.read().await;
|
||||||
|
for u in users.deref().iter().filter_map(|u| u.upgrade()) {
|
||||||
|
info!("sending preference update");
|
||||||
|
u.remote
|
||||||
|
.process_nintendo_notification_event_2(NintendoNotificationEvent {
|
||||||
|
event_type: 23,
|
||||||
|
sender: self.pid,
|
||||||
|
data: any_presence.clone(),
|
||||||
|
})
|
||||||
|
.await;
|
||||||
|
}
|
||||||
|
drop(users);
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
type HMacMd5 = hmac::Hmac<md5::Md5>;
|
type HMacMd5 = hmac::Hmac<md5::Md5>;
|
||||||
|
|
|
||||||
|
|
@ -67,7 +67,7 @@ pub struct NintendoPresenceV2 {
|
||||||
pub unk6: u8,
|
pub unk6: u8,
|
||||||
pub unk7: u8,
|
pub unk7: u8,
|
||||||
}
|
}
|
||||||
#[derive(RmcSerialize)]
|
#[derive(RmcSerialize, Clone, Debug)]
|
||||||
#[rmc_struct(0)]
|
#[rmc_struct(0)]
|
||||||
pub struct PrincipalPreference {
|
pub struct PrincipalPreference {
|
||||||
#[extends]
|
#[extends]
|
||||||
|
|
@ -171,6 +171,8 @@ pub trait Friends {
|
||||||
>;
|
>;
|
||||||
#[method_id(13)]
|
#[method_id(13)]
|
||||||
async fn update_presence(&self, presence: NintendoPresenceV2) -> Result<(), ErrorCode>;
|
async fn update_presence(&self, presence: NintendoPresenceV2) -> Result<(), ErrorCode>;
|
||||||
|
#[method_id(16)]
|
||||||
|
async fn update_preference(&self, preference: PrincipalPreference) -> Result<(), ErrorCode>;
|
||||||
#[method_id(18)]
|
#[method_id(18)]
|
||||||
async fn delete_persistent_notification(
|
async fn delete_persistent_notification(
|
||||||
&self,
|
&self,
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue