use std::{fmt::Display, str::FromStr};
use endr::ObjectID;
use litl::{impl_debug_as_litl, Val};
use ridl::symm_encr::{Encrypted, KeySecret};
use serde_derive::{Deserialize, Serialize};
use crate::DocID;
#[derive(Serialize, Deserialize)]
pub struct InvitationPrivatePart {
pub inner: crew_rs::Invitation,
pub doc: Option<DocID>,
pub private_meta: Option<Val>,
}
#[derive(Serialize, Deserialize)]
pub struct Invitation {
pub(crate) private: Encrypted<InvitationPrivatePart>,
pub public_meta: Option<Val>,
}
#[derive(Serialize, Deserialize)]
pub struct InvitationToken {
pub invitation_id: ObjectID,
pub secret: KeySecret,
}
impl Display for InvitationToken {
fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
write!(
f,
"{}",
litl::to_string(self).expect("Couldnt serialize invitation token")
)
}
}
impl FromStr for InvitationToken {
type Err = litl::Error;
fn from_str(s: &str) -> Result<Self, Self::Err> {
litl::from_str(s)
}
}
impl_debug_as_litl!(InvitationToken);