feat: notifications
This commit is contained in:
parent
310b107a23
commit
e854a9f32a
|
@ -34,7 +34,7 @@ type Monitor struct {
|
||||||
client TWHelpClient
|
client TWHelpClient
|
||||||
groupSvc GroupReader
|
groupSvc GroupReader
|
||||||
ennoblementsMu sync.Mutex // ennoblementsMu is used by Monitor.fetchEnnoblements
|
ennoblementsMu sync.Mutex // ennoblementsMu is used by Monitor.fetchEnnoblements
|
||||||
ennoblementsLastFetchedAt map[string]time.Time // ennoblementsLastFetchedAt is used by Monitor.fetchEnnoblements
|
ennoblementsSince map[string]time.Time // ennoblementsSince is used by Monitor.fetchEnnoblements
|
||||||
ennoblementsMaxConcurrentRequests int // ennoblementsMaxConcurrentRequests is used by Monitor.fetchEnnoblements
|
ennoblementsMaxConcurrentRequests int // ennoblementsMaxConcurrentRequests is used by Monitor.fetchEnnoblements
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -49,7 +49,7 @@ func NewMonitor(
|
||||||
client: client,
|
client: client,
|
||||||
groupSvc: groupSvc,
|
groupSvc: groupSvc,
|
||||||
ennoblementsMaxConcurrentRequests: ennoblementsMaxConcurrentRequests,
|
ennoblementsMaxConcurrentRequests: ennoblementsMaxConcurrentRequests,
|
||||||
ennoblementsLastFetchedAt: make(map[string]time.Time),
|
ennoblementsSince: make(map[string]time.Time),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -220,8 +220,8 @@ func (m *Monitor) fetchEnnoblements(ctx context.Context, groups []domain.Group)
|
||||||
ch := make(chan listEnnoblementsResult)
|
ch := make(chan listEnnoblementsResult)
|
||||||
reqLimiter := make(chan struct{}, m.ennoblementsMaxConcurrentRequests)
|
reqLimiter := make(chan struct{}, m.ennoblementsMaxConcurrentRequests)
|
||||||
defer close(reqLimiter)
|
defer close(reqLimiter)
|
||||||
ennoblementsLastFetchedAt := m.ennoblementsLastFetchedAt
|
ennoblementsSince := m.ennoblementsSince
|
||||||
skip := make(map[string]struct{}, len(ennoblementsLastFetchedAt))
|
skip := make(map[string]struct{}, len(ennoblementsSince))
|
||||||
|
|
||||||
for _, g := range groups {
|
for _, g := range groups {
|
||||||
if g.ChannelGains == "" && g.ChannelLosses == "" {
|
if g.ChannelGains == "" && g.ChannelLosses == "" {
|
||||||
|
@ -235,7 +235,7 @@ func (m *Monitor) fetchEnnoblements(ctx context.Context, groups []domain.Group)
|
||||||
}
|
}
|
||||||
skip[key] = struct{}{}
|
skip[key] = struct{}{}
|
||||||
|
|
||||||
since := ennoblementsLastFetchedAt[key]
|
since := ennoblementsSince[key]
|
||||||
if since.IsZero() {
|
if since.IsZero() {
|
||||||
since = time.Now().Add(-1 * time.Minute)
|
since = time.Now().Add(-1 * time.Minute)
|
||||||
}
|
}
|
||||||
|
@ -269,8 +269,8 @@ func (m *Monitor) fetchEnnoblements(ctx context.Context, groups []domain.Group)
|
||||||
close(ch)
|
close(ch)
|
||||||
}()
|
}()
|
||||||
|
|
||||||
// reinitialize ennoblementsLastFetchedAt
|
// reinitialize ennoblementsSince
|
||||||
m.ennoblementsLastFetchedAt = make(map[string]time.Time)
|
m.ennoblementsSince = make(map[string]time.Time)
|
||||||
|
|
||||||
//nolint:prealloc
|
//nolint:prealloc
|
||||||
var results []fetchEnnoblementsResult
|
var results []fetchEnnoblementsResult
|
||||||
|
@ -279,9 +279,9 @@ func (m *Monitor) fetchEnnoblements(ctx context.Context, groups []domain.Group)
|
||||||
|
|
||||||
key := res.versionCode + ":" + res.serverKey
|
key := res.versionCode + ":" + res.serverKey
|
||||||
if l := len(res.ennoblements); l > 0 {
|
if l := len(res.ennoblements); l > 0 {
|
||||||
m.ennoblementsLastFetchedAt[key] = res.ennoblements[l-1].CreatedAt.Add(time.Second)
|
m.ennoblementsSince[key] = res.ennoblements[l-1].CreatedAt.Add(time.Second)
|
||||||
} else {
|
} else {
|
||||||
m.ennoblementsLastFetchedAt[key] = ennoblementsLastFetchedAt[key]
|
m.ennoblementsSince[key] = ennoblementsSince[key]
|
||||||
}
|
}
|
||||||
|
|
||||||
if res.err != nil {
|
if res.err != nil {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user