Skip to content

Commit

Permalink
Add feature flag for buffered scrobbling
Browse files Browse the repository at this point in the history
  • Loading branch information
deluan committed Jul 2, 2021
1 parent cfb113b commit f492057
Show file tree
Hide file tree
Showing 3 changed files with 12 additions and 8 deletions.
2 changes: 2 additions & 0 deletions conf/configuration.go
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ type configOptions struct {
DevOldCacheLayout bool
DevActivityPanel bool
DevEnableShare bool
DevEnableBufferedScrobble bool
}

type scannerOptions struct {
Expand Down Expand Up @@ -229,6 +230,7 @@ func init() {
viper.SetDefault("devfastaccesscoverart", false)
viper.SetDefault("devactivitypanel", true)
viper.SetDefault("devenableshare", false)
viper.SetDefault("devenablebufferedscrobble", false)
}

func InitConfig(cfgFile string) {
Expand Down
6 changes: 5 additions & 1 deletion core/scrobbler/play_tracker.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"sort"
"time"

"github.com/navidrome/navidrome/conf"

"github.com/ReneKroon/ttlcache/v2"
"github.com/navidrome/navidrome/log"
"github.com/navidrome/navidrome/model"
Expand Down Expand Up @@ -50,7 +52,9 @@ func GetPlayTracker(ds model.DataStore, broker events.Broker) PlayTracker {
p.scrobblers = make(map[string]Scrobbler)
for name, constructor := range constructors {
s := constructor(ds)
s = NewBufferedScrobbler(ds, s, name)
if conf.Server.DevEnableBufferedScrobble {
s = NewBufferedScrobbler(ds, s, name)
}
p.scrobblers[name] = s
}
return p
Expand Down
12 changes: 5 additions & 7 deletions core/scrobbler/play_tracker_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ import (
"errors"
"time"

"github.com/navidrome/navidrome/conf"

"github.com/navidrome/navidrome/model"
"github.com/navidrome/navidrome/model/request"
"github.com/navidrome/navidrome/server/events"
Expand All @@ -23,6 +25,9 @@ var _ = Describe("PlayTracker", func() {
var fake fakeScrobbler

BeforeEach(func() {
// Remove buffering to simplify tests
conf.Server.DevEnableBufferedScrobble = false

ctx = context.Background()
ctx = request.WithUser(ctx, model.User{ID: "u-1"})
ctx = request.WithPlayer(ctx, model.Player{ScrobbleEnabled: true})
Expand All @@ -33,13 +38,6 @@ var _ = Describe("PlayTracker", func() {
})
tracker = GetPlayTracker(ds, events.GetBroker())

// Remove buffering to simplify tests
for i, s := range tracker.(*playTracker).scrobblers {
if bs, ok := s.(*bufferedScrobbler); ok {
tracker.(*playTracker).scrobblers[i] = bs.wrapped
}
}

track = model.MediaFile{
ID: "123",
Title: "Track Title",
Expand Down

0 comments on commit f492057

Please sign in to comment.