fetch contact lists

If we don't have a contact list, make sure to fetch one

Signed-off-by: William Casarin <jb55@jb55.com>
This commit is contained in:
William Casarin
2024-08-31 11:47:09 -07:00
parent 92e9e34e19
commit ad244d48c0
15 changed files with 517 additions and 194 deletions

View File

@@ -1,5 +1,10 @@
use std::{fmt, io};
#[derive(Debug, Clone, Copy, Eq, PartialEq)]
pub enum FilterError {
EmptyContactList,
}
#[derive(Debug, Eq, PartialEq, Copy, Clone)]
pub enum SubscriptionError {
//#[error("No active subscriptions")]
@@ -36,8 +41,8 @@ impl fmt::Display for SubscriptionError {
#[derive(Debug)]
pub enum Error {
SubscriptionError(SubscriptionError),
Filter(FilterError),
LoadFailed,
EmptyContactList,
Io(io::Error),
Nostr(enostr::Error),
Ndb(nostrdb::Error),
@@ -45,17 +50,33 @@ pub enum Error {
Generic(String),
}
impl Error {
pub fn empty_contact_list() -> Self {
Error::Filter(FilterError::EmptyContactList)
}
}
impl fmt::Display for FilterError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::EmptyContactList => {
write!(f, "empty contact list")
}
}
}
}
impl fmt::Display for Error {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
match self {
Self::SubscriptionError(sub_err) => {
write!(f, "{sub_err}")
Self::SubscriptionError(e) => {
write!(f, "{e}")
}
Self::LoadFailed => {
write!(f, "load failed")
}
Self::EmptyContactList => {
write!(f, "empty contact list")
Self::Filter(e) => {
write!(f, "{e}")
}
Self::Nostr(e) => write!(f, "{e}"),
Self::Ndb(e) => write!(f, "{e}"),
@@ -95,3 +116,9 @@ impl From<io::Error> for Error {
Error::Io(err)
}
}
impl From<FilterError> for Error {
fn from(err: FilterError) -> Self {
Error::Filter(err)
}
}