diff options
author | 2021-11-22 19:03:21 +0100 | |
---|---|---|
committer | 2021-11-22 19:03:21 +0100 | |
commit | 3caae376e77a270f57733093163eafa3db8c71bc (patch) | |
tree | 3988a324473631e49fdb7b9360a8eb749005dfb1 /internal/processing/streaming/streamtoaccount.go | |
parent | Use IPv6 doc prefix for docs (#324) (diff) | |
download | gotosocial-3caae376e77a270f57733093163eafa3db8c71bc.tar.xz |
Fix streamed messages ending up in wrong timeline(s) (#325)
* define timeline consts
* remove double stream of status
* change test stream creation up a bit
* stream messages more selectively
* add test for streaming new status creation via clientAPI
* tidy code + comments a bit
* tidy up tests
* make sure new status isn't streamed to public
Diffstat (limited to 'internal/processing/streaming/streamtoaccount.go')
-rw-r--r-- | internal/processing/streaming/streamtoaccount.go | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/internal/processing/streaming/streamtoaccount.go b/internal/processing/streaming/streamtoaccount.go index 140910ab7..b950eecca 100644 --- a/internal/processing/streaming/streamtoaccount.go +++ b/internal/processing/streaming/streamtoaccount.go @@ -25,7 +25,7 @@ import ( ) // streamToAccount streams the given payload with the given event type to any streams currently open for the given account ID. -func (p *processor) streamToAccount(payload string, event stream.EventType, accountID string) error { +func (p *processor) streamToAccount(payload string, event string, timelines []string, accountID string) error { v, ok := p.streamMap.Load(accountID) if !ok { // no open connections so nothing to stream @@ -42,11 +42,17 @@ func (p *processor) streamToAccount(payload string, event stream.EventType, acco for _, s := range streamsForAccount.Streams { s.Lock() defer s.Unlock() - if s.Connected { - s.Messages <- &stream.Message{ - Stream: []string{s.Type}, - Event: string(event), - Payload: payload, + if !s.Connected { + continue + } + + for _, t := range timelines { + if s.Timeline == string(t) { + s.Messages <- &stream.Message{ + Stream: []string{string(t)}, + Event: string(event), + Payload: payload, + } } } } |