chore: refresh gramsrv public release
This commit is contained in:
parent
75cebe8dbf
commit
70b6820474
1274 changed files with 378751 additions and 59919 deletions
87
internal/domain/saved_dialog.go
Normal file
87
internal/domain/saved_dialog.go
Normal file
|
|
@ -0,0 +1,87 @@
|
|||
package domain
|
||||
|
||||
// SavedHiddenAuthorUserID 是官方 hidden-author 收藏夹子会话的占位 user id
|
||||
// (TDesktop kSavedHiddenAuthorId / TDLib HIDDEN_AUTHOR_DIALOG_ID)。
|
||||
// 运行时新写入永远能确定源会话,不产生该值;仅存量回填中
|
||||
// 「fwd 头只有 from_name、源会话已不可知」的消息归入此子会话。
|
||||
const SavedHiddenAuthorUserID int64 = 2666000
|
||||
|
||||
// MaxPinnedSavedDialogs 是收藏夹子会话置顶上限(官方 premium 上限同级)。
|
||||
const MaxPinnedSavedDialogs = 100
|
||||
|
||||
// MaxSavedDialogsLimit 是 messages.getSavedDialogs 单页上限。
|
||||
const MaxSavedDialogsLimit = 100
|
||||
|
||||
// SavedPeerForSelfChat 计算 self-chat 新消息的 saved 子会话分组键,与
|
||||
// TDLib SavedMessagesTopicId 语义对齐:转发带源会话(saved_from_peer)→
|
||||
// 源会话;fwd 头仅 from_name 且源会话不可知 → hidden author 占位(防御
|
||||
// 分支,运行时转发总是带源会话);其余(直发、drop_author)→ self。
|
||||
func SavedPeerForSelfChat(selfUserID int64, forward *MessageForward) Peer {
|
||||
if forward != nil {
|
||||
if forward.SavedFrom.ID != 0 {
|
||||
return forward.SavedFrom
|
||||
}
|
||||
if forward.From.ID == 0 && forward.FromName != "" {
|
||||
return Peer{Type: PeerTypeUser, ID: SavedHiddenAuthorUserID}
|
||||
}
|
||||
}
|
||||
return Peer{Type: PeerTypeUser, ID: selfUserID}
|
||||
}
|
||||
|
||||
// SavedDialog 是收藏夹的一个子会话(savedDialog TL 构造器的业务形态)。
|
||||
type SavedDialog struct {
|
||||
Peer Peer
|
||||
// TopMessage 是该子会话当前最新可见消息的 owner 视角 box id。
|
||||
TopMessage int
|
||||
Pinned bool
|
||||
}
|
||||
|
||||
// SavedDialogList 是 getSavedDialogs/getPinnedSavedDialogs/getSavedDialogsByID
|
||||
// 的业务层结果。Messages 与 Dialogs 一一对应(top message 全量行)。
|
||||
type SavedDialogList struct {
|
||||
Dialogs []SavedDialog
|
||||
Messages []Message
|
||||
Users []User
|
||||
Channels []Channel
|
||||
// Count 是过滤口径下(含/不含 pinned)的子会话总数。
|
||||
Count int
|
||||
// Full 为 true 表示本页已含过滤口径下的全部剩余子会话
|
||||
// (映射 messages.savedDialogs;false 映射 savedDialogsSlice)。
|
||||
Full bool
|
||||
}
|
||||
|
||||
// SavedDialogsFilter 描述 getSavedDialogs 分页条件。
|
||||
type SavedDialogsFilter struct {
|
||||
ExcludePinned bool
|
||||
// OffsetID 是上一页最后一个子会话的 top message box id;0 或 >= MaxMessageBoxID
|
||||
// 视为从最新开始(TDesktop 首页传 0,DrKLO Android 首页传 int32 max)。
|
||||
OffsetID int
|
||||
// OffsetDate/OffsetPeer 仅作合法性校验;box id 单调于时间,分页统一按
|
||||
// top box id 严格降序推进。
|
||||
OffsetDate int
|
||||
OffsetPeer Peer
|
||||
Limit int
|
||||
}
|
||||
|
||||
// DeleteSavedHistoryRequest 是 messages.deleteSavedHistory 的业务命令:
|
||||
// 删除 self-chat 中一个 saved 子会话的消息。self-chat 单侧,无 revoke 语义。
|
||||
type DeleteSavedHistoryRequest struct {
|
||||
OwnerUserID int64
|
||||
// SavedPeer 是要清空的子会话分组键。
|
||||
SavedPeer Peer
|
||||
MaxID int
|
||||
MinDate int
|
||||
MaxDate int
|
||||
Date int
|
||||
OriginAuthKeyID [8]byte
|
||||
OriginSessionID int64
|
||||
}
|
||||
|
||||
// DeleteSavedHistoryResult 描述一次 saved 子会话删除批次。
|
||||
type DeleteSavedHistoryResult struct {
|
||||
// MessageIDs 是本批被删除的 owner 视角 box id。
|
||||
MessageIDs []int
|
||||
Event UpdateEvent
|
||||
// More 为 true 表示仍有剩余批次,客户端按 affectedHistory.offset 续发。
|
||||
More bool
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue