Changeset 495 in code for trunk/downstream.go


Ignore:
Timestamp:
Apr 13, 2021, 3:49:37 PM (4 years ago)
Author:
contact
Message:

Take msg ID in sendTargetBacklog

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/downstream.go

    r488 r495  
    987987                if firstClient {
    988988                        net.delivered.ForEachTarget(func(target string) {
    989                                 dc.sendTargetBacklog(net, target)
    990                         })
    991                 }
    992 
    993                 // Fast-forward history to last message
    994                 net.delivered.ForEachTarget(func(target string) {
    995                         ch := net.channels.Value(target)
    996                         if ch != nil && ch.Detached {
    997                                 return
    998                         }
    999 
    1000                         targetCM := net.casemap(target)
    1001                         lastID, err := dc.user.msgStore.LastMsgID(net, targetCM, time.Now())
    1002                         if err != nil {
    1003                                 dc.logger.Printf("failed to get last message ID: %v", err)
    1004                                 return
    1005                         }
    1006 
    1007                         net.delivered.StoreID(target, dc.clientName, lastID)
    1008                 })
     989                                lastDelivered := net.delivered.LoadID(target, dc.clientName)
     990                                if lastDelivered == "" {
     991                                        return
     992                                }
     993
     994                                dc.sendTargetBacklog(net, target, lastDelivered)
     995
     996                                // Fast-forward history to last message
     997                                targetCM := net.casemap(target)
     998                                lastID, err := dc.user.msgStore.LastMsgID(net, targetCM, time.Now())
     999                                if err != nil {
     1000                                        dc.logger.Printf("failed to get last message ID: %v", err)
     1001                                        return
     1002                                }
     1003                                net.delivered.StoreID(target, dc.clientName, lastID)
     1004                        })
     1005                }
    10091006        })
    10101007
     
    10261023}
    10271024
    1028 func (dc *downstreamConn) sendTargetBacklog(net *network, target string) {
     1025func (dc *downstreamConn) sendTargetBacklog(net *network, target, msgID string) {
    10291026        if dc.caps["draft/chathistory"] || dc.user.msgStore == nil {
    10301027                return
     
    10341031        }
    10351032
    1036         lastDelivered := net.delivered.LoadID(target, dc.clientName)
    1037         if lastDelivered == "" {
    1038                 return
    1039         }
    1040 
    10411033        limit := 4000
    10421034        targetCM := net.casemap(target)
    1043         history, err := dc.user.msgStore.LoadLatestID(net, targetCM, lastDelivered, limit)
     1035        history, err := dc.user.msgStore.LoadLatestID(net, targetCM, msgID, limit)
    10441036        if err != nil {
    1045                 dc.logger.Printf("failed to send implicit history for %q: %v", target, err)
     1037                dc.logger.Printf("failed to send backlog for %q: %v", target, err)
    10461038                return
    10471039        }
Note: See TracChangeset for help on using the changeset viewer.