Files
notedeck/src/draft.rs
William Casarin b7366351b6 drafts: clear post after posting
Signed-off-by: William Casarin <jb55@jb55.com>
2024-07-01 06:49:12 -07:00

39 lines
754 B
Rust

use std::collections::HashMap;
#[derive(Default)]
pub struct Draft {
pub buffer: String,
}
#[derive(Default)]
pub struct Drafts {
pub replies: HashMap<[u8; 32], Draft>,
pub compose: Draft,
}
impl Drafts {
pub fn clear(&mut self, source: DraftSource) {
source.draft(self).buffer = "".to_string();
}
}
pub enum DraftSource<'a> {
Compose,
Reply(&'a [u8; 32]), // note id
}
impl<'a> DraftSource<'a> {
pub fn draft(&self, drafts: &'a mut Drafts) -> &'a mut Draft {
match self {
DraftSource::Compose => &mut drafts.compose,
DraftSource::Reply(id) => drafts.replies.entry(**id).or_default(),
}
}
}
impl Draft {
pub fn new() -> Self {
Draft::default()
}
}