mirror of
https://github.com/ergochat/ergo.git
synced 2025-12-20 10:10:08 -08:00
fix: empty value is valid
This commit is contained in:
parent
c2a499187d
commit
9c4c337393
3 changed files with 7 additions and 7 deletions
|
|
@ -828,7 +828,7 @@ func (client *Client) applyPreregMetadata(session *Session) {
|
||||||
|
|
||||||
target := client.Nick()
|
target := client.Nick()
|
||||||
for k, v := range updates {
|
for k, v := range updates {
|
||||||
broadcastMetadataUpdate(client.server, maps.Keys(friends), session, target, k, v)
|
broadcastMetadataUpdate(client.server, maps.Keys(friends), session, target, k, v, true)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -3195,11 +3195,11 @@ func metadataRegisteredHandler(client *Client, config *Config, subcommand string
|
||||||
// echo the value to the client whether or not there was a real update
|
// echo the value to the client whether or not there was a real update
|
||||||
rb.Add(nil, server.name, RPL_KEYVALUE, client.Nick(), target, key, "*", value)
|
rb.Add(nil, server.name, RPL_KEYVALUE, client.Nick(), target, key, "*", value)
|
||||||
if updated {
|
if updated {
|
||||||
notifySubscribers(server, rb.session, targetObj, target, key, value)
|
notifySubscribers(server, rb.session, targetObj, target, key, value, true)
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if updated := targetObj.DeleteMetadata(key); updated {
|
if updated := targetObj.DeleteMetadata(key); updated {
|
||||||
notifySubscribers(server, rb.session, targetObj, target, key, "")
|
notifySubscribers(server, rb.session, targetObj, target, key, "", false)
|
||||||
}
|
}
|
||||||
// acknowledge to the client whether or not there was a real update
|
// acknowledge to the client whether or not there was a real update
|
||||||
rb.Add(nil, server.name, RPL_KEYNOTSET, client.Nick(), target, key, client.t("Key deleted"))
|
rb.Add(nil, server.name, RPL_KEYNOTSET, client.Nick(), target, key, client.t("Key deleted"))
|
||||||
|
|
|
||||||
|
|
@ -30,7 +30,7 @@ type MetadataHaver = interface {
|
||||||
CountMetadata() int
|
CountMetadata() int
|
||||||
}
|
}
|
||||||
|
|
||||||
func notifySubscribers(server *Server, session *Session, targetObj MetadataHaver, targetName, key, value string) {
|
func notifySubscribers(server *Server, session *Session, targetObj MetadataHaver, targetName, key, value string, set bool) {
|
||||||
var recipientSessions iter.Seq[*Session]
|
var recipientSessions iter.Seq[*Session]
|
||||||
|
|
||||||
switch target := targetObj.(type) {
|
switch target := targetObj.(type) {
|
||||||
|
|
@ -48,17 +48,17 @@ func notifySubscribers(server *Server, session *Session, targetObj MetadataHaver
|
||||||
return // impossible
|
return // impossible
|
||||||
}
|
}
|
||||||
|
|
||||||
broadcastMetadataUpdate(server, recipientSessions, session, targetName, key, value)
|
broadcastMetadataUpdate(server, recipientSessions, session, targetName, key, value, set)
|
||||||
}
|
}
|
||||||
|
|
||||||
func broadcastMetadataUpdate(server *Server, sessions iter.Seq[*Session], originator *Session, target, key, value string) {
|
func broadcastMetadataUpdate(server *Server, sessions iter.Seq[*Session], originator *Session, target, key, value string, set bool) {
|
||||||
for s := range sessions {
|
for s := range sessions {
|
||||||
// don't notify the session that made the change
|
// don't notify the session that made the change
|
||||||
if s == originator || !s.isSubscribedTo(key) {
|
if s == originator || !s.isSubscribedTo(key) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if value != "" {
|
if set {
|
||||||
s.Send(nil, server.name, "METADATA", target, key, "*", value)
|
s.Send(nil, server.name, "METADATA", target, key, "*", value)
|
||||||
} else {
|
} else {
|
||||||
s.Send(nil, server.name, "METADATA", target, key, "*")
|
s.Send(nil, server.name, "METADATA", target, key, "*")
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue