import { computed, type Ref } from 'vue' import { useProAccess } from '@/composables/useProAccess' import { useProFeatureUpgrade } from '@/composables/useProFeatureUpgrade' import { getActiveConfirmation } from '@/utils/getActiveConfirmation' import type { Confirmation } from '@/types/confirmations' /** * Builder permissions for multiple confirmations (mirrors Lite downgrade + Pro hook). */ export function useConfirmationAccess(confirmations: Ref) { const { canUseFeature } = useProAccess() const { showUpgradeDialog } = useProFeatureUpgrade() const hasMultipleConfirmations = computed(() => canUseFeature('multiple_confirmations')) /** First active confirmation by list order; fallback to first row when none are active. */ const primaryEditableId = computed(() => { if (hasMultipleConfirmations.value) { return null } const active = getActiveConfirmation(confirmations.value) if (active?.id) { return active.id } const sorted = [...confirmations.value].sort((a, b) => (a.position ?? 0) - (b.position ?? 0)) return sorted[0]?.id ?? null }) const isRowEditable = (row: Confirmation) => { if (hasMultipleConfirmations.value) { return true } if (confirmations.value.length <= 1) { return true } return row.id === primaryEditableId.value } const requireMultipleConfirmations = (): boolean => { if (hasMultipleConfirmations.value) { return true } showUpgradeDialog('essentials') return false } const requireRowEditable = (row: Confirmation): boolean => { if (isRowEditable(row)) { return true } showUpgradeDialog('essentials') return false } return { hasMultipleConfirmations, primaryEditableId, isRowEditable, requireMultipleConfirmations, requireRowEditable, } }