chore: refresh gramsrv public release
This commit is contained in:
parent
75cebe8dbf
commit
70b6820474
1274 changed files with 378751 additions and 59919 deletions
|
|
@ -4,25 +4,65 @@ package domain
|
|||
type UpdateEventType string
|
||||
|
||||
const (
|
||||
UpdateEventNewMessage UpdateEventType = "new_message"
|
||||
UpdateEventReadHistoryInbox UpdateEventType = "read_history_inbox"
|
||||
UpdateEventReadHistoryOutbox UpdateEventType = "read_history_outbox"
|
||||
UpdateEventReadMessageContents UpdateEventType = "read_message_contents"
|
||||
UpdateEventEditMessage UpdateEventType = "edit_message"
|
||||
UpdateEventMessageReactions UpdateEventType = "message_reactions"
|
||||
UpdateEventContactsReset UpdateEventType = "contacts_reset"
|
||||
UpdateEventDialogPinned UpdateEventType = "dialog_pinned"
|
||||
UpdateEventPinnedDialogs UpdateEventType = "pinned_dialogs"
|
||||
UpdateEventDialogUnreadMark UpdateEventType = "dialog_unread_mark"
|
||||
UpdateEventPeerSettings UpdateEventType = "peer_settings"
|
||||
UpdateEventDeleteMessages UpdateEventType = "delete_messages"
|
||||
UpdateEventDialogFilter UpdateEventType = "dialog_filter"
|
||||
UpdateEventDialogFilterOrder UpdateEventType = "dialog_filter_order"
|
||||
UpdateEventDialogFilters UpdateEventType = "dialog_filters"
|
||||
UpdateEventFolderPeers UpdateEventType = "folder_peers"
|
||||
UpdateEventChannelAvailable UpdateEventType = "channel_available_messages"
|
||||
UpdateEventChannelViewForum UpdateEventType = "channel_view_forum_as_messages"
|
||||
UpdateEventNoop UpdateEventType = "noop"
|
||||
UpdateEventNewMessage UpdateEventType = "new_message"
|
||||
UpdateEventReadHistoryInbox UpdateEventType = "read_history_inbox"
|
||||
UpdateEventReadHistoryOutbox UpdateEventType = "read_history_outbox"
|
||||
// forum 话题级已读:messages.readDiscussion 推进 per-topic 水位后下发。
|
||||
UpdateEventReadChannelDiscussionInbox UpdateEventType = "read_channel_discussion_inbox"
|
||||
UpdateEventReadChannelDiscussionOutbox UpdateEventType = "read_channel_discussion_outbox"
|
||||
UpdateEventReadMessageContents UpdateEventType = "read_message_contents"
|
||||
UpdateEventEditMessage UpdateEventType = "edit_message"
|
||||
// UpdateEventWebPage 映射 updateWebPage:异步解析完成后把消息里的 pending 链接预览
|
||||
// 占位就地替换为已解析卡片。携带账号 pts(非 LacksWirePts),消息快照经 box JOIN 重建,
|
||||
// 故 difference/dispatch 与 edit_message 同走通用消息事件路径,仅 tg 投影构造器不同。
|
||||
UpdateEventWebPage UpdateEventType = "web_page"
|
||||
UpdateEventMessageReactions UpdateEventType = "message_reactions"
|
||||
// UpdateEventMessagePoll 映射 updateMessagePoll(投票/关闭后 poll 状态变化;
|
||||
// Message 为该 owner 视角消息,media 在 difference 重放时按 viewer 重新 enrich)。
|
||||
// 与 reaction 同款:占账号 pts 但 TL 构造器无 pts,见 LacksWirePts。
|
||||
UpdateEventMessagePoll UpdateEventType = "message_poll"
|
||||
UpdateEventContactsReset UpdateEventType = "contacts_reset"
|
||||
UpdateEventDialogPinned UpdateEventType = "dialog_pinned"
|
||||
UpdateEventPinnedDialogs UpdateEventType = "pinned_dialogs"
|
||||
UpdateEventDialogUnreadMark UpdateEventType = "dialog_unread_mark"
|
||||
UpdateEventPeerSettings UpdateEventType = "peer_settings"
|
||||
UpdateEventPeerStoryBlocked UpdateEventType = "peer_story_blocked"
|
||||
UpdateEventDeleteMessages UpdateEventType = "delete_messages"
|
||||
// UpdateEventPinnedMessages 映射 updatePinnedMessages(私聊置顶/取消
|
||||
// 置顶;MessageIDs 是该 owner 自己视角的 box id,Bool 为 pinned)。
|
||||
// TL 构造器自带账号 pts/pts_count,不属于 LacksWirePts。
|
||||
UpdateEventPinnedMessages UpdateEventType = "pinned_messages"
|
||||
UpdateEventDialogFilter UpdateEventType = "dialog_filter"
|
||||
UpdateEventDialogFilterOrder UpdateEventType = "dialog_filter_order"
|
||||
UpdateEventDialogFilters UpdateEventType = "dialog_filters"
|
||||
UpdateEventFolderPeers UpdateEventType = "folder_peers"
|
||||
UpdateEventChannelAvailable UpdateEventType = "channel_available_messages"
|
||||
UpdateEventChannelViewForum UpdateEventType = "channel_view_forum_as_messages"
|
||||
UpdateEventStory UpdateEventType = "story"
|
||||
UpdateEventReadStories UpdateEventType = "read_stories"
|
||||
UpdateEventSentStoryReaction UpdateEventType = "sent_story_reaction"
|
||||
UpdateEventNewStoryReaction UpdateEventType = "new_story_reaction"
|
||||
UpdateEventQuickReplies UpdateEventType = "quick_replies"
|
||||
UpdateEventNewQuickReply UpdateEventType = "new_quick_reply"
|
||||
UpdateEventDeleteQuickReply UpdateEventType = "delete_quick_reply"
|
||||
UpdateEventQuickReplyMessage UpdateEventType = "quick_reply_message"
|
||||
UpdateEventDeleteQuickReplyMessages UpdateEventType = "delete_quick_reply_messages"
|
||||
// UpdateEventChannelState 表示当前账号与某频道的成员关系发生变化
|
||||
// (leave/kick),离线设备经 difference 收到 updateChannel 后重新拉取
|
||||
// channel 状态并移除会话。
|
||||
UpdateEventChannelState UpdateEventType = "channel_state"
|
||||
// UpdateEventDraftMessage 映射 updateDraftMessage(云草稿变更;Peer 为会话,
|
||||
// MaxID 复用为 forum top_msg_id)。事件只是"该会话草稿变过"的标记——草稿是
|
||||
// 绝对状态而非增量,difference/outbox 重放时按 Peer 重载当前草稿填充 Draft
|
||||
// 字段(已删则下发 draftMessageEmpty),不在事件行里固化内容快照。
|
||||
UpdateEventDraftMessage UpdateEventType = "draft_message"
|
||||
// UpdateEventSavedDialogPinned 映射 updateSavedDialogPinned(收藏夹
|
||||
// 子会话置顶翻转;Peer 为子会话分组键,Bool 为 pinned)。
|
||||
UpdateEventSavedDialogPinned UpdateEventType = "saved_dialog_pinned"
|
||||
// UpdateEventPinnedSavedDialogs 映射 updatePinnedSavedDialogs
|
||||
// (收藏夹置顶顺序整表,Peers 为新顺序)。
|
||||
UpdateEventPinnedSavedDialogs UpdateEventType = "pinned_saved_dialogs"
|
||||
UpdateEventNoop UpdateEventType = "noop"
|
||||
)
|
||||
|
||||
// UpdateEvent 是账号视角的增量事件,按 user_id + pts 顺序持久化。
|
||||
|
|
@ -33,6 +73,7 @@ type UpdateEvent struct {
|
|||
PtsCount int
|
||||
Date int
|
||||
Message Message
|
||||
Story Story
|
||||
Peer Peer
|
||||
Peers []Peer
|
||||
Bool bool
|
||||
|
|
@ -40,13 +81,73 @@ type UpdateEvent struct {
|
|||
MessageIDs []int
|
||||
MaxID int
|
||||
StillUnreadCount int
|
||||
Users []User
|
||||
Channels []Channel
|
||||
FilterID int
|
||||
DialogFilter *DialogFolder
|
||||
FilterOrder []int
|
||||
FolderPeers []FolderPeerUpdate
|
||||
TagsEnabled bool
|
||||
ChannelPts int
|
||||
// TopMsgID 仅 forum per-topic 已读事件(read_channel_discussion_*)使用:承载话题 id
|
||||
// (General=1),与 MaxID(=read_max_id) 一起映射 updateReadChannelDiscussionInbox/Outbox。
|
||||
TopMsgID int
|
||||
Users []User
|
||||
Channels []Channel
|
||||
FilterID int
|
||||
// FolderID 是 read 类事件发生时该会话所在的物理 folder(0 主列表/1 归档),
|
||||
// 填入 updateReadChannelInbox.folder_id。
|
||||
FolderID int
|
||||
DialogFilter *DialogFolder
|
||||
// Draft 仅 draft_message 事件使用:不持久化,difference/outbox 重放时按
|
||||
// Peer(+MaxID=top_msg_id) 重载当前草稿填充;nil 表示草稿已删(下发 empty)。
|
||||
Draft *DialogDraft
|
||||
FilterOrder []int
|
||||
FolderPeers []FolderPeerUpdate
|
||||
TagsEnabled bool
|
||||
Reaction *MessageReaction
|
||||
QuickReplies []QuickReply
|
||||
QuickReply QuickReply
|
||||
QuickReplyMessage QuickReplyMessage
|
||||
}
|
||||
|
||||
// LacksWirePts 表示该事件占用了账号 pts,但它对应的 TL update 构造器没有
|
||||
// 账号 pts 字段(reaction、channel 已读、dialog/folder/settings 状态类)。
|
||||
// 在线投递这类事件必须附带显式 pts 簿记,否则客户端水位与服务端错位,
|
||||
// 下一条真正带 pts 的更新会被判为空洞。
|
||||
func (e UpdateEvent) LacksWirePts() bool {
|
||||
switch e.Type {
|
||||
case UpdateEventMessageReactions,
|
||||
UpdateEventMessagePoll,
|
||||
UpdateEventDraftMessage,
|
||||
UpdateEventChannelState,
|
||||
UpdateEventContactsReset,
|
||||
UpdateEventDialogPinned,
|
||||
UpdateEventPinnedDialogs,
|
||||
UpdateEventSavedDialogPinned,
|
||||
UpdateEventPinnedSavedDialogs,
|
||||
UpdateEventDialogUnreadMark,
|
||||
UpdateEventPeerSettings,
|
||||
UpdateEventPeerStoryBlocked,
|
||||
UpdateEventDialogFilter,
|
||||
UpdateEventDialogFilterOrder,
|
||||
UpdateEventDialogFilters,
|
||||
UpdateEventChannelAvailable,
|
||||
UpdateEventChannelViewForum,
|
||||
UpdateEventStory,
|
||||
UpdateEventReadStories,
|
||||
UpdateEventSentStoryReaction,
|
||||
UpdateEventNewStoryReaction,
|
||||
UpdateEventQuickReplies,
|
||||
UpdateEventNewQuickReply,
|
||||
UpdateEventDeleteQuickReply,
|
||||
UpdateEventQuickReplyMessage,
|
||||
UpdateEventDeleteQuickReplyMessages:
|
||||
// updateFolderPeers 自带 pts/pts_count,不在此列。
|
||||
return true
|
||||
case UpdateEventReadChannelDiscussionInbox, UpdateEventReadChannelDiscussionOutbox:
|
||||
// forum 话题已读映射 updateReadChannelDiscussionInbox/Outbox,无账号 pts 字段。
|
||||
return true
|
||||
case UpdateEventReadHistoryInbox, UpdateEventReadHistoryOutbox:
|
||||
// channel peer 映射 updateReadChannelInbox/Outbox,无账号 pts 字段;
|
||||
// 私聊形态自带 pts/pts_count。
|
||||
return e.Peer.Type == PeerTypeChannel
|
||||
default:
|
||||
return false
|
||||
}
|
||||
}
|
||||
|
||||
// UpdateDifference 是 updates.getDifference 的业务层结果。
|
||||
|
|
@ -63,4 +164,5 @@ type UpdateDifference struct {
|
|||
type ChannelDifferenceNudge struct {
|
||||
ChannelID int64
|
||||
Pts int
|
||||
Channel *ChannelView
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue