Skip to content

Commit 8e7d7aa

Browse files
committed
feat: add util for on click search params
1 parent 219ac6e commit 8e7d7aa

File tree

11 files changed

+159
-136
lines changed

11 files changed

+159
-136
lines changed

src/components/ApplicationGroup/Details/TriggerView/EnvTriggerView.tsx

Lines changed: 21 additions & 58 deletions
Original file line numberDiff line numberDiff line change
@@ -336,38 +336,6 @@ const EnvTriggerView = ({ filteredAppIds, isVirtualEnv }: AppGroupDetailDefaultT
336336
)
337337
}
338338

339-
const onClickApprovalNode = (cdNodeId: number) => {
340-
handleAnalyticsEvent(ENV_TRIGGER_VIEW_GA_EVENTS.ApprovalNodeClicked)
341-
342-
const newParams = new URLSearchParams([
343-
[TRIGGER_VIEW_PARAMS.APPROVAL_NODE, cdNodeId.toString()],
344-
[TRIGGER_VIEW_PARAMS.APPROVAL_STATE, TRIGGER_VIEW_PARAMS.APPROVAL],
345-
])
346-
history.push({ search: newParams.toString() })
347-
}
348-
349-
const onClickCDMaterial = (cdNodeId: number, nodeType: DeploymentNodeType) => {
350-
handleAnalyticsEvent(ENV_TRIGGER_VIEW_GA_EVENTS.ImageClicked)
351-
352-
const newParams = new URLSearchParams([
353-
[TRIGGER_VIEW_PARAMS.CD_NODE, cdNodeId.toString()],
354-
[TRIGGER_VIEW_PARAMS.NODE_TYPE, nodeType],
355-
])
356-
history.push({
357-
search: newParams.toString(),
358-
})
359-
}
360-
361-
// Assuming that rollback has only CD as nodeType
362-
const onClickRollbackMaterial = (cdNodeId: number) => {
363-
handleAnalyticsEvent(ENV_TRIGGER_VIEW_GA_EVENTS.RollbackClicked)
364-
365-
const newParams = new URLSearchParams([[TRIGGER_VIEW_PARAMS.ROLLBACK_NODE, cdNodeId.toString()]])
366-
history.push({
367-
search: newParams.toString(),
368-
})
369-
}
370-
371339
const isBuildAndBranchTriggerAllowed = (node: CommonNodeAttr): boolean =>
372340
!node.isLinkedCI && !node.isLinkedCD && node.type !== WorkflowNodeType.WEBHOOK
373341

@@ -524,6 +492,7 @@ const EnvTriggerView = ({ filteredAppIds, isVirtualEnv }: AppGroupDetailDefaultT
524492
workflows={filteredWorkflows}
525493
isVirtualEnvironment={isVirtualEnv}
526494
envId={+envId}
495+
handleSuccess={reloadTriggerView}
527496
/>
528497
)
529498
}
@@ -600,7 +569,6 @@ const EnvTriggerView = ({ filteredAppIds, isVirtualEnv }: AppGroupDetailDefaultT
600569
isTriggerBlockedDueToPlugin={node?.showPluginWarning && node?.isTriggerBlocked}
601570
triggerType={node?.triggerType}
602571
parentEnvironmentName={node?.parentEnvironmentName}
603-
onClickApprovalNode={onClickApprovalNode}
604572
/>
605573
)
606574
}
@@ -823,9 +791,6 @@ const EnvTriggerView = ({ filteredAppIds, isVirtualEnv }: AppGroupDetailDefaultT
823791
index={index}
824792
handleWebhookAddImageClick={handleWebhookAddImageClick(workflow.appId)}
825793
openCIMaterialModal={openCIMaterialModal}
826-
onClickApprovalNode={onClickApprovalNode}
827-
onClickCDMaterial={onClickCDMaterial}
828-
onClickRollbackMaterial={onClickRollbackMaterial}
829794
reloadTriggerView={reloadTriggerView}
830795
/>
831796
))}
@@ -851,28 +816,26 @@ const EnvTriggerView = ({ filteredAppIds, isVirtualEnv }: AppGroupDetailDefaultT
851816

852817
<Prompt when={enableRoutePrompt} message={DEFAULT_ROUTE_PROMPT_MESSAGE} />
853818

854-
<>
855-
{renderWorkflow()}
856-
857-
<Switch>
858-
<Route path={`${url}${URLS.BUILD}/:ciNodeId`}>
859-
<BuildImageModal
860-
handleClose={revertToPreviousURL}
861-
isJobView={false}
862-
filteredCIPipelineMap={filteredCIPipelines}
863-
workflows={workflows}
864-
reloadWorkflows={getWorkflowsData}
865-
reloadWorkflowStatus={getWorkflowStatusData}
866-
environmentLists={[]}
867-
/>
868-
</Route>
869-
</Switch>
870-
{renderCDMaterial()}
871-
{renderBulkCDMaterial()}
872-
{renderBulkCIMaterial()}
873-
{renderApprovalMaterial()}
874-
{renderBulkSourceChange()}
875-
</>
819+
{renderWorkflow()}
820+
821+
<Switch>
822+
<Route path={`${url}${URLS.BUILD}/:ciNodeId`}>
823+
<BuildImageModal
824+
handleClose={revertToPreviousURL}
825+
isJobView={false}
826+
filteredCIPipelineMap={filteredCIPipelines}
827+
workflows={workflows}
828+
reloadWorkflows={getWorkflowsData}
829+
reloadWorkflowStatus={getWorkflowStatusData}
830+
environmentLists={[]}
831+
/>
832+
</Route>
833+
</Switch>
834+
{renderCDMaterial()}
835+
{renderBulkCDMaterial()}
836+
{renderBulkCIMaterial()}
837+
{renderApprovalMaterial()}
838+
{renderBulkSourceChange()}
876839
<div />
877840
</div>
878841
{!!selectedAppList.length && (

src/components/app/details/triggerView/BuildImageModal/BulkBuildImageModal.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ const BulkBuildImageModal = ({
164164
const handleReloadSelectedMaterialWithWorkflows = async () => {
165165
try {
166166
const newWorkflows = await reloadWorkflows()
167-
await reloadSelectedAppMaterialList(newWorkflows as WorkflowType[])
167+
await reloadSelectedAppMaterialList(newWorkflows)
168168
} catch (error) {
169169
showError(error)
170170
}

src/components/app/details/triggerView/BuildImageModal/types.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,8 +80,9 @@ export type GitInfoMaterialProps = Pick<BuildImageModalProps, 'isJobView'> & {
8080
)
8181

8282
export interface BulkBuildImageModalProps
83-
extends Pick<BuildImageModalProps, 'handleClose' | 'workflows' | 'reloadWorkflows' | 'reloadWorkflowStatus'> {
83+
extends Pick<BuildImageModalProps, 'handleClose' | 'workflows' | 'reloadWorkflowStatus'> {
8484
filteredCIPipelineMap: FilteredCIPipelineMapType
85+
reloadWorkflows: () => Promise<WorkflowType[]>
8586
}
8687

8788
export interface BuildImageHeaderProps {

src/components/app/details/triggerView/DeployImageModal/BulkDeployModal.tsx

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,14 @@ const validateRuntimeParameters = importComponentFromFELibrary(
6767
'function',
6868
)
6969

70-
const BulkDeployModal = ({ handleClose, stageType, workflows, isVirtualEnvironment, envId }: BuildDeployModalProps) => {
70+
const BulkDeployModal = ({
71+
handleClose: handleCloseProp,
72+
handleSuccess,
73+
stageType,
74+
workflows,
75+
isVirtualEnvironment,
76+
envId,
77+
}: BuildDeployModalProps) => {
7178
const { currentEnvironmentName: envName } = useAppContext()
7279
const { canFetchHelmAppStatus } = useMainContext()
7380

@@ -531,6 +538,13 @@ const BulkDeployModal = ({ handleClose, stageType, workflows, isVirtualEnvironme
531538
[appInfoMap],
532539
)
533540

541+
const handleClose = () => {
542+
handleCloseProp()
543+
if (responseList.length) {
544+
handleSuccess()
545+
}
546+
}
547+
534548
const renderContent = () => {
535549
if (BulkCDStrategy && showStrategyFeasibilityPage) {
536550
return (

src/components/app/details/triggerView/DeployImageModal/DeployImageContent.tsx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,8 @@ import {
3131
import { importComponentFromFELibrary } from '@Components/common'
3232

3333
import { TRIGGER_VIEW_PARAMS } from '../Constants'
34-
import { FilterConditionViews, HandleRuntimeParamChange } from '../types'
34+
import { getCDNodeActionSearch } from '../TriggerView.utils'
35+
import { CDNodeActions, FilterConditionViews, HandleRuntimeParamChange } from '../types'
3536
import BulkDeployEmptyState from './BulkDeployEmptyState'
3637
import BulkTriggerSidebar from './BulkTriggerSidebar'
3738
import ImageSelectionCTA from './ImageSelectionCTA'
@@ -90,7 +91,6 @@ const DeployImageContent = ({
9091
selectedTagName,
9192
handleTagChange,
9293
changeApp,
93-
onClickApprovalNode,
9494
}: DeployImageContentProps) => {
9595
// WARNING: Pls try not to create a useState in this component, it is supposed to be a dumb component.
9696
const history = useHistory()
@@ -236,7 +236,12 @@ const DeployImageContent = ({
236236
})
237237
} else {
238238
handleClose()
239-
onClickApprovalNode(pipelineId)
239+
const search = getCDNodeActionSearch({
240+
actionType: CDNodeActions.APPROVAL,
241+
cdNodeId: pipelineId,
242+
fromAppGroup: isBulkTrigger,
243+
})
244+
history.push({ search })
240245
}
241246
}
242247

src/components/app/details/triggerView/DeployImageModal/types.ts

Lines changed: 11 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -45,30 +45,21 @@ export type DeployImageModalProps = {
4545
*/
4646
parentEnvironmentName: string
4747
triggerType: CommonNodeAttr['triggerType']
48+
isRedirectedFromAppDetails?: boolean
4849
} & (
4950
| {
50-
isRedirectedFromAppDetails: true
51-
onClickApprovalNode?: never
51+
showPluginWarningBeforeTrigger: boolean
52+
consequence: ConsequenceType
53+
configurePluginURL: string
54+
isTriggerBlockedDueToPlugin: boolean
5255
}
5356
| {
54-
isRedirectedFromAppDetails?: never
55-
onClickApprovalNode: (cdNodeId: number) => void
57+
showPluginWarningBeforeTrigger?: never
58+
consequence?: never
59+
configurePluginURL?: never
60+
isTriggerBlockedDueToPlugin?: never
5661
}
57-
) &
58-
(
59-
| {
60-
showPluginWarningBeforeTrigger: boolean
61-
consequence: ConsequenceType
62-
configurePluginURL: string
63-
isTriggerBlockedDueToPlugin: boolean
64-
}
65-
| {
66-
showPluginWarningBeforeTrigger?: never
67-
consequence?: never
68-
configurePluginURL?: never
69-
isTriggerBlockedDueToPlugin?: never
70-
}
71-
)
62+
)
7263

7364
export type DeployImageHeaderProps = Pick<
7465
DeployImageModalProps,
@@ -150,7 +141,6 @@ export type DeployImageContentProps = Pick<
150141
| 'isTriggerBlockedDueToPlugin'
151142
| 'configurePluginURL'
152143
| 'triggerType'
153-
| 'onClickApprovalNode'
154144
> &
155145
Pick<RuntimeParamsSidebarProps, 'appName'> & {
156146
materialResponse: CDMaterialResponseType | null
@@ -241,6 +231,7 @@ export interface BuildDeployModalProps {
241231
workflows: WorkflowType[]
242232
isVirtualEnvironment: boolean
243233
envId: number
234+
handleSuccess: () => void
244235
}
245236

246237
export type GetInitialAppListProps =

src/components/app/details/triggerView/TriggerView.service.ts

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,9 @@ import { getHostURLConfiguration } from '@Services/service'
1010
import { UseTriggerViewServicesParams } from './types'
1111
import { getTriggerWorkflows } from './workflow.service'
1212

13+
const DEFAULT_POLLING_INTERVAL = 30000
14+
const PROGRESSING_POLLING_INTERVAL = 10000
15+
1316
export const useTriggerViewServices = ({ appId, isJobView, filteredEnvIds }: UseTriggerViewServicesParams) => {
1417
const queryClient = useQueryClient()
1518
const refetchIntervalRef = useRef<number>(30000)
@@ -82,7 +85,10 @@ export const useTriggerViewServices = ({ appId, isJobView, filteredEnvIds }: Use
8285
response.result?.cdWorkflowStatus ?? [],
8386
workflows,
8487
)
85-
refetchIntervalRef.current = processedWorkflowsData.cicdInProgress ? 10000 : 30000
88+
refetchIntervalRef.current = processedWorkflowsData.cicdInProgress
89+
? PROGRESSING_POLLING_INTERVAL
90+
: DEFAULT_POLLING_INTERVAL
91+
8692
return processedWorkflowsData.workflows || []
8793
},
8894
refetchInterval: refetchIntervalRef.current,

src/components/app/details/triggerView/TriggerView.tsx

Lines changed: 2 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import {
2222
DeploymentNodeType,
2323
DocLink,
2424
ErrorScreenManager,
25-
handleAnalyticsEvent,
2625
Progressing,
2726
} from '@devtron-labs/devtron-fe-common-lib'
2827

@@ -41,7 +40,7 @@ import { getModuleInfo } from '../../../v2/devtronStackManager/DevtronStackManag
4140
import { AppNotConfigured } from '../appDetails/AppDetails'
4241
import { Workflow } from './workflow/Workflow'
4342
import { BuildImageModal } from './BuildImageModal'
44-
import { TRIGGER_VIEW_GA_EVENTS, TRIGGER_VIEW_PARAMS } from './Constants'
43+
import { TRIGGER_VIEW_PARAMS } from './Constants'
4544
import { DeployImageModal } from './DeployImageModal'
4645
import { useTriggerViewServices } from './TriggerView.service'
4746
import { getSelectedNodeFromWorkflows, shouldRenderWebhookAddImageModal } from './TriggerView.utils'
@@ -88,37 +87,6 @@ const TriggerView = ({ isJobView, filteredEnvIds }: TriggerViewProps) => {
8887
history.push(`${match.url}${URLS.BUILD}/${ciNodeId}`)
8988
}
9089

91-
const onClickApprovalNode = (cdNodeId: number) => {
92-
handleAnalyticsEvent(TRIGGER_VIEW_GA_EVENTS.ApprovalNodeClicked)
93-
94-
const newParams = new URLSearchParams([
95-
[TRIGGER_VIEW_PARAMS.APPROVAL_NODE, cdNodeId.toString()],
96-
[TRIGGER_VIEW_PARAMS.APPROVAL_STATE, TRIGGER_VIEW_PARAMS.APPROVAL],
97-
])
98-
history.push({ search: newParams.toString() })
99-
}
100-
101-
const onClickCDMaterial = (cdNodeId: number, nodeType: DeploymentNodeType) => {
102-
handleAnalyticsEvent(TRIGGER_VIEW_GA_EVENTS.ImageClicked)
103-
104-
const newParams = new URLSearchParams([
105-
[TRIGGER_VIEW_PARAMS.CD_NODE, cdNodeId.toString()],
106-
[TRIGGER_VIEW_PARAMS.NODE_TYPE, nodeType],
107-
])
108-
history.push({
109-
search: newParams.toString(),
110-
})
111-
}
112-
113-
const onClickRollbackMaterial = (cdNodeId: number) => {
114-
handleAnalyticsEvent(TRIGGER_VIEW_GA_EVENTS.RollbackClicked)
115-
116-
const newParams = new URLSearchParams([[TRIGGER_VIEW_PARAMS.ROLLBACK_NODE, cdNodeId.toString()]])
117-
history.push({
118-
search: newParams.toString(),
119-
})
120-
}
121-
12290
const closeApprovalModal = (e: React.MouseEvent): void => {
12391
e.stopPropagation()
12492
history.push({
@@ -186,7 +154,6 @@ const TriggerView = ({ isJobView, filteredEnvIds }: TriggerViewProps) => {
186154
isTriggerBlockedDueToPlugin={cdNode?.showPluginWarning && cdNode?.isTriggerBlocked}
187155
triggerType={cdNode.triggerType}
188156
parentEnvironmentName={cdNode.parentEnvironmentName}
189-
onClickApprovalNode={onClickApprovalNode}
190157
/>
191158
)
192159
}
@@ -254,9 +221,6 @@ const TriggerView = ({ isJobView, filteredEnvIds }: TriggerViewProps) => {
254221
appId={+appId}
255222
handleWebhookAddImageClick={handleWebhookAddImageClick}
256223
openCIMaterialModal={openCIMaterialModal}
257-
onClickApprovalNode={onClickApprovalNode}
258-
onClickCDMaterial={onClickCDMaterial}
259-
onClickRollbackMaterial={onClickRollbackMaterial}
260224
reloadTriggerView={reloadWorkflows}
261225
/>
262226
))}
@@ -282,7 +246,7 @@ const TriggerView = ({ isJobView, filteredEnvIds }: TriggerViewProps) => {
282246
}
283247

284248
if (workflowsError) {
285-
return <ErrorScreenManager code={workflowsError.code} />
249+
return <ErrorScreenManager code={workflowsError.code} reload={reloadWorkflows} />
286250
}
287251

288252
if (!workflows.length) {

0 commit comments

Comments
 (0)