[GraphQL POC] Omit self from pretty display name (#19783)
* Omit self from pretty display name * Fix test
Этот коммит содержится в:
коммит произвёл
GitHub
родитель
b03d87af40
Коммит
c3ec0a145b
@@ -94,7 +94,7 @@ func postProcessChannels(c *web.Context, channels []*model.Channel) ([]*channel,
|
|||||||
if users == nil {
|
if users == nil {
|
||||||
return nil, fmt.Errorf("user info not found for channel id: %s", ch.Id)
|
return nil, fmt.Errorf("user info not found for channel id: %s", ch.Id)
|
||||||
}
|
}
|
||||||
prettyName = getPrettyDNForUsers(pref.Value, users)
|
prettyName = getPrettyDNForUsers(pref.Value, users, c.AppContext.Session().UserId)
|
||||||
}
|
}
|
||||||
|
|
||||||
res = append(res, &channel{Channel: *ch, PrettyDisplayName: prettyName})
|
res = append(res, &channel{Channel: *ch, PrettyDisplayName: prettyName})
|
||||||
@@ -103,17 +103,25 @@ func postProcessChannels(c *web.Context, channels []*model.Channel) ([]*channel,
|
|||||||
return res, nil
|
return res, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPrettyDNForUsers(displaySetting string, users []*model.User) string {
|
func getPrettyDNForUsers(displaySetting string, users []*model.User, omitUserId string) string {
|
||||||
displayNames := make([]string, 0, len(users))
|
displayNames := make([]string, 0, len(users))
|
||||||
// TODO: optimize this logic.
|
// TODO: optimize this logic.
|
||||||
// Name computation happens repeatedly for the same user from
|
// Name computation happens repeatedly for the same user from
|
||||||
// multiple channels.
|
// multiple channels.
|
||||||
for _, u := range users {
|
for _, u := range users {
|
||||||
|
if u.Id == omitUserId {
|
||||||
|
continue
|
||||||
|
}
|
||||||
displayNames = append(displayNames, getPrettyDNForUser(displaySetting, u))
|
displayNames = append(displayNames, getPrettyDNForUser(displaySetting, u))
|
||||||
}
|
}
|
||||||
|
|
||||||
sort.Strings(displayNames)
|
sort.Strings(displayNames)
|
||||||
return strings.Join(displayNames, ", ")
|
result := strings.Join(displayNames, ", ")
|
||||||
|
if result == "" {
|
||||||
|
// Self DM
|
||||||
|
result = getPrettyDNForUser(displaySetting, users[0])
|
||||||
|
}
|
||||||
|
return result
|
||||||
}
|
}
|
||||||
|
|
||||||
func getPrettyDNForUser(displaySetting string, user *model.User) string {
|
func getPrettyDNForUser(displaySetting string, user *model.User) string {
|
||||||
@@ -121,15 +129,15 @@ func getPrettyDNForUser(displaySetting string, user *model.User) string {
|
|||||||
switch displaySetting {
|
switch displaySetting {
|
||||||
case "nickname_full_name":
|
case "nickname_full_name":
|
||||||
displayName = user.Nickname
|
displayName = user.Nickname
|
||||||
if displayName == "" {
|
if strings.TrimSpace(displayName) == "" {
|
||||||
displayName = user.GetFullName()
|
displayName = user.GetFullName()
|
||||||
}
|
}
|
||||||
if displayName == "" {
|
if strings.TrimSpace(displayName) == "" {
|
||||||
displayName = user.Username
|
displayName = user.Username
|
||||||
}
|
}
|
||||||
case "full_name":
|
case "full_name":
|
||||||
displayName = user.GetFullName()
|
displayName = user.GetFullName()
|
||||||
if displayName == "" {
|
if strings.TrimSpace(displayName) == "" {
|
||||||
displayName = user.Username
|
displayName = user.Username
|
||||||
}
|
}
|
||||||
default: // the "username" case also falls under this one.
|
default: // the "username" case also falls under this one.
|
||||||
|
|||||||
@@ -374,79 +374,89 @@ func TestGetPrettyDNForUsers(t *testing.T) {
|
|||||||
t.Run("nickname_full_name", func(t *testing.T) {
|
t.Run("nickname_full_name", func(t *testing.T) {
|
||||||
users := []*model.User{
|
users := []*model.User{
|
||||||
{
|
{
|
||||||
|
Id: "user1",
|
||||||
Nickname: "nick1",
|
Nickname: "nick1",
|
||||||
Username: "user1",
|
Username: "user1",
|
||||||
FirstName: "first1",
|
FirstName: "first1",
|
||||||
LastName: "last1",
|
LastName: "last1",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Id: "user2",
|
||||||
Nickname: "nick2",
|
Nickname: "nick2",
|
||||||
Username: "user2",
|
Username: "user2",
|
||||||
FirstName: "first2",
|
FirstName: "first2",
|
||||||
LastName: "last2",
|
LastName: "last2",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
assert.Equal(t, "nick1, nick2", getPrettyDNForUsers("nickname_full_name", users))
|
assert.Equal(t, "nick2", getPrettyDNForUsers("nickname_full_name", users, "user1"))
|
||||||
|
|
||||||
users = []*model.User{
|
users = []*model.User{
|
||||||
{
|
{
|
||||||
|
Id: "user1",
|
||||||
Username: "user1",
|
Username: "user1",
|
||||||
FirstName: "first1",
|
FirstName: "first1",
|
||||||
LastName: "last1",
|
LastName: "last1",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Id: "user2",
|
||||||
Username: "user2",
|
Username: "user2",
|
||||||
FirstName: "first2",
|
FirstName: "first2",
|
||||||
LastName: "last2",
|
LastName: "last2",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
assert.Equal(t, "first1 last1, first2 last2", getPrettyDNForUsers("nickname_full_name", users))
|
assert.Equal(t, "first2 last2", getPrettyDNForUsers("nickname_full_name", users, "user1"))
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("full_name", func(t *testing.T) {
|
t.Run("full_name", func(t *testing.T) {
|
||||||
users := []*model.User{
|
users := []*model.User{
|
||||||
{
|
{
|
||||||
|
Id: "user1",
|
||||||
Nickname: "nick1",
|
Nickname: "nick1",
|
||||||
Username: "user1",
|
Username: "user1",
|
||||||
FirstName: "first1",
|
FirstName: "first1",
|
||||||
LastName: "last1",
|
LastName: "last1",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Id: "user2",
|
||||||
Nickname: "nick2",
|
Nickname: "nick2",
|
||||||
Username: "user2",
|
Username: "user2",
|
||||||
FirstName: "first2",
|
FirstName: "first2",
|
||||||
LastName: "last2",
|
LastName: "last2",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
assert.Equal(t, "first1 last1, first2 last2", getPrettyDNForUsers("full_name", users))
|
assert.Equal(t, "first2 last2", getPrettyDNForUsers("full_name", users, "user1"))
|
||||||
|
|
||||||
users = []*model.User{
|
users = []*model.User{
|
||||||
{
|
{
|
||||||
|
Id: "user1",
|
||||||
Username: "user1",
|
Username: "user1",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Id: "user2",
|
||||||
Username: "user2",
|
Username: "user2",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
assert.Equal(t, "user1, user2", getPrettyDNForUsers("full_name", users))
|
assert.Equal(t, "user2", getPrettyDNForUsers("full_name", users, "user1"))
|
||||||
})
|
})
|
||||||
|
|
||||||
t.Run("username", func(t *testing.T) {
|
t.Run("username", func(t *testing.T) {
|
||||||
users := []*model.User{
|
users := []*model.User{
|
||||||
{
|
{
|
||||||
|
Id: "user1",
|
||||||
Nickname: "nick1",
|
Nickname: "nick1",
|
||||||
Username: "user1",
|
Username: "user1",
|
||||||
FirstName: "first1",
|
FirstName: "first1",
|
||||||
LastName: "last1",
|
LastName: "last1",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
|
Id: "user2",
|
||||||
Nickname: "nick2",
|
Nickname: "nick2",
|
||||||
Username: "user2",
|
Username: "user2",
|
||||||
FirstName: "first2",
|
FirstName: "first2",
|
||||||
LastName: "last2",
|
LastName: "last2",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
assert.Equal(t, "user1, user2", getPrettyDNForUsers("username", users))
|
assert.Equal(t, "user2", getPrettyDNForUsers("username", users, "user1"))
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user