diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2021-12-20 09:29:35 +0100 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-12-20 09:29:35 +0100 |
commit | a23b897b5c3c9ee721b793e26401d1863d97f84e (patch) | |
tree | d22a4fb5735bc72704f2622a4748ec3ba5c6189e /lib/src/profile | |
parent | 860177170ce583be7c7d86d8d81fdc6a7c402dc4 (diff) | |
parent | 5a58021581187d11fb26d0de9d19514e6383956f (diff) |
Merge branch 'gossipping-gui'
Diffstat (limited to 'lib/src/profile')
-rw-r--r-- | lib/src/profile/mod.rs | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/lib/src/profile/mod.rs b/lib/src/profile/mod.rs index d1ab90f..3b1e063 100644 --- a/lib/src/profile/mod.rs +++ b/lib/src/profile/mod.rs @@ -169,6 +169,30 @@ impl Profile { pub fn add_device(&mut self, d: Device) -> Result<()> { self.state.add_device(d) } + + pub async fn gossip_own_state(&self, topic: String) -> Result<()> { + let cid = self.state + .profile_head() + .as_ref() + .ok_or_else(|| anyhow::anyhow!("Profile has no HEAD yet"))? + .to_bytes(); + + let peer_id = self.client + .own_id() + .await? + .to_bytes(); + + self.client + .ipfs + .pubsub_publish(topic, { + crate::gossip::GossipMessage::CurrentProfileState { + peer_id, + cid, + }.into_bytes()? + }) + .await + .map_err(anyhow::Error::from) + } } |