From cae27540dba42917bacf1a235d4e4799cd099d02 Mon Sep 17 00:00:00 2001 From: iximeow Date: Mon, 16 Oct 2017 23:24:52 -0700 Subject: render quoted tweets double-post bug if you are the author of the quoting tweet because you see the event AND your tweet in your feed --- src/display/mod.rs | 6 ++++++ src/tw/events.rs | 8 +++++++- src/tw/mod.rs | 4 ++++ 3 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/display/mod.rs b/src/display/mod.rs index e66ac77..3a48454 100644 --- a/src/display/mod.rs +++ b/src/display/mod.rs @@ -34,6 +34,12 @@ pub trait Render { impl Render for tw::events::Event { fn render(self, tweeter: &::tw::TwitterCache) { match self { + tw::events::Event::Quoted { user_id, twete_id } => { + println!("---------------------------------"); + let user = tweeter.retrieve_user(&user_id).unwrap(); + println!(" quoted_tweet : {} (@{})", user.name, user.handle); + render_twete(&twete_id, tweeter); + } tw::events::Event::Deleted { user_id, twete_id } => { if let Some(handle) = tweeter.retrieve_user(&user_id).map(|x| &x.handle) { if let Some(_tweet) = tweeter.retrieve_tweet(&twete_id) { diff --git a/src/tw/events.rs b/src/tw/events.rs index 0541b0a..c26a840 100644 --- a/src/tw/events.rs +++ b/src/tw/events.rs @@ -6,6 +6,7 @@ pub enum Event { Fav_RT { user_id: String, twete_id: String }, Fav { user_id: String, twete_id: String }, Unfav { user_id: String, twete_id: String }, + Quoted { user_id: String, twete_id: String }, Followed { user_id: String }, Unfollowed { user_id: String } } @@ -35,9 +36,14 @@ impl Event { user_id: structure["source"]["id_str"].as_str().unwrap().to_owned(), twete_id: structure["target_object"]["id_str"].as_str().unwrap().to_owned() }), + &"quoted_tweet" => Some(Event::Quoted { + user_id: structure["source"]["id_str"].as_str().unwrap().to_owned(), + twete_id: structure["target_object"]["id_str"].as_str().unwrap().to_owned() + }), +// &"list_member_added" => +// what about removed? // &"blocked" => Blocked { }, // &"unblocked" => Unblocked { }, -// &"quoted_tweet" => ???, e => { println!("unrecognized event: {}", e); None } } } diff --git a/src/tw/mod.rs b/src/tw/mod.rs index 9433e45..710bf59 100644 --- a/src/tw/mod.rs +++ b/src/tw/mod.rs @@ -241,6 +241,10 @@ impl TwitterCache { pub fn cache_api_event(&mut self, json: serde_json::Map, mut queryer: &mut ::Queryer) { /* don't really care to hold on to who fav, unfav, ... when, just pick targets out. */ match json.get("event").and_then(|x| x.as_str()) { + Some("quoted_tweet") => { + self.cache_api_tweet(json["target_object"].clone()); + self.cache_api_user(json["source"].clone()); + }, Some("favorite") => { self.cache_api_tweet(json["target_object"].clone()); self.cache_api_user(json["source"].clone()); -- cgit v1.1