mirror of
https://github.com/ergochat/ergo.git
synced 2025-12-20 02:00:11 -08:00
replay existing metadata to reattaching always-on clients
This commit is contained in:
parent
b2ba43f0ae
commit
754d731ec3
2 changed files with 14 additions and 10 deletions
|
|
@ -3226,16 +3226,7 @@ func metadataHandler(server *Server, client *Client, msg ircmsg.Message, rb *Res
|
||||||
}
|
}
|
||||||
|
|
||||||
case "list":
|
case "list":
|
||||||
values := targetObj.ListMetadata()
|
playMetadataList(rb, client.Nick(), target, targetObj.ListMetadata())
|
||||||
|
|
||||||
batchId := rb.StartNestedBatch("metadata")
|
|
||||||
defer rb.EndNestedBatch(batchId)
|
|
||||||
|
|
||||||
for key, val := range values {
|
|
||||||
visibility := "*"
|
|
||||||
|
|
||||||
rb.Add(nil, server.name, RPL_KEYVALUE, client.Nick(), originalTarget, key, visibility, val)
|
|
||||||
}
|
|
||||||
|
|
||||||
case "clear":
|
case "clear":
|
||||||
if !metadataCanIEditThisTarget(client, targetObj) {
|
if !metadataCanIEditThisTarget(client, targetObj) {
|
||||||
|
|
@ -3306,6 +3297,16 @@ func metadataHandler(server *Server, client *Client, msg ircmsg.Message, rb *Res
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func playMetadataList(rb *ResponseBuffer, nick, target string, values map[string]string) {
|
||||||
|
batchId := rb.StartNestedBatch("metadata")
|
||||||
|
defer rb.EndNestedBatch(batchId)
|
||||||
|
|
||||||
|
for key, val := range values {
|
||||||
|
visibility := "*"
|
||||||
|
rb.Add(nil, rb.session.client.server.name, RPL_KEYVALUE, nick, target, key, visibility, val)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// REHASH
|
// REHASH
|
||||||
func rehashHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
|
func rehashHandler(server *Server, client *Client, msg ircmsg.Message, rb *ResponseBuffer) bool {
|
||||||
nick := client.Nick()
|
nick := client.Nick()
|
||||||
|
|
|
||||||
|
|
@ -496,6 +496,9 @@ func (server *Server) playRegistrationBurst(session *Session) {
|
||||||
if !(rb.session.capabilities.Has(caps.ExtendedISupport) && rb.session.isupportSentPrereg) {
|
if !(rb.session.capabilities.Has(caps.ExtendedISupport) && rb.session.isupportSentPrereg) {
|
||||||
server.RplISupport(c, rb)
|
server.RplISupport(c, rb)
|
||||||
}
|
}
|
||||||
|
if session.capabilities.Has(caps.Metadata) && c.AlwaysOn() {
|
||||||
|
playMetadataList(rb, d.nick, d.nick, c.ListMetadata())
|
||||||
|
}
|
||||||
if d.account != "" && session.capabilities.Has(caps.Persistence) {
|
if d.account != "" && session.capabilities.Has(caps.Persistence) {
|
||||||
reportPersistenceStatus(c, rb, false)
|
reportPersistenceStatus(c, rb, false)
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue