package taskboard

import "github.com/tidbcloud/AgentTeam/internal/core/domain"

func parseChannelTarget(value string) (string, error) {
	target, err := domain.ParseMessageTargetReference(value)
	if err != nil {
		return "", invalidChannelTarget(err.Error())
	}
	switch target.Kind {
	case domain.MessageTargetKindChannel:
		return target.Thread.ChannelSlug, nil
	case domain.MessageTargetKindReplyThread:
		if target.Thread.Type == domain.ThreadTypeDM {
			return "", invalidChannelTarget("dm does not support tasks")
		}
		return "", badRequest("threads do not support tasks")
	case domain.MessageTargetKindDM:
		return "", invalidChannelTarget("dm does not support tasks")
	default:
		return "", invalidChannelTarget("invalid channel identifier")
	}
}
