use crate::timeline::TimelineKind; use std::collections::HashMap; use uuid::Uuid; #[derive(Debug, Clone)] pub enum SubKind { /// Initial subscription. This is the first time we do a remote subscription /// for a timeline Initial, /// One shot requests, we can just close after we receive EOSE OneShot, Timeline(TimelineKind), /// We are fetching a contact list so that we can use it for our follows /// Filter. // TODO: generalize this to any list? FetchingContactList(TimelineKind), } /// Subscriptions that need to be tracked at various stages. Sometimes we /// need to do A, then B, then C. Tracking requests at various stages by /// mapping uuid subids to explicit states happens here. #[derive(Default)] pub struct Subscriptions { pub subs: HashMap, } pub fn new_sub_id() -> String { Uuid::new_v4().to_string() }