11import { FC } from 'react'
2- import { useGetFeatureIdsStagedQuery } from 'common/services/useFeatureDependency '
2+ import { ChangeRequest } from 'common/types/responses '
33import { useGetProjectFlagQuery } from 'common/services/useProjectFlag'
44import { useFeatureStates } from 'common/hooks/useFeatureStates'
5- import ChangeRequestDependencyChanges from './ChangeRequestDependencyChanges'
5+ import DependencyChangesTable from './DependencyChangesTable'
6+ import { useDependencyChanges } from './useDependencyChanges'
67import Panel from 'components/base/grid/Panel'
78import ErrorMessage from 'components/ErrorMessage'
89
910type DiffDependenciesProps = {
11+ changeRequest : ChangeRequest
12+ environmentId : string
13+ projectId : string
14+ }
15+
16+ type FeatureDependencyChangesProps = {
1017 changeRequestId : number
1118 environmentId : string
19+ featureId : number
1220 projectId : string
1321}
1422
15- const FeatureDependencyChanges : FC <
16- DiffDependenciesProps & { featureId : number }
17- > = ( { changeRequestId, environmentId, featureId, projectId } ) => {
23+ const FeatureDependencyChanges : FC < FeatureDependencyChangesProps > = ( {
24+ changeRequestId,
25+ environmentId,
26+ featureId,
27+ projectId,
28+ } ) => {
29+ const { changes, isError } = useDependencyChanges ( {
30+ changeRequestId,
31+ environmentId,
32+ featureId,
33+ } )
1834 const { data : feature } = useGetProjectFlagQuery ( {
1935 id : featureId ,
2036 project : Number ( projectId ) ,
@@ -25,6 +41,16 @@ const FeatureDependencyChanges: FC<
2541 environmentId,
2642 projectId : Number ( projectId ) ,
2743 } )
44+
45+ if ( isError ) {
46+ return (
47+ < div className = 'mt-4' >
48+ < ErrorMessage error = 'Could not load the dependency changes in this change request.' />
49+ </ div >
50+ )
51+ }
52+ // Most change sets only touch values or overrides, so no panel for those.
53+ if ( ! changes ?. length ) return null
2854 return (
2955 < Panel
3056 title = { `Dependencies${ feature ? `: ${ feature . name } ` : '' } ` }
@@ -34,10 +60,8 @@ const FeatureDependencyChanges: FC<
3460 Prerequisite changes in this request. Nothing changes until it is
3561 published.
3662 </ p >
37- < ChangeRequestDependencyChanges
38- environmentId = { environmentId }
39- featureId = { featureId }
40- changeRequestId = { changeRequestId }
63+ < DependencyChangesTable
64+ changes = { changes }
4165 // Until the states are known, no column rather than every row "No".
4266 isEnabled = {
4367 states . isLoading || states . isError ? undefined : states . isEnabled
@@ -47,29 +71,22 @@ const FeatureDependencyChanges: FC<
4771 )
4872}
4973
50- // The prerequisite changes staged in a change request, per feature.
74+ // The prerequisite changes staged in a change request, per feature it
75+ // changes.
5176const DiffDependencies : FC < DiffDependenciesProps > = ( {
52- changeRequestId ,
77+ changeRequest ,
5378 environmentId,
5479 projectId,
5580} ) => {
56- const { data : featureIds , isError } = useGetFeatureIdsStagedQuery ( {
57- changeRequestId,
58- } )
59- // Otherwise a failed list reads as no dependency changes.
60- if ( isError ) {
61- return (
62- < div className = 'mt-4' >
63- < ErrorMessage error = 'Could not load the dependency changes in this change request.' />
64- </ div >
65- )
66- }
81+ const featureIds = [
82+ ...new Set ( changeRequest . change_sets ?. map ( ( { feature } ) => feature ) ) ,
83+ ]
6784 return (
6885 < >
69- { featureIds ? .map ( ( featureId ) => (
86+ { featureIds . map ( ( featureId ) => (
7087 < FeatureDependencyChanges
7188 key = { featureId }
72- changeRequestId = { changeRequestId }
89+ changeRequestId = { changeRequest . id }
7390 environmentId = { environmentId }
7491 featureId = { featureId }
7592 projectId = { projectId }
0 commit comments