Skip to content

Commit 32308de

Browse files
deo002heliocastro
authored andcommitted
fix(generatelicenseinfo): Optimize logic to reduce api calls
1 parent b59f167 commit 32308de

1 file changed

Lines changed: 28 additions & 3 deletions

File tree

src/app/[locale]/projects/generateSourceCode/[id]/components/GenerateSourceCodeBundle.tsx

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,6 +77,22 @@ function GenerateSourceCodeBundle({
7777
const [showProcessing, setShowProcessing] = useState(false)
7878
const [project, setProject] = useState<Project>()
7979

80+
const [linkedProjects, setLinkedProjects] = useState<Project[]>(() => [])
81+
const memoizedLinkedProjects = useMemo(
82+
() => linkedProjects,
83+
[
84+
linkedProjects,
85+
],
86+
)
87+
88+
const [attachmentUsages, setAttachmentUsages] = useState<AttachmentUsages | undefined>(undefined)
89+
const memoizedAttachmentUsages = useMemo(
90+
() => attachmentUsages,
91+
[
92+
attachmentUsages,
93+
],
94+
)
95+
8096
const [data, setData] = useState<NestedRows<TypedProject | TypedRelease | TypedAttachment>[]>(() => [])
8197

8298
const hasSourceUsageSet = (release: Release): boolean => {
@@ -181,11 +197,13 @@ function GenerateSourceCodeBundle({
181197
setProject(proj)
182198

183199
const attachmentUsages = (await responses[1].json()) as AttachmentUsages
200+
setAttachmentUsages(attachmentUsages)
184201

185202
const linkedProjects =
186203
searchParams.withSubProjects === 'true'
187204
? ((await responses[2].json()) as LinkedProjects)['_embedded']['sw360:projects']
188205
: ([] as Project[])
206+
setLinkedProjects(linkedProjects)
189207

190208
const saveUsages: SaveUsagesPayload = {
191209
selected: [],
@@ -213,14 +231,12 @@ function GenerateSourceCodeBundle({
213231
}
214232
}
215233
setSaveUsagesPayload(saveUsages)
216-
217-
buildTable(setData, attachmentUsages, linkedProjects, hideWithUsage)
218234
} catch (error) {
219235
if (error instanceof DOMException && error.name === 'AbortError') {
220236
return
221237
}
222238
const message = error instanceof Error ? error.message : String(error)
223-
throw new Error(message)
239+
MessageService.error(message)
224240
} finally {
225241
clearTimeout(timeout)
226242
setShowProcessing(false)
@@ -230,7 +246,16 @@ function GenerateSourceCodeBundle({
230246
}, [
231247
projectId,
232248
params,
249+
])
250+
251+
useEffect(() => {
252+
if (memoizedAttachmentUsages === undefined || memoizedLinkedProjects === undefined) return
253+
buildTable(setData, memoizedAttachmentUsages, memoizedLinkedProjects, hideWithUsage)
254+
}, [
255+
memoizedLinkedProjects,
256+
memoizedAttachmentUsages,
233257
hideWithUsage,
258+
saveUsagesPayload,
234259
])
235260

236261
// function to add attachments to a release

0 commit comments

Comments
 (0)