feat: notifications

This commit is contained in:
Dawid Wysokiński 2022-10-27 10:15:01 +02:00
parent 310b107a23
commit e854a9f32a
Signed by: Kichiyaki
GPG Key ID: B5445E357FB8B892

View File

@ -34,7 +34,7 @@ type Monitor struct {
client TWHelpClient
groupSvc GroupReader
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
}
@ -49,7 +49,7 @@ func NewMonitor(
client: client,
groupSvc: groupSvc,
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)
reqLimiter := make(chan struct{}, m.ennoblementsMaxConcurrentRequests)
defer close(reqLimiter)
ennoblementsLastFetchedAt := m.ennoblementsLastFetchedAt
skip := make(map[string]struct{}, len(ennoblementsLastFetchedAt))
ennoblementsSince := m.ennoblementsSince
skip := make(map[string]struct{}, len(ennoblementsSince))
for _, g := range groups {
if g.ChannelGains == "" && g.ChannelLosses == "" {
@ -235,7 +235,7 @@ func (m *Monitor) fetchEnnoblements(ctx context.Context, groups []domain.Group)
}
skip[key] = struct{}{}
since := ennoblementsLastFetchedAt[key]
since := ennoblementsSince[key]
if since.IsZero() {
since = time.Now().Add(-1 * time.Minute)
}
@ -269,8 +269,8 @@ func (m *Monitor) fetchEnnoblements(ctx context.Context, groups []domain.Group)
close(ch)
}()
// reinitialize ennoblementsLastFetchedAt
m.ennoblementsLastFetchedAt = make(map[string]time.Time)
// reinitialize ennoblementsSince
m.ennoblementsSince = make(map[string]time.Time)
//nolint:prealloc
var results []fetchEnnoblementsResult
@ -279,9 +279,9 @@ func (m *Monitor) fetchEnnoblements(ctx context.Context, groups []domain.Group)
key := res.versionCode + ":" + res.serverKey
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 {
m.ennoblementsLastFetchedAt[key] = ennoblementsLastFetchedAt[key]
m.ennoblementsSince[key] = ennoblementsSince[key]
}
if res.err != nil {