
import { RecordTypeEnum, FileTypeEnum, ActionEnum } from './enum'

// 评论
export interface CommentType {
  "type": RecordTypeEnum.comment
  "id": string// 评论id
  "username": string// 用户名
  "content": string// 评论内容
  "avatar": string// 用户头像
  "date": string// 发表时间
  "replyId": string// 回复id
  "deleted": boolean// 是否已被删除 如果删除了 content可以不给
  "deleteDate": string// 删除时间
  "isSelf": boolean// 是否是自己的评论
}

// 评论 带回复
export type CommentReplyType = CommentType & {
  "reply"?: string// 被回复的用户名
  "replyContent"?: string// 被回复的内容
  "replyDeleted"?: boolean// 被回复的评论是否被删除
}

// 文件
export interface FileType {
  "type": RecordTypeEnum.file
  "id": string// 文件id
  "username": string;// 用户名
  "fileType": FileTypeEnum
  "filesize": string// 文件大小
  "fileUrl": string// 文件地址
  "date": string// 上传时间
}

// 关联
export interface LinkType {
  "type": RecordTypeEnum.link,
  "id": string// 关联id
  "username": string// 谁发起的
  "linkType":  string// 测试计划 | 子任务 | 需求 | 任务 | 子需求
  "linkName": string// 
  "linkId": string// 
  "date": string// 关联时间
  "deleted": false,// 是否已被删除
  "deleteDate": string// 删除时间
}

// 变更记录
export interface RecordType {
  "type": RecordTypeEnum.record,
  "id": string// 记录id
  "username": string// 谁发起的
  "desc": string// 变更内容
  "date": string// 关联时间
}


export interface NavType {
  name: string,
  type: RecordTypeEnum
}

export type DataItemType = CommentType | FileType | LinkType | RecordType
export type DataComponentItemType = CommentReplyType | FileType | LinkType | RecordType



export interface HandleDataType{
  data: Array<DataComponentItemType>
  nav: Array<NavType>
}


export interface CommentTypeMap {
  [id : string]: CommentType
}

export interface ActionType{
  type: ActionEnum,
  id?: string | null
  content?: string
}