use super::{Channel, Held, Model, Notice};
impl Model {
pub fn unreachable(&mut self, channel: &Channel, why: String) {
match self
.roster
.iter_mut()
.find(|chunk| chunk.channel.name == channel.name)
{
Some(held) => held.held = Held::Unheld(why),
None => self.notice = Some(Notice::Unreachable(format!("{}: {why}", channel.name))),
}
}
pub fn acted(&mut self, op: &str, reach: &crate::channel::Reach, said: Option<String>) {
if self.starting(op) {
self.take_back_start();
}
if let Some(words) = said.filter(|_| !reach.crossed()) {
self.refund(&words);
}
self.notice = Some(Notice::act(op, reach));
}
}