import type { DateTime, LinkedId, LinkedType } from "./common.js"; import type { ForumData } from "./forum.js"; import type { UserBasic } from "./user.js"; export type TopicId = number; export type TopicEventType = "episode" | "ongoing" | "anons" | "released" | "SiteNews" | "" | null; export type TopicForum = "all" | "animanga" | "site" | "games" | "vn" | "contests" | "offtopic" | "clubs" | "my_clubs" | "critiques" | "news" | "collections" | "articles" | "cosplay"; export type TopicType = "Topic" | "Topics::ClubUserTopic" | "Topics::EntryTopic" | "Topics::EntryTopics::AnimeTopic" | "Topics::EntryTopics::ArticleTopic" | "Topics::EntryTopics::CharacterTopic" | "Topics::EntryTopics::ClubPageTopic" | "Topics::EntryTopics::ClubTopic" | "Topics::EntryTopics::CollectionTopic" | "Topics::EntryTopics::ContestTopic" | "Topics::EntryTopics::CosplayGalleryTopic" | "Topics::EntryTopics::MangaTopic" | "Topics::EntryTopics::PersonTopic" | "Topics::EntryTopics::RanobeTopic" | "Topics::EntryTopics::CritiqueTopic" | "Topics::EntryTopics::ReviewTopic" | "Topics::NewsTopic" | "Topics::NewsTopics::ContestStatusTopic"; export interface TopicData { id: TopicId; topic_title: string; body: string; html_body: string; html_footer: string; created_at: DateTime; comments_count: number; forum: ForumData; user: UserBasic; type: TopicType; linked_id: LinkedId; linked_type: LinkedType; linked: T | null; viewed: boolean; last_comment_viewed: boolean | null; event: TopicEventType; episode: number | null; } /** @interface */ export type TopicBasic = Pick & { url: string; }; export interface TopicIgnore { user_id: TopicId; is_ignored: boolean; }