@@ -17,6 +17,7 @@ export const useSagaDiagramStore = defineStore("SagaDiagramStore", () => {
17
17
const sagaHistory = ref < SagaHistory | null > ( null ) ;
18
18
const sagaId = ref < string | null > ( null ) ;
19
19
const loading = ref ( false ) ;
20
+ const messageDataLoading = ref ( false ) ;
20
21
const error = ref < string | null > ( null ) ;
21
22
const showMessageData = ref ( false ) ;
22
23
const fetchedMessages = ref ( new Set < string > ( ) ) ;
@@ -51,6 +52,8 @@ export const useSagaDiagramStore = defineStore("SagaDiagramStore", () => {
51
52
52
53
try {
53
54
const response = await useFetchFromServiceControl ( `sagas/${ id } ` ) ;
55
+ //sleep the tread for 1 second
56
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) ) ;
54
57
55
58
if ( response . status === 404 ) {
56
59
sagaHistory . value = null ;
@@ -79,8 +82,6 @@ export const useSagaDiagramStore = defineStore("SagaDiagramStore", () => {
79
82
80
83
async function fetchSagaMessageData ( message : SagaMessage ) : Promise < SagaMessageData > {
81
84
const bodyUrl = ( message . body_url ?? formatUrl ( MessageBodyEndpoint , message . message_id ) ) . replace ( / ^ \/ / , "" ) ;
82
- loading . value = true ;
83
- error . value = null ;
84
85
85
86
try {
86
87
const response = await useFetchFromServiceControl ( bodyUrl , { cache : "no-store" } ) ;
@@ -110,8 +111,6 @@ export const useSagaDiagramStore = defineStore("SagaDiagramStore", () => {
110
111
} catch ( e ) {
111
112
error . value = e instanceof Error ? e . message : "Unknown error occurred" ;
112
113
return createEmptyMessageData ( message . message_id ) ;
113
- } finally {
114
- loading . value = false ;
115
114
}
116
115
}
117
116
@@ -202,50 +201,62 @@ export const useSagaDiagramStore = defineStore("SagaDiagramStore", () => {
202
201
}
203
202
204
203
async function fetchMessagesData ( history : SagaHistory ) {
205
- // Get all messages from changes array - both initiating and outgoing
206
- const messagesToFetch = history . changes . flatMap ( ( change ) => {
207
- const messages : SagaMessage [ ] = [ ] ;
204
+ messageDataLoading . value = true ;
205
+ error . value = null ;
208
206
209
- // Add initiating message if it exists and hasn't been fetched
210
- if ( change . initiating_message && ! fetchedMessages . value . has ( change . initiating_message . message_id ) ) {
211
- messages . push ( change . initiating_message ) ;
212
- }
207
+ await new Promise ( ( resolve ) => setTimeout ( resolve , 5000 ) ) ;
213
208
214
- // Add all unfetched outgoing messages
215
- if ( change . outgoing_messages ) {
216
- messages . push ( ...change . outgoing_messages . filter ( ( msg ) => ! fetchedMessages . value . has ( msg . message_id ) ) ) ;
217
- }
218
- return messages ;
219
- } ) ;
220
-
221
- // Check if any messages need body_url
222
- const needsBodyUrl = messagesToFetch . every ( ( msg ) => ! msg . body_url ) ;
223
- if ( needsBodyUrl && messagesToFetch . length > 0 ) {
224
- const auditMessages = await getAuditMessages ( sagaId . value ! ) ;
225
- messagesToFetch . forEach ( ( message ) => {
226
- const auditMessage = auditMessages . find ( ( x : Message ) => x . message_id === message . message_id ) ;
227
- if ( auditMessage ) {
228
- message . body_url = auditMessage . body_url ;
209
+ try {
210
+ // Get all messages from changes array - both initiating and outgoing
211
+ const messagesToFetch = history . changes . flatMap ( ( change ) => {
212
+ const messages : SagaMessage [ ] = [ ] ;
213
+
214
+ // Add initiating message if it exists and hasn't been fetched
215
+ if ( change . initiating_message && ! fetchedMessages . value . has ( change . initiating_message . message_id ) ) {
216
+ messages . push ( change . initiating_message ) ;
217
+ }
218
+
219
+ // Add all unfetched outgoing messages
220
+ if ( change . outgoing_messages ) {
221
+ messages . push ( ...change . outgoing_messages . filter ( ( msg ) => ! fetchedMessages . value . has ( msg . message_id ) ) ) ;
229
222
}
223
+ return messages ;
230
224
} ) ;
231
- }
232
225
233
- // Fetch data for each unfetched message in parallel and store results
234
- const fetchPromises = messagesToFetch . map ( async ( message ) => {
235
- const data = await fetchSagaMessageData ( message ) ;
236
- fetchedMessages . value . add ( message . message_id ) ;
237
- return data ;
238
- } ) ;
226
+ // Check if any messages need body_url
227
+ const needsBodyUrl = messagesToFetch . every ( ( msg ) => ! msg . body_url ) ;
228
+ if ( needsBodyUrl && messagesToFetch . length > 0 ) {
229
+ const auditMessages = await getAuditMessages ( sagaId . value ! ) ;
230
+ messagesToFetch . forEach ( ( message ) => {
231
+ const auditMessage = auditMessages . find ( ( x : Message ) => x . message_id === message . message_id ) ;
232
+ if ( auditMessage ) {
233
+ message . body_url = auditMessage . body_url ;
234
+ }
235
+ } ) ;
236
+ }
237
+
238
+ // Fetch data for each unfetched message in parallel and store results
239
+ const fetchPromises = messagesToFetch . map ( async ( message ) => {
240
+ const data = await fetchSagaMessageData ( message ) ;
241
+ fetchedMessages . value . add ( message . message_id ) ;
242
+ return data ;
243
+ } ) ;
239
244
240
- const newMessageData = await Promise . all ( fetchPromises ) ;
241
- // Add new message data to the existing array
242
- messagesData . value = [ ...messagesData . value , ...newMessageData ] ;
245
+ const newMessageData = await Promise . all ( fetchPromises ) ;
246
+ // Add new message data to the existing array
247
+ messagesData . value = [ ...messagesData . value , ...newMessageData ] ;
248
+ } catch ( e ) {
249
+ error . value = e instanceof Error ? e . message : "Unknown error occurred" ;
250
+ } finally {
251
+ messageDataLoading . value = false ;
252
+ }
243
253
}
244
254
245
255
return {
246
256
sagaHistory,
247
257
sagaId,
248
258
loading,
259
+ messageDataLoading,
249
260
error,
250
261
showMessageData,
251
262
messagesData,
0 commit comments