package crossplane

import (
	commonv1 "github.com/crossplane/crossplane-runtime/apis/common/v1"
	corev1 "k8s.io/api/core/v1"
)

func IsReady(conditions []commonv1.Condition) bool {
	ready, _ := GetConditions(conditions)
	return ready
}

// IsReadyAndSynced checks if the crossplane CR is ready and synced.
func IsReadyAndSynced(conditions []commonv1.Condition) bool {
	ready, synced := GetConditions(conditions)
	return ready && synced
}

// GetConditions returns the ready and synced conditions.
func GetConditions(conditions []commonv1.Condition) (ready, synced bool) {
	for _, c := range conditions {
		switch c.Type {
		case commonv1.TypeReady:
			ready = c.Status == corev1.ConditionTrue
		case commonv1.TypeSynced:
			synced = c.Status == corev1.ConditionTrue
		}
	}

	return ready, synced
}
