/** * 表示一种动态卡片类型 */ export interface FeedsCardType { id: number name: string } /** * 转发类型的动态卡片 */ export interface RepostFeedsCardType extends FeedsCardType { id: 1 name: '转发' } export const feedsCardTypes = { repost: { id: 1, name: '转发', } as FeedsCardType, textWithImages: { id: 2, name: '图文', } as FeedsCardType, text: { id: 4, name: '文字', } as FeedsCardType, video: { id: 8, name: '视频', } as FeedsCardType, miniVideo: { id: 16, name: '小视频', } as FeedsCardType, column: { id: 64, name: '专栏', } as FeedsCardType, audio: { id: 256, name: '音频', } as FeedsCardType, bangumi: { id: 512, name: '番剧', } as FeedsCardType, share: { id: 2048, name: '分享', } as FeedsCardType, manga: { id: 2049, name: '漫画', } as FeedsCardType, film: { id: 4098, name: '电影', } as FeedsCardType, tv: { id: 4099, name: 'TV剧', } as FeedsCardType, chinese: { id: 4100, name: '国创', } as FeedsCardType, documentary: { id: 4101, name: '纪录片', } as FeedsCardType, mediaList: { id: 4300, name: '收藏夹', } as FeedsCardType, liveRecord: { id: 2047, // FIXME: 暂时随便写个 id 了, 这个东西目前找不到 type name: '开播记录', } as FeedsCardType, } /** 番剧类型列表 (用于API请求) */ export const bangumiTypeList = '512,4097,4098,4099,4100,4101' /** 顶栏动态类型列表 (用于API请求) */ export const navbarFeedsTypeList = '8,64,512,4097,4098,4099,4100,4101' /** * 表示一个动态卡片 */ export interface FeedsCard { /** 动态 ID */ id: string /** 发送者名称 */ username: string /** 动态内容 */ text: string /** 转发量 */ reposts: number /** 评论量 */ comments: number /** 点赞量 */ likes: number /** 对应的 DOM 元素 */ element: HTMLElement /** 类型 */ type: FeedsCardType /** 是否已填充内容 (非骨架状态) */ presented: boolean /** 获取动态内容, 更新至 `text` 属性中 */ getText: () => Promise } /** 转发类型的动态卡片 */ export interface RepostFeedsCard extends FeedsCard { /** 被转发动态的发送者名称 */ repostUsername: string /** 被转发动态的内容 */ repostText: string type: RepostFeedsCardType } /** * 对动态卡片增删的监听 */ export type FeedsCardCallback = { added?: (card: FeedsCard) => void removed?: (card: FeedsCard) => void }