Skip to content

Commit

Permalink
displays info message with link to latest change request
Browse files Browse the repository at this point in the history
  • Loading branch information
tiagoapolo committed Feb 14, 2025
1 parent ca5ed73 commit c3d246f
Show file tree
Hide file tree
Showing 2 changed files with 77 additions and 32 deletions.
107 changes: 75 additions & 32 deletions frontend/web/components/ExistingChangeRequestAlert.tsx
Original file line number Diff line number Diff line change
@@ -1,54 +1,97 @@
import { FC, useRef } from 'react'
import { useGetChangeRequestsQuery } from 'common/services/useChangeRequest'
import WarningMessage from './WarningMessage'
import moment from 'moment'
import InfoMessage from './InfoMessage'
import { RouterChildContext } from 'react-router-dom'
import Button from './base/forms/Button'

type ExistingChangeRequestAlertType = {
projectId: number | string
environmentId: string
featureId: number
className?: string
history: RouterChildContext['router']['history']
}

const ExistingChangeRequestAlert: FC<ExistingChangeRequestAlertType> = ({
className,
environmentId,
featureId,
history,
projectId,
}) => {
const { data } = useGetChangeRequestsQuery({
committed: false,
environmentId,
feature_id: featureId,
})
const date = useRef(moment().toISOString())
const { data: scheduledChangeRequests } = useGetChangeRequestsQuery({
environmentId,
feature_id: featureId,
live_from_after: date.current,
})

if (scheduledChangeRequests?.results?.length) {
return (
<div className={className}>
<WarningMessage
warningMessage={
'You have scheduled changes upcoming for this feature, please check the Scheduling page.'
}
/>
</div>

const { data: changeRequests } = useGetChangeRequestsQuery(
{
committed: false,
environmentId,
feature_id: featureId,
},
{ refetchOnMountOrArgChange: true },
)

const { data: scheduledChangeRequests } = useGetChangeRequestsQuery(
{
environmentId,
feature_id: featureId,
live_from_after: date.current,
},
{ refetchOnMountOrArgChange: true },
)

const handleNavigate = () => {
const changes = scheduledChangeRequests?.results?.length
? scheduledChangeRequests?.results
: changeRequests?.results
const latestChangeRequest = changes?.at(-1)?.id
closeModal()
history.push(
`/project/${projectId}/environment/${environmentId}/change-requests/${latestChangeRequest}`,
)
}
if (data?.results?.length) {
return (
<div className={className}>
<WarningMessage
warningMessage={
'You have open change requests for this feature, please check the Change Requests page.'
}
/>
</div>
)

const getRequestChangeInfoText = (
hasScheduledChangeRequests: boolean,
hasChangeRequests: boolean,
) => {
if (hasScheduledChangeRequests) {
return [
'You have scheduled changes upcoming for this feature.',
'to view your scheduled changes.',
]
}

if (hasChangeRequests) {
return [
'You have open change requests for this feature.',
'to view your requested changes.',
]
}
}
return null

const requestChangeInfoText = getRequestChangeInfoText(
!!scheduledChangeRequests?.results?.length,
!!changeRequests?.results?.length,
)

if (!requestChangeInfoText?.length) {
return null
}

return (
<div className={className}>
<InfoMessage>
<span>
{requestChangeInfoText[0]} Click{' '}
<Button onClick={handleNavigate} theme='text'>
here
</Button>{' '}
{requestChangeInfoText[1]}
</span>
</InfoMessage>
</div>
)
}

export default ExistingChangeRequestAlert
2 changes: 2 additions & 0 deletions frontend/web/components/modals/CreateFlag.js
Original file line number Diff line number Diff line change
Expand Up @@ -750,8 +750,10 @@ const CreateFlag = class extends Component {
{!!isEdit && (
<ExistingChangeRequestAlert
className='mb-4'
projectId={this.props.projectId}
featureId={projectFlag.id}
environmentId={this.props.environmentId}
history={this.props.history}
/>
)}
{!isEdit && (
Expand Down

0 comments on commit c3d246f

Please sign in to comment.