package im

// Reference: https://open.feishu.cn/document/server-docs/im-v1/message-content-description/message_content#c9e08671
type RecvMessageText struct {
	Text string `json:"text"`
}

func (m RecvMessageText) Type() MessageType {
	return MessageTypeText
}

// Reference: https://open.feishu.cn/document/server-docs/im-v1/message-content-description/message_content#7111df05
type RecvMessageImage struct {
	ImageKey string `json:"image_key"`
}

func (m RecvMessageImage) Type() MessageType {
	return MessageTypeImage
}

// Reference: https://open.feishu.cn/document/server-docs/im-v1/message-content-description/message_content#c92e6d46
type RecvMessageFile struct {
	FileKey  string `json:"file_key"`
	FileName string `json:"file_name"`
}

func (m RecvMessageFile) Type() MessageType {
	return MessageTypeFile
}

// Reference: https://open.feishu.cn/document/server-docs/im-v1/message-content-description/message_content#5d00ff63
type RecvMessageVideoChat struct {
	Topic         string `json:"topic"`
	StartTime     string `json:"start_time"` // ms
	MeetingNumber string `json:"meet_number"`
}

func (m RecvMessageVideoChat) Type() MessageType {
	return MessageTypeVideoChat
}

// Reference: https://open.feishu.cn/document/server-docs/im-v1/message-content-description/message_content#45e0953e
type RecvMessagePostContent struct {
	Tag   string   `json:"tag"`
	Style []string `json:"style,omitempty"`

	Text      *string `json:"text,omitempty"`
	Href      *string `json:"href,omitempty"`
	UserId    *string `json:"user_id,omitempty"`
	UserName  *string `json:"user_name,omitempty"`
	ImageKey  *string `json:"image_key,omitempty"`
	FileKey   *string `json:"file_key,omitempty"`
	EmojiType *string `json:"emoji_type,omitempty"`
	Language  *string `json:"language,omitempty"`
}

type RecvMessagePost struct {
	Title   string                     `json:"title"`
	Content [][]RecvMessagePostContent `json:"content"`
}

func (m RecvMessagePost) Type() MessageType {
	return MessageTypePost
}
