package im

import (
	"strings"

	storeim "github.com/tidbcloud/AgentTeam/internal/store/im"
	"github.com/tidbcloud/AgentTeam/internal/workflow/planmanage"
)

const liveEventTypeWorkflowPlanDraftUpdated = "runtime.workflow_plan_draft_updated"

func (emitter *LiveEventEmitter) EmitWorkflowPlanDraftUpdated(draft planmanage.Draft) {
	if emitter == nil || emitter.hub == nil {
		return
	}
	workspaceID := strings.TrimSpace(draft.WorkspaceID)
	planID := strings.TrimSpace(draft.PlanID)
	if workspaceID == "" || planID == "" || draft.Revision <= 0 {
		return
	}
	emitter.hub.PublishWorkspaceLiveOnlyEvent(storeim.StreamEvent{
		WorkspaceID: workspaceID,
		Type:        liveEventTypeWorkflowPlanDraftUpdated,
		Payload: map[string]any{
			"workspaceId": workspaceID,
			"planId":      planID,
			"revision":    draft.Revision,
			"updatedBy": map[string]any{
				"type":     strings.TrimSpace(draft.UpdatedBy.Type),
				"id":       strings.TrimSpace(draft.UpdatedBy.ID),
				"memberId": strings.TrimSpace(draft.UpdatedBy.MemberID),
			},
		},
	})
}
