business: fix contact projection and phone sharing
(cherry picked from commit c0a0e5b52240ed415d3b43ba77659821887bf50b)
This commit is contained in:
parent
d84fa6e126
commit
860e581d06
18 changed files with 703 additions and 36 deletions
|
|
@ -231,7 +231,7 @@ func tgMessagesDialogs(viewerUserID int64, list domain.DialogList) tg.MessagesDi
|
|||
messages = append(messages, item)
|
||||
}
|
||||
}
|
||||
users := tgUsers(list.Users)
|
||||
users := tgUsersForViewer(viewerUserID, list.Users)
|
||||
chats := tgChannelsForDialogs(viewerUserID, list.Channels, list.Dialogs)
|
||||
if list.Count > len(dialogs) {
|
||||
return &tg.MessagesDialogsSlice{
|
||||
|
|
@ -250,14 +250,14 @@ func tgMessagesDialogs(viewerUserID int64, list domain.DialogList) tg.MessagesDi
|
|||
}
|
||||
}
|
||||
|
||||
func tgMessagesMessages(list domain.MessageList) tg.MessagesMessagesClass {
|
||||
func tgMessagesMessages(viewerUserID int64, list domain.MessageList) tg.MessagesMessagesClass {
|
||||
messages := make([]tg.MessageClass, 0, len(list.Messages))
|
||||
for _, msg := range list.Messages {
|
||||
if item := tgMessage(msg); item != nil {
|
||||
messages = append(messages, item)
|
||||
}
|
||||
}
|
||||
users := tgUsers(list.Users)
|
||||
users := tgUsersForViewer(viewerUserID, list.Users)
|
||||
if list.Count > len(messages) {
|
||||
return &tg.MessagesMessagesSlice{
|
||||
Count: list.Count,
|
||||
|
|
@ -279,6 +279,18 @@ func tgUsers(users []domain.User) []tg.UserClass {
|
|||
return out
|
||||
}
|
||||
|
||||
func tgUsersForViewer(viewerUserID int64, users []domain.User) []tg.UserClass {
|
||||
out := make([]tg.UserClass, 0, len(users))
|
||||
for _, u := range users {
|
||||
if viewerUserID != 0 && u.ID == viewerUserID {
|
||||
out = append(out, tgSelfUser(u))
|
||||
continue
|
||||
}
|
||||
out = append(out, tgUser(u))
|
||||
}
|
||||
return out
|
||||
}
|
||||
|
||||
func tgPeerDialogs(viewerUserID int64, list domain.DialogList, st domain.UpdateState) *tg.MessagesPeerDialogs {
|
||||
out := &tg.MessagesPeerDialogs{
|
||||
Dialogs: make([]tg.DialogClass, 0, len(list.Dialogs)),
|
||||
|
|
@ -303,7 +315,11 @@ func tgPeerDialogs(viewerUserID int64, list domain.DialogList, st domain.UpdateS
|
|||
}
|
||||
}
|
||||
for _, u := range list.Users {
|
||||
out.Users = append(out.Users, tgUser(u))
|
||||
if viewerUserID != 0 && u.ID == viewerUserID {
|
||||
out.Users = append(out.Users, tgSelfUser(u))
|
||||
} else {
|
||||
out.Users = append(out.Users, tgUser(u))
|
||||
}
|
||||
}
|
||||
out.Chats = append(out.Chats, tgChannelsForDialogs(viewerUserID, list.Channels, list.Dialogs)...)
|
||||
return out
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue