use serde_derive::Deserialize;
use std::borrow::Cow;
use std::sync::Arc;
use crate::components::{
Comment, Content, HTPage, MaybeFillInput, MaybeFillTextArea, NotificationItem, PostItem,
ThingItem, UserLink,
};
use crate::resp_types::{
RespInstanceInfo, RespNotification, RespPostCommentInfo, RespPostListPost, RespThingInfo,
RespUserInfo,
};
use crate::util::author_is_me;
use crate::PageBaseData;
mod communities;
mod posts;
mod r#static;
const COOKIE_AGE: u32 = 60 * 60 * 24 * 365;
#[derive(Deserialize)]
struct ReturnToParams<'a> {
return_to: Option<Cow<'a, str>>,
}
type CookieMap<'a> = std::collections::HashMap<&'a str, ginger::Cookie<'a>>;
fn get_cookie_map(src: Option<&str>) -> Result<CookieMap, ginger::ParseError> {
match src {
None => Ok(Default::default()),
Some(src) => {
use fallible_iterator::FallibleIterator;
fallible_iterator::convert(ginger::parse_cookies(