diff options
author | Andy Wortman <ixineeringeverywhere@gmail.com> | 2017-11-17 00:50:11 -0800 |
---|---|---|
committer | Andy Wortman <ixineeringeverywhere@gmail.com> | 2017-11-17 00:50:45 -0800 |
commit | 799757386fa02339c20eff9f256de0f97b5fa042 (patch) | |
tree | ff4a2802ed25d9d691851232a244fb269cfe5fa6 | |
parent | f8d53de1fea82a4fa5698a6d5501ca34a0677d65 (diff) |
fix rendering issues with events, support End key
also disable rendering of delete events
-rw-r--r-- | src/display/mod.rs | 18 | ||||
-rw-r--r-- | src/main.rs | 3 | ||||
-rw-r--r-- | src/tw/mod.rs | 6 |
3 files changed, 17 insertions, 10 deletions
diff --git a/src/display/mod.rs b/src/display/mod.rs index 2b0bed0..954ed38 100644 --- a/src/display/mod.rs +++ b/src/display/mod.rs @@ -213,7 +213,7 @@ pub fn paint(tweeter: &mut ::tw::TwitterCache) -> Result<(), std::io::Error> { lines.into_iter().rev().collect() }, Infos::Event(e) => { - let pre_split = e.clone().render(tweeter); + let pre_split = e.clone().render(tweeter, width); let total_length: usize = pre_split.iter().map(|x| x.len()).sum(); let wrapped = if total_length <= 1024 { into_display_lines(pre_split, width) @@ -282,11 +282,11 @@ fn color_for(handle: &String) -> termion::color::Fg<&color::Color> { } pub trait Render { - fn render(self, tweeter: &mut ::tw::TwitterCache) -> Vec<String>; + fn render(self, tweeter: &mut ::tw::TwitterCache, width: u16) -> Vec<String>; } impl Render for tw::events::Event { - fn render(self, tweeter: &mut ::tw::TwitterCache) -> Vec<String> { + fn render(self, tweeter: &mut ::tw::TwitterCache, width: u16) -> Vec<String> { let mut result = Vec::new(); match self { tw::events::Event::Quoted { user_id, twete_id } => { @@ -295,13 +295,13 @@ impl Render for tw::events::Event { let user = tweeter.retrieve_user(&user_id).unwrap(); result.push(format!(" quoted_tweet : {} (@{})", user.name, user.handle)); } - render_twete(&TweetId::Twitter(twete_id), tweeter, None); + render_twete(&TweetId::Twitter(twete_id), tweeter, Some(width)); } tw::events::Event::Deleted { user_id, twete_id } => { if let Some(handle) = tweeter.retrieve_user(&user_id).map(|x| &x.handle).map(|x| x.clone()) { if let Some(_tweet) = tweeter.retrieve_tweet(&TweetId::Twitter(twete_id.to_owned())).map(|x| x.clone()) { result.push(format!("-------------DELETED------------------")); - result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, None)); + result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, Some(width))); result.push(format!("-------------DELETED------------------")); } else { result.push(format!("dunno what, but do know who: {} - {}", user_id, handle)); @@ -316,7 +316,7 @@ impl Render for tw::events::Event { let user = tweeter.retrieve_user(&user_id).unwrap(); result.push(format!(" +rt_rt : {} (@{})", user.name, user.handle)); } - result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, None)); + result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, Some(width))); }, tw::events::Event::Fav_RT { user_id, twete_id } => { result.push("---------------------------------".to_string()); @@ -325,7 +325,7 @@ impl Render for tw::events::Event { } else { result.push(format!(" +rt_fav but don't know who {} is", user_id)); } - result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, None)); + result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, Some(width))); }, tw::events::Event::Fav { user_id, twete_id } => { result.push("---------------------------------".to_string()); @@ -333,7 +333,7 @@ impl Render for tw::events::Event { let user = tweeter.retrieve_user(&user_id).unwrap(); result.push(format!("{} +fav : {} (@{}){}", color::Fg(color::Yellow), user.name, user.handle, color::Fg(color::Reset))); } - result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, None)); + result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, Some(width))); }, tw::events::Event::Unfav { user_id, twete_id } => { result.push("---------------------------------".to_string()); @@ -341,7 +341,7 @@ impl Render for tw::events::Event { let user = tweeter.retrieve_user(&user_id).unwrap(); result.push(format!("{} -fav : {} (@{}){}", color::Fg(color::Yellow), user.name, user.handle, color::Fg(color::Reset))); } - result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, None)); + result.extend(render_twete(&TweetId::Twitter(twete_id), tweeter, Some(width))); }, tw::events::Event::Followed { user_id } => { result.push("---------------------------------".to_string()); diff --git a/src/main.rs b/src/main.rs index ecac646..bfb60f9 100644 --- a/src/main.rs +++ b/src/main.rs @@ -323,6 +323,9 @@ fn handle_input(event: termion::event::Event, tweeter: &mut tw::TwitterCache, qu } } }, + Event::Key(Key::End) => { + tweeter.display_info.infos_seek = 0; + } Event::Key(Key::PageUp) => { tweeter.display_info.infos_seek = tweeter.display_info.infos_seek.saturating_add(1); } diff --git a/src/tw/mod.rs b/src/tw/mod.rs index 7024260..acee0c2 100644 --- a/src/tw/mod.rs +++ b/src/tw/mod.rs @@ -286,6 +286,9 @@ impl TwitterCache { key: "".to_owned(), secret: "".to_owned() }, + // So, supporting multiple profiles will be ... interesting? + // how do we support a variable number of channels? which will be necessary as we'll + // have one channel up per twitter stream... profile: None, // this will become a HashMap when multiple profiles are supported following: HashSet::new(), following_history: HashMap::new(), @@ -345,7 +348,6 @@ impl TwitterCache { fn cache_tweet(&mut self, tweet: Tweet) { if !self.tweets.contains_key(&tweet.id) { - let mut file = OpenOptions::new() .create(true) @@ -706,12 +708,14 @@ fn handle_twitter_delete( structure: serde_json::Map<String, serde_json::Value>, tweeter: &mut TwitterCache, _queryer: &mut ::Queryer) { + /* tweeter.display_info.recv(display::Infos::Event( events::Event::Deleted { user_id: structure["delete"]["status"]["user_id_str"].as_str().unwrap().to_string(), twete_id: structure["delete"]["status"]["id_str"].as_str().unwrap().to_string() } )); + */ } fn handle_twitter_twete( |