Fixing issue with feedback if there's more than one plugin on the stream deck. and also fixing the issue with view appear a different way

This commit is contained in:
Daniel Prows 2023-08-10 10:05:21 -06:00
parent 2811d3f042
commit f85551ae02

View File

@ -90,13 +90,12 @@ func setup(client *streamdeck.Client) {
contexts[event.Context] = struct{}{} contexts[event.Context] = struct{}{}
newSettings, err := volume.GetVolumeSettings() newSettings, err := volume.GetVolumeSettings()
_currentSettings = &volume.VolumeSettings{}
if err != nil { if err != nil {
return err return err
} }
return setFeedbackIfNeeded(ctx, client, newSettings) return setFeedback(ctx, client, newSettings)
}) })
action.RegisterHandler(streamdeck.WillDisappear, func(ctx context.Context, client *streamdeck.Client, event streamdeck.Event) error { action.RegisterHandler(streamdeck.WillDisappear, func(ctx context.Context, client *streamdeck.Client, event streamdeck.Event) error {
@ -120,17 +119,14 @@ func setup(client *streamdeck.Client) {
ctx := context.Background() ctx := context.Background()
ctx = sdcontext.WithContext(ctx, ctxStr) ctx = sdcontext.WithContext(ctx, ctxStr)
setFeedbackIfNeeded(ctx, client, newSettings) setFeedback(ctx, client, newSettings)
} }
_currentSettings = newSettings
} }
}() }()
} }
func setFeedbackIfNeeded(ctx context.Context, client *streamdeck.Client, newSettings *volume.VolumeSettings) error { func setFeedback(ctx context.Context, client *streamdeck.Client, newSettings *volume.VolumeSettings) error {
if _currentSettings.OutputVolume == newSettings.OutputVolume && _currentSettings.OutputMuted == newSettings.OutputMuted {
return nil
}
payload := FeedbackPayload{} payload := FeedbackPayload{}
@ -152,10 +148,19 @@ func setFeedbackIfNeeded(ctx context.Context, client *streamdeck.Client, newSett
payload.Icon = ValueWithOpacity[any]{nil, opacity} payload.Icon = ValueWithOpacity[any]{nil, opacity}
_currentSettings = newSettings
return client.SetFeedback(ctx, payload) return client.SetFeedback(ctx, payload)
} }
func setFeedbackIfNeeded(ctx context.Context, client *streamdeck.Client, newSettings *volume.VolumeSettings) error {
if _currentSettings.OutputVolume == newSettings.OutputVolume && _currentSettings.OutputMuted == newSettings.OutputMuted {
return nil
}
_currentSettings = newSettings
return setFeedback(ctx, client, newSettings)
}
type FeedbackPayload struct { type FeedbackPayload struct {
Value ValueWithOpacity[string] `json:"value"` Value ValueWithOpacity[string] `json:"value"`
Indicator ValueWithOpacity[int] `json:"indicator"` Indicator ValueWithOpacity[int] `json:"indicator"`