Skip to content

Commit d47f454

Browse files
authored
Merge pull request #212 from topcoder-platform/draft-links
Fix Draft Links -> PROD-2321
2 parents 938ce51 + 7ee6dde commit d47f454

File tree

4 files changed

+33
-14
lines changed

4 files changed

+33
-14
lines changed

src-ts/tools/work/work-lib/work-provider/work-functions/work-factory/work.factory.ts

Lines changed: 19 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ export function create(challenge: Challenge, workPrices: WorkPricesType): Work {
5757
cost: getCost(challenge, priceConfig, type),
5858
created: submittedDate,
5959
description: getDescription(challenge, type),
60+
draftStep: getDraftStep(challenge, status),
6061
id: challenge.id,
6162
messageCount: Number((Math.random() * 10).toFixed(0)), // TODO: real message count
6263
participantsCount: challenge.numOfRegistrants,
@@ -91,10 +92,16 @@ export function buildCreateBody(workTypeConfig: WorkTypeConfig): ChallengeCreate
9192
legacy: {
9293
selfService: true,
9394
},
94-
metadata: [{
95-
name: ChallengeMetadataName.intakeForm,
96-
value: JSON.stringify({ form }),
97-
}],
95+
metadata: [
96+
{
97+
name: ChallengeMetadataName.intakeForm,
98+
value: JSON.stringify({ form }),
99+
},
100+
{
101+
name: ChallengeMetadataName.currentStep,
102+
value: 'basicInfo',
103+
},
104+
],
98105
name: 'new-self-service-project',
99106
tags: workTypeConfig.tags,
100107
timelineTemplateId: workTypeConfig.timelineTemplateId,
@@ -478,6 +485,14 @@ function getDescription(challenge: Challenge, type: WorkType): string | undefine
478485
}
479486
}
480487

488+
function getDraftStep(challenge: Challenge, status: WorkStatus): string | undefined {
489+
490+
if (status !== WorkStatus.draft) { return undefined }
491+
492+
const currentStep: ChallengeMetadata | undefined = findMetadata(challenge, ChallengeMetadataName.currentStep)
493+
return currentStep?.value
494+
}
495+
481496
function getProgress(challenge: Challenge, workStatus: WorkStatus): WorkProgress {
482497

483498
const steps: ReadonlyArray<WorkProgressStep> = [

src-ts/tools/work/work-lib/work-provider/work-functions/work-store/work.model.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ export interface Work {
77
cost?: number
88
created: Date
99
description?: string
10+
draftStep?: string
1011
id: string
1112
messageCount?: number
1213
participantsCount?: number

src-ts/tools/work/work-self-service/intake-forms/bug-hunt/BugHuntIntakeForm.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,7 +66,7 @@ const BugHuntIntakeForm: React.FC = () => {
6666
})
6767

6868
const [selectedPackage, setSelectedPackage]: [PricePackageName, Dispatch<SetStateAction<PricePackageName>>]
69-
= useState<PricePackageName>(formValues.packageType)
69+
= useState<PricePackageName>(formValues?.packageType)
7070

7171
const formInputs: Array<FormInputModel> = formGetInputFields(formDef.groups)
7272
if (!workId && !challenge) {
@@ -90,7 +90,7 @@ const BugHuntIntakeForm: React.FC = () => {
9090

9191
setFormValues(formData)
9292

93-
if (formData.form.basicInfo.packageType !== selectedPackage) {
93+
if (formData?.form?.basicInfo.packageType && formData?.form?.basicInfo.packageType !== selectedPackage) {
9494
setSelectedPackage(formData.form.basicInfo.packageType)
9595
}
9696
}

src-ts/tools/work/work-table/WorkTable.tsx

Lines changed: 11 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import {
2121
WorkStatus,
2222
WorkStatusFilter,
2323
} from '../work-lib'
24+
import { WorkIntakeFormRoutes } from '../work-lib/work-provider/work-functions/work-store/work-intake-form-routes.config'
2425
import { selfServiceStartRoute, workDetailRoute } from '../work.routes'
2526

2627
import { workDashboardTabs } from './work-nav.config'
@@ -93,17 +94,19 @@ const WorkTable: FC<{}> = () => {
9394

9495
const isDraft: boolean = selectedWork.status === WorkStatus.draft
9596

97+
// TODO: move the tabs definition to src-ts
98+
// so we don't have to hard-code this tab id
99+
let url: string = workDetailRoute(selectedWork.id, selectedWork.status === WorkStatus.ready ? 'solutions' : undefined)
100+
96101
if (isDraft) {
97-
cacheChallengeId(selectedWork.id)
102+
if (selectedWork.draftStep) {
103+
url = `${WorkIntakeFormRoutes[selectedWork.type][selectedWork.draftStep]}/${selectedWork.id}`
104+
} else {
105+
cacheChallengeId(selectedWork.id)
106+
url = selfServiceStartRoute
107+
}
98108
}
99109

100-
// TODO: get these routes from an object/function that's not hard-coded
101-
const url: string = isDraft
102-
? selfServiceStartRoute
103-
// TODO: move the tabs definition to src-ts
104-
// so we don't have to hard-code this tab id
105-
: workDetailRoute(selectedWork.id, selectedWork.status === WorkStatus.ready ? 'solutions' : undefined)
106-
107110
navigate(url)
108111
}
109112

0 commit comments

Comments
 (0)