diff --git a/pkg/expression/eval.go b/pkg/expression/eval.go index 1d51a7e..1e1ee4e 100644 --- a/pkg/expression/eval.go +++ b/pkg/expression/eval.go @@ -24,6 +24,9 @@ func Eval[T any]( } value := buf.String() + if value == "" { + return result, nil + } _, err = fmt.Sscanf(value, "%v", &result) if err != nil { return result, fmt.Errorf("unable to scan value '%v' into %T: %w", value, result, err) diff --git a/pkg/streamcontrol/youtube/youtube.go b/pkg/streamcontrol/youtube/youtube.go index 085b107..d12eaa3 100644 --- a/pkg/streamcontrol/youtube/youtube.go +++ b/pkg/streamcontrol/youtube/youtube.go @@ -635,6 +635,9 @@ func (yt *YouTube) StartStream( templateBroadcastIDs, customArgs, ) + if len(templateBroadcastIDs) == 0 { + return fmt.Errorf("no template stream is selected") + } templateBroadcastIDMap := map[string]struct{}{} for _, broadcastID := range templateBroadcastIDs { diff --git a/pkg/streampanel/panel.go b/pkg/streampanel/panel.go index ab9bf13..c19cfc1 100644 --- a/pkg/streampanel/panel.go +++ b/pkg/streampanel/panel.go @@ -3532,6 +3532,10 @@ func (p *Panel) profileWindow( youtubeProfile.Tags = sanitizeTags(getYoutubeTags()) } profile.PerPlatform[youtube.ID] = youtubeProfile + if len(youtubeProfile.TemplateBroadcastIDs) == 0 { + p.DisplayError(fmt.Errorf("no youtube template stream is selected")) + return + } } err := commitFn(ctx, profile) if err != nil {