@@ -7,12 +7,12 @@ import { AuthContext } from "@/auth";
77import { useContext } from "react" ;
88
99type ZenodoState =
10- | "PROCESS_INIT "
11- | "DEPOSIT_CREATED "
12- | "FILE_UPLOADED_TO_DEPOSIT "
13- | "DEPOSIT_PUBLISHED "
14- | "PROCESS_COMPLETED "
15- | "PROCESS_FAILED " ;
10+ | "PROCESS INIT "
11+ | "DEPOSIT CREATED "
12+ | "FILE UPLOADED TO DEPOSIT "
13+ | "DEPOSIT PUBLISHED "
14+ | "PROCESS COMPLETED "
15+ | "PROCESS FAILED " ;
1616
1717interface ZenodoModalProps {
1818 show : boolean ;
@@ -49,37 +49,48 @@ function ZenodoModal({
4949
5050 useEffect ( ( ) => {
5151 let interval : NodeJS . Timeout ;
52+ let timeout : NodeJS . Timeout ;
5253
5354 if (
5455 show &&
55- zenodoState !== "PROCESS_COMPLETED " &&
56- zenodoState !== "PROCESS_FAILED " &&
56+ zenodoState !== "PROCESS COMPLETED " &&
57+ zenodoState !== "PROCESS FAILED " &&
5758 onRefetch
5859 ) {
5960 interval = setInterval ( ( ) => {
6061 onRefetch ( ) ;
61- } , 1000 ) ; // Poll every 2 seconds
62+ } , 1000 ) ; // Poll every 1 second
63+
64+ // Stop polling after 1 minute to prevent infinite polling
65+ timeout = setTimeout ( ( ) => {
66+ if ( interval ) {
67+ clearInterval ( interval ) ;
68+ }
69+ } , 20000 ) ; // 20 seconds timeout
6270 }
6371
6472 return ( ) => {
6573 if ( interval ) {
6674 clearInterval ( interval ) ;
6775 }
76+ if ( timeout ) {
77+ clearTimeout ( timeout ) ;
78+ }
6879 } ;
6980 } , [ show , zenodoState , onRefetch ] ) ;
7081
7182 const isInProgressState = ( state : string ) : boolean => {
7283 return [
73- "PROCESS_INIT " ,
74- "DEPOSIT_CREATED " ,
75- "FILE_UPLOADED_TO_DEPOSIT " ,
76- "DEPOSIT_PUBLISHED " ,
84+ "PROCESS INIT " ,
85+ "DEPOSIT CREATED " ,
86+ "FILE UPLOADED TO DEPOSIT " ,
87+ "DEPOSIT PUBLISHED " ,
7788 ] . includes ( state ) ;
7889 } ;
7990
8091 // Reset publishing state when process fails
8192 useEffect ( ( ) => {
82- if ( zenodoState === "PROCESS_FAILED " && isPublishing ) {
93+ if ( zenodoState === "PROCESS FAILED " && isPublishing ) {
8394 setIsPublishing ( false ) ;
8495 }
8596 } , [ zenodoState , isPublishing ] ) ;
@@ -97,22 +108,22 @@ function ZenodoModal({
97108 const getStepStatus = ( stepState : ZenodoState ) => {
98109 // If we're publishing but no zenodo_publication_state yet, show first step as active
99110 if ( isPublishing && ! zenodoState ) {
100- return stepState === "PROCESS_INIT " ? "active" : "pending" ;
111+ return stepState === "PROCESS INIT " ? "active" : "pending" ;
101112 }
102113
103114 if ( ! zenodoState ) return "pending" ;
104115
105116 const stateOrder = [
106- "PROCESS_INIT " ,
107- "DEPOSIT_CREATED " ,
108- "FILE_UPLOADED_TO_DEPOSIT " ,
109- "DEPOSIT_PUBLISHED " ,
110- "PROCESS_COMPLETED " ,
117+ "PROCESS INIT " ,
118+ "DEPOSIT CREATED " ,
119+ "FILE UPLOADED TO DEPOSIT " ,
120+ "DEPOSIT PUBLISHED " ,
121+ "PROCESS COMPLETED " ,
111122 ] ;
112123 const currentIndex = stateOrder . indexOf ( zenodoState ) ;
113124 const stepIndex = stateOrder . indexOf ( stepState ) ;
114125
115- if ( zenodoState === "PROCESS_FAILED " ) return "failed" ;
126+ if ( zenodoState === "PROCESS FAILED " ) return "failed" ;
116127 if ( stepIndex < currentIndex ) return "completed" ;
117128 if ( stepIndex === currentIndex ) return "active" ;
118129 return "pending" ;
@@ -147,16 +158,16 @@ function ZenodoModal({
147158 if ( ! zenodoState ) return 0 ;
148159
149160 const stateOrder = [
150- "PROCESS_INIT " ,
151- "DEPOSIT_CREATED " ,
152- "FILE_UPLOADED_TO_DEPOSIT " ,
153- "DEPOSIT_PUBLISHED " ,
154- "PROCESS_COMPLETED " ,
161+ "PROCESS INIT " ,
162+ "DEPOSIT CREATED " ,
163+ "FILE UPLOADED TO DEPOSIT " ,
164+ "DEPOSIT PUBLISHED " ,
165+ "PROCESS COMPLETED " ,
155166 ] ;
156167 const currentIndex = stateOrder . indexOf ( zenodoState ) ;
157168
158- if ( zenodoState === "PROCESS_FAILED " ) return 100 ;
159- if ( zenodoState === "PROCESS_COMPLETED " ) return 100 ;
169+ if ( zenodoState === "PROCESS FAILED " ) return 100 ;
170+ if ( zenodoState === "PROCESS COMPLETED " ) return 100 ;
160171
161172 return Math . max ( 0 , ( currentIndex / ( stateOrder . length - 1 ) ) * 100 ) ;
162173 } ;
@@ -222,7 +233,7 @@ function ZenodoModal({
222233 < >
223234 { ( zenodoState &&
224235 ( isInProgressState ( zenodoState ) ||
225- zenodoState === "PROCESS_FAILED " ) ) ||
236+ zenodoState === "PROCESS FAILED " ) ) ||
226237 isPublishing ? (
227238 < >
228239 < div className = "mb-3" >
@@ -231,86 +242,86 @@ function ZenodoModal({
231242
232243 < div className = "steps-container" >
233244 < div
234- className = { `step-item d-flex align-items-center mb-2 ${ getStepStatus ( "PROCESS_INIT " ) } ` }
245+ className = { `step-item d-flex align-items-center mb-2 ${ getStepStatus ( "PROCESS INIT " ) } ` }
235246 >
236- { renderStepIcon ( getStepStatus ( "PROCESS_INIT " ) ) }
247+ { renderStepIcon ( getStepStatus ( "PROCESS INIT " ) ) }
237248 < span
238- className = { `ms-2 ${ [ "completed" , "active" ] . includes ( getStepStatus ( "PROCESS_INIT " ) ) ? "text-primary" : "" } ` }
249+ className = { `ms-2 ${ [ "completed" , "active" ] . includes ( getStepStatus ( "PROCESS INIT " ) ) ? "text-primary" : "" } ` }
239250 >
240251 Initializing Process
241252 </ span >
242253 </ div >
243254
244255 < div
245- className = { `step-item d-flex align-items-center mb-2 ${ getStepStatus ( "DEPOSIT_CREATED " ) } ` }
256+ className = { `step-item d-flex align-items-center mb-2 ${ getStepStatus ( "DEPOSIT CREATED " ) } ` }
246257 >
247- { renderStepIcon ( getStepStatus ( "DEPOSIT_CREATED " ) ) }
258+ { renderStepIcon ( getStepStatus ( "DEPOSIT CREATED " ) ) }
248259 < span
249- className = { `ms-2 ${ [ "completed" , "active" ] . includes ( getStepStatus ( "DEPOSIT_CREATED " ) ) ? "text-primary" : "" } ` }
260+ className = { `ms-2 ${ [ "completed" , "active" ] . includes ( getStepStatus ( "DEPOSIT CREATED " ) ) ? "text-primary" : "" } ` }
250261 >
251262 Creating Zenodo Deposit
252263 </ span >
253264 </ div >
254265
255266 < div
256- className = { `step-item d-flex align-items-center mb-2 ${ getStepStatus ( "FILE_UPLOADED_TO_DEPOSIT " ) } ` }
267+ className = { `step-item d-flex align-items-center mb-2 ${ getStepStatus ( "FILE UPLOADED TO DEPOSIT " ) } ` }
257268 >
258269 { renderStepIcon (
259- getStepStatus ( "FILE_UPLOADED_TO_DEPOSIT " ) ,
270+ getStepStatus ( "FILE UPLOADED TO DEPOSIT " ) ,
260271 ) }
261272 < span
262- className = { `ms-2 ${ [ "completed" , "active" ] . includes ( getStepStatus ( "FILE_UPLOADED_TO_DEPOSIT " ) ) ? "text-primary" : "" } ` }
273+ className = { `ms-2 ${ [ "completed" , "active" ] . includes ( getStepStatus ( "FILE UPLOADED TO DEPOSIT " ) ) ? "text-primary" : "" } ` }
263274 >
264275 Uploading Assessment File
265276 </ span >
266277 </ div >
267278
268279 < div
269- className = { `step-item d-flex align-items-center mb-2 ${ getStepStatus ( "DEPOSIT_PUBLISHED " ) } ` }
280+ className = { `step-item d-flex align-items-center mb-2 ${ getStepStatus ( "DEPOSIT PUBLISHED " ) } ` }
270281 >
271- { renderStepIcon ( getStepStatus ( "DEPOSIT_PUBLISHED " ) ) }
282+ { renderStepIcon ( getStepStatus ( "DEPOSIT PUBLISHED " ) ) }
272283 < span
273- className = { `ms-2 ${ [ "completed" , "active" ] . includes ( getStepStatus ( "DEPOSIT_PUBLISHED " ) ) ? "text-primary" : "" } ` }
284+ className = { `ms-2 ${ [ "completed" , "active" ] . includes ( getStepStatus ( "DEPOSIT PUBLISHED " ) ) ? "text-primary" : "" } ` }
274285 >
275286 Publishing to Repository
276287 </ span >
277288 </ div >
278289
279290 < div
280291 className = { `step-item d-flex align-items-center mb-2 ${
281- zenodoState === "PROCESS_COMPLETED "
292+ zenodoState === "PROCESS COMPLETED "
282293 ? "completed"
283- : zenodoState === "PROCESS_FAILED "
294+ : zenodoState === "PROCESS FAILED "
284295 ? "failed"
285296 : "pending"
286297 } `}
287298 >
288- { zenodoState === "PROCESS_COMPLETED " ? (
299+ { zenodoState === "PROCESS COMPLETED " ? (
289300 < FaCheck className = "text-success" />
290- ) : zenodoState === "PROCESS_FAILED " ? (
301+ ) : zenodoState === "PROCESS FAILED " ? (
291302 < FaTimes className = "text-danger" />
292303 ) : (
293304 < div className = "step-pending-icon" > </ div >
294305 ) }
295306 < span
296307 className = { `ms-2 ${
297- zenodoState === "PROCESS_COMPLETED "
308+ zenodoState === "PROCESS COMPLETED "
298309 ? "text-success fw-bold"
299- : zenodoState === "PROCESS_FAILED "
310+ : zenodoState === "PROCESS FAILED "
300311 ? "text-danger fw-bold"
301312 : ""
302313 } `}
303314 >
304- { zenodoState === "PROCESS_COMPLETED "
315+ { zenodoState === "PROCESS COMPLETED "
305316 ? "Successfully Published!"
306- : zenodoState === "PROCESS_FAILED "
317+ : zenodoState === "PROCESS FAILED "
307318 ? "Publishing Failed"
308319 : "Finalizing..." }
309320 </ span >
310321 </ div >
311322 </ div >
312323
313- { zenodoState === "PROCESS_FAILED " && (
324+ { zenodoState === "PROCESS FAILED " && (
314325 < Alert variant = "danger" className = "mt-3" >
315326 < small >
316327 < strong > Error:</ strong > Publishing to Zenodo failed.
@@ -319,11 +330,8 @@ function ZenodoModal({
319330 </ Alert >
320331 ) }
321332
322- { zenodoState === "PROCESS_COMPLETED " && zenodoUrl && (
333+ { zenodoState === "PROCESS COMPLETED " && zenodoUrl && (
323334 < Alert variant = "success" className = "mt-3" >
324- < Alert . Heading className = "h6" >
325- 🎉 Successfully Published!
326- </ Alert . Heading >
327335 < p className = "mb-2" >
328336 Your assessment has been successfully published to
329337 Zenodo.
@@ -375,9 +383,9 @@ function ZenodoModal({
375383 >
376384 { t ( "buttons.close" ) }
377385 </ Button >
378- { ! isPublished && zenodoState !== "PROCESS_COMPLETED " && (
386+ { ! isPublished && zenodoState !== "PROCESS COMPLETED " && (
379387 < Button
380- variant = { zenodoState === "PROCESS_FAILED " ? "warning" : "success" }
388+ variant = { zenodoState === "PROCESS FAILED " ? "warning" : "success" }
381389 onClick = { handlePublish }
382390 disabled = {
383391 isPublishing ||
@@ -397,7 +405,7 @@ function ZenodoModal({
397405 </ >
398406 ) : (
399407 < >
400- { zenodoState === "PROCESS_FAILED "
408+ { zenodoState === "PROCESS FAILED "
401409 ? "Retry Publishing to Zenodo"
402410 : "Request to Publish to Zenodo" }
403411 </ >
0 commit comments