more code tidy-up

This commit is contained in:
ari melody 2026-07-24 11:59:39 +01:00
parent 2190cac343
commit 04ca14163e
Signed by: ari
GPG key ID: CF99829C92678188
8 changed files with 195 additions and 94 deletions

View file

@ -124,17 +124,14 @@ func New(ctx context.Context, opts ServiceOptions) (*Service, error) {
port: opts.Port,
labels: &twitchLabels{
LatestFollower: &twitchLabel{
Text: "some_follower",
C: latestFollowerC,
Broadcast: latestFollowerBroadcast,
},
LatestSubscriber: &twitchLabel{
Text: "some_subscriber",
C: latestSubscriberC,
Broadcast: latestSubscriberBroadcast,
},
LatestCheer: &twitchLabel{
Text: "some_cheer",
C: latestCheerC,
Broadcast: latestCheerBroadcast,
},
@ -176,19 +173,6 @@ func New(ctx context.Context, opts ServiceOptions) (*Service, error) {
}
}
if data, err := os.ReadFile(path.Join(DATA_PATH, "state", LABEL_LATEST_FOLLOWER)); err == nil {
srv.labels.LatestFollower.Text = string(data)
log.Printf("Loaded latest follower: %s", string(data))
}
if data, err := os.ReadFile(path.Join(DATA_PATH, "state", LABEL_LATEST_SUBSCRIBER)); err == nil {
srv.labels.LatestSubscriber.Text = string(data)
log.Printf("Loaded latest subscriber: %s", string(data))
}
if data, err := os.ReadFile(path.Join(DATA_PATH, "state", LABEL_LATEST_CHEER)); err == nil {
srv.labels.LatestCheer.Text = string(data)
log.Printf("Loaded latest cheer: %s", string(data))
}
return srv, nil
}
@ -282,27 +266,44 @@ func (srv *Service) Run(ctx context.Context) {
if srv.oauthToken == nil || !srv.oauthToken.Valid() {
log.Printf("Log in with Twitch: http://localhost:%d/twitch/login", srv.port)
} else {
srv.start(ctx)
if err := srv.start(ctx); err != nil {
log.Printf("Failed to start Twitch service: %v", err)
}
}
}
func (srv *Service) start(ctx context.Context) {
userIDs, err := srv.userIDsFromNames([]string{ srv.channelName })
if err != nil {
log.Printf(
"Failed to resolve Twitch username \"%s\": %v",
srv.channelName,
err,
)
return
func (srv *Service) start(ctx context.Context) error {
if res, err := srv.getUsers(nil, []string{ srv.channelName }); err == nil {
if len(res.Data) == 0 {
return fmt.Errorf("resolve username \"%s\", it may not exist?", srv.channelName)
}
srv.channelID = res.Data[0].ID
} else { return fmt.Errorf("fetch Twitch users: %v", err) }
if res, err := srv.getFollowers(ctx, srv.channelID, 1); err == nil {
if len(res.Data) > 0 {
srv.labels.LatestFollower.Text = res.Data[0].UserName
log.Printf("Loaded latest follower: %s", res.Data[0].UserName)
}
} else {
log.Printf("Failed to fetch latest follower: %v", err)
}
if len(userIDs) == 0 {
fmt.Printf("Failed to resolve username \"%s\", it may not exist?", srv.channelName)
return
// TODO: build satellite service for offline-fetching subscribers and cheers
if data, err := os.ReadFile(path.Join(DATA_PATH, "state", LABEL_LATEST_SUBSCRIBER)); err == nil {
srv.labels.LatestSubscriber.Text = string(data)
log.Printf("Loaded latest subscriber: %s", string(data))
}
if data, err := os.ReadFile(path.Join(DATA_PATH, "state", LABEL_LATEST_CHEER)); err == nil {
srv.labels.LatestCheer.Text = string(data)
log.Printf("Loaded latest cheer: %s", string(data))
}
srv.channelID = userIDs[0]
srv.startWebsocketListener(ctx)
return nil
}
func (srv *Service) startWebsocketListener(ctx context.Context) {
@ -341,7 +342,7 @@ func (srv *Service) startWebsocketListener(ctx context.Context) {
srv.subscribeToDefaultEvents(ctx)
log.Printf("Connected to Twitch as %s.", srv.channelName)
log.Printf("Connected to Twitch for channel %s.", srv.channelName)
}
if message.Metadata.MessageType == string(api.NOTIFICATION) {