summaryrefslogtreecommitdiffstats
path: root/lib/src/profile/mod.rs
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-12-20 09:29:35 +0100
committerMatthias Beyer <mail@beyermatthias.de>2021-12-20 09:29:35 +0100
commita23b897b5c3c9ee721b793e26401d1863d97f84e (patch)
treed22a4fb5735bc72704f2622a4748ec3ba5c6189e /lib/src/profile/mod.rs
parent860177170ce583be7c7d86d8d81fdc6a7c402dc4 (diff)
parent5a58021581187d11fb26d0de9d19514e6383956f (diff)
Merge branch 'gossipping-gui'
Diffstat (limited to 'lib/src/profile/mod.rs')
-rw-r--r--lib/src/profile/mod.rs24
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)
+ }
}