mirror of
https://github.com/matrix-org/dendrite.git
synced 2026-01-06 21:53:09 -06:00
Fix display name updates
This commit is contained in:
parent
0364c6232c
commit
8e13fb89d0
|
|
@ -71,7 +71,7 @@ func GetUserDevices(
|
||||||
}
|
}
|
||||||
|
|
||||||
displayName := dev.DisplayName
|
displayName := dev.DisplayName
|
||||||
if dev.DisplayName == "" {
|
if displayName == "" {
|
||||||
displayName = gjson.GetBytes(dev.DeviceKeys.KeyJSON, "unsigned.device_display_name").Str
|
displayName = gjson.GetBytes(dev.DeviceKeys.KeyJSON, "unsigned.device_display_name").Str
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -632,6 +632,23 @@ func (a *KeyInternalAPI) uploadLocalDeviceKeys(ctx context.Context, req *api.Per
|
||||||
}
|
}
|
||||||
|
|
||||||
var keysToStore []api.DeviceMessage
|
var keysToStore []api.DeviceMessage
|
||||||
|
|
||||||
|
if req.OnlyDisplayNameUpdates {
|
||||||
|
keysToStore = append(keysToStore, existingKeys...)
|
||||||
|
for _, existingKey := range existingKeys {
|
||||||
|
for _, newKey := range req.DeviceKeys {
|
||||||
|
switch {
|
||||||
|
case existingKey.UserID != newKey.DeviceID:
|
||||||
|
continue
|
||||||
|
case existingKey.DeviceID != newKey.DeviceID:
|
||||||
|
continue
|
||||||
|
case existingKey.DisplayName != newKey.DisplayName:
|
||||||
|
existingKey.DisplayName = newKey.DisplayName
|
||||||
|
}
|
||||||
|
}
|
||||||
|
keysToStore = append(keysToStore, existingKey)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
// assert that the user ID / device ID are not lying for each key
|
// assert that the user ID / device ID are not lying for each key
|
||||||
for _, key := range req.DeviceKeys {
|
for _, key := range req.DeviceKeys {
|
||||||
var serverName gomatrixserverlib.ServerName
|
var serverName gomatrixserverlib.ServerName
|
||||||
|
|
@ -665,10 +682,6 @@ func (a *KeyInternalAPI) uploadLocalDeviceKeys(ctx context.Context, req *api.Per
|
||||||
),
|
),
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
if req.OnlyDisplayNameUpdates {
|
|
||||||
// add the display name field from keysToStore into existingKeys
|
|
||||||
keysToStore = appendDisplayNames(existingKeys, keysToStore)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// store the device keys and emit changes
|
// store the device keys and emit changes
|
||||||
|
|
@ -764,16 +777,3 @@ func emitDeviceKeyChanges(producer KeyChangeProducer, existing, new []api.Device
|
||||||
}
|
}
|
||||||
return producer.ProduceKeyChanges(keysAdded)
|
return producer.ProduceKeyChanges(keysAdded)
|
||||||
}
|
}
|
||||||
|
|
||||||
func appendDisplayNames(existing, new []api.DeviceMessage) []api.DeviceMessage {
|
|
||||||
for i, existingDevice := range existing {
|
|
||||||
for _, newDevice := range new {
|
|
||||||
if existingDevice.DeviceID != newDevice.DeviceID {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
existingDevice.DisplayName = newDevice.DisplayName
|
|
||||||
existing[i] = existingDevice
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return existing
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue