package im

import "strings"

const liveEventTypeTeamWorkflowsUpdated = "runtime.team_workflows_updated"

// EmitTeamWorkflowsUpdated publishes an authoritative collection/detail
// refresh hint only to the owning Team Channel scope. The payload is identity
// plus a monotonic relation revision; clients recover the full current state
// from the Team Workflow API rather than trusting a live-only projection.
func (emitter *LiveEventEmitter) EmitTeamWorkflowsUpdated(
	workspaceID string,
	sourceScopeID string,
	teamID string,
	teamWorkflowID string,
	revision int64,
) {
	if emitter == nil || emitter.hub == nil {
		return
	}
	workspaceID = strings.TrimSpace(workspaceID)
	sourceScopeID = strings.TrimSpace(sourceScopeID)
	teamID = strings.TrimSpace(teamID)
	teamWorkflowID = strings.TrimSpace(teamWorkflowID)
	if workspaceID == "" || sourceScopeID == "" || teamID == "" || teamWorkflowID == "" || revision <= 0 {
		return
	}
	emitter.publishChannelLiveOnlyEvent(
		workspaceID,
		sourceScopeID,
		liveEventTypeTeamWorkflowsUpdated,
		map[string]any{
			"workspaceId":    workspaceID,
			"sourceScopeId":  sourceScopeID,
			"teamId":         teamID,
			"teamWorkflowId": teamWorkflowID,
			"revision":       revision,
		},
	)
}
