aboutsummaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/agenda.rs10
-rw-r--r--src/slack.rs14
2 files changed, 15 insertions, 9 deletions
diff --git a/src/agenda.rs b/src/agenda.rs
index 8f71c87..1254a41 100644
--- a/src/agenda.rs
+++ b/src/agenda.rs
@@ -95,9 +95,9 @@ where
}
}
-pub fn read_agenda() -> Agenda {
- serde_json::from_str::<Agenda>(
- &fs::read_to_string("agenda.json").expect("Can't read agenda.json"),
- )
- .expect("Error parsing agenda.json")
+fn read_agenda() -> Agenda {
+ match fs::read_to_string("agenda.json") {
+ Ok(s) => serde_json::from_str(&s).expect("Error parsing agenda.json"),
+ Err(_) => Agenda { points: Vec::new()},
+ }
}
diff --git a/src/slack.rs b/src/slack.rs
index 2a4c155..0b02fac 100644
--- a/src/slack.rs
+++ b/src/slack.rs
@@ -2,7 +2,7 @@ use crate::agenda::{self, parse_message, AgendaPoint, Emoji};
use crate::reminder::ReminderType;
use futures::join;
-use slack::{Event, Message};
+use slack::{error::Error, Event, Message};
use slack_api::{reactions, users};
use std::{
collections::{hash_map::Entry, HashMap},
@@ -196,9 +196,15 @@ pub async fn handle(
)),
spawn(handle_reminders(reminder, slack_sender, channel)),
spawn_blocking(move || {
- match client.run(&mut handler) {
- Ok(_) => {}
- Err(e) => println!("Error: {}", e),
+ loop {
+ match client.run(&mut handler) {
+ Ok(_) => {}
+ Err(Error::WebSocket(_)) => println!("Restart slack socket"),
+ Err(e) => {
+ println!("Error: {}", e);
+ break;
+ }
+ }
}
}),
);