From cfc6244b9cb88ec9521ec02dd0119c3b9f9bbee9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 22 Nov 2020 23:00:36 +0100 Subject: implement Display for Agenda --- src/slack.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/slack.rs') diff --git a/src/slack.rs b/src/slack.rs index 49c8cfa..9698109 100644 --- a/src/slack.rs +++ b/src/slack.rs @@ -1,4 +1,4 @@ -use crate::agenda::{parse_message, AgendaPoint, Emoji}; +use crate::agenda::{self, parse_message, AgendaPoint, Emoji}; use futures::join; use slack::{Event, Message}; -- cgit v1.2.1 From 5788bc84c13ed56324bdc6dc7c61bb0ca12a9256 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 22 Nov 2020 23:01:28 +0100 Subject: print agenda when reminders are requested --- src/slack.rs | 33 ++++++++++++++++++++++++++++----- 1 file changed, 28 insertions(+), 5 deletions(-) (limited to 'src/slack.rs') diff --git a/src/slack.rs b/src/slack.rs index 9698109..1481cf1 100644 --- a/src/slack.rs +++ b/src/slack.rs @@ -1,4 +1,5 @@ use crate::agenda::{self, parse_message, AgendaPoint, Emoji}; +use crate::reminder::ReminderType; use futures::join; use slack::{Event, Message}; @@ -9,7 +10,7 @@ use std::{ }; use tokio::{ runtime::Runtime, - sync::mpsc, + sync::{mpsc, watch}, task::{spawn, spawn_blocking}, }; use tokio_compat_02::FutureExt; @@ -137,11 +138,11 @@ impl slack::EventHandler for Handler { timestamp: Some(msg.ts.unwrap()), }, ) - .compat(), + .compat(), ) .unwrap(); } - _ => {} + _ => {} // parse_message return } } } @@ -161,6 +162,7 @@ impl slack::EventHandler for Handler { pub async fn handle( sender: mpsc::UnboundedSender, receiver: mpsc::UnboundedReceiver, + reminder: watch::Receiver, ) { println!("Setting up Slack"); @@ -186,14 +188,15 @@ pub async fn handle( ); let slack_sender = client.sender().clone(); - let (_, _) = join!( + let (_, _, _) = join!( + spawn(receive_from_discord(receiver, slack_sender.clone(), channel.clone())), + spawn(handle_reminders(reminder, slack_sender, channel)), spawn_blocking(move || { match client.run(&mut handler) { Ok(_) => {} Err(e) => println!("Error: {}", e), } }), - spawn(receive_from_discord(receiver, slack_sender, channel)) ); } @@ -214,3 +217,23 @@ async fn receive_from_discord( } } } + +async fn handle_reminders( + mut reminder: watch::Receiver, + sender: slack::Sender, + channel: Option, +) { + if let Some(channel) = channel { + while let Some(reminder) = reminder.recv().await { + match reminder { + ReminderType::OneHour => { + sender.send_typing(&channel).unwrap(); + sender + .send_message(&channel, &format!("Meeting in one hour!\n{}", agenda::read_agenda())) + .unwrap(); + }, + ReminderType::Void => {} + } + } + } +} -- cgit v1.2.1 From 886500a0224a646d599f6df0a637c37b4e86d034 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Gustav=20S=C3=B6rn=C3=A4s?= Date: Sun, 22 Nov 2020 23:02:27 +0100 Subject: cargo fmt --- src/slack.rs | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'src/slack.rs') diff --git a/src/slack.rs b/src/slack.rs index 1481cf1..2a4c155 100644 --- a/src/slack.rs +++ b/src/slack.rs @@ -138,7 +138,7 @@ impl slack::EventHandler for Handler { timestamp: Some(msg.ts.unwrap()), }, ) - .compat(), + .compat(), ) .unwrap(); } @@ -189,7 +189,11 @@ pub async fn handle( let slack_sender = client.sender().clone(); let (_, _, _) = join!( - spawn(receive_from_discord(receiver, slack_sender.clone(), channel.clone())), + spawn(receive_from_discord( + receiver, + slack_sender.clone(), + channel.clone() + )), spawn(handle_reminders(reminder, slack_sender, channel)), spawn_blocking(move || { match client.run(&mut handler) { @@ -229,9 +233,12 @@ async fn handle_reminders( ReminderType::OneHour => { sender.send_typing(&channel).unwrap(); sender - .send_message(&channel, &format!("Meeting in one hour!\n{}", agenda::read_agenda())) + .send_message( + &channel, + &format!("Meeting in one hour!\n{}", agenda::read_agenda()), + ) .unwrap(); - }, + } ReminderType::Void => {} } } -- cgit v1.2.1