use std::future::Future;
use std::pin::Pin;
use super::{
DiscussionAttachmentDraft, DiscussionComposerSubmit, DiscussionError, DiscussionReply,
DiscussionUploadedFile,
};
type BoxFuture<T> = Pin<Box<dyn Future<Output = T> + Send>>;
pub trait DiscussionAdapter: Send + Sync {
fn submit_reply(
&self,
draft: DiscussionComposerSubmit,
) -> BoxFuture<Result<DiscussionReply, DiscussionError>>;
fn upload_attachment(
&self,
_draft: &DiscussionAttachmentDraft,
) -> BoxFuture<Result<DiscussionUploadedFile, DiscussionError>> {
Box::pin(async { Err(DiscussionError::not_implemented("upload_attachment")) })
}
fn fetch_branch(
&self,
_parent_id: String,
_cursor: Option<String>,
) -> BoxFuture<Result<Vec<DiscussionReply>, DiscussionError>> {
Box::pin(async { Err(DiscussionError::not_implemented("fetch_branch")) })
}
}