@@ -45,74 +45,84 @@ export const useRecoverabilityStore = defineStore("RecoverabilityStore", () => {
4545 watch ( pageNumber , ( ) => refresh ( ) ) ;
4646
4747 let controller : AbortController | null ;
48+
49+ function updateDateRangeForPeriod ( ) {
50+ if ( messageStatus !== FailedMessageStatus . Archived && messageStatus !== FailedMessageStatus . RetryIssued ) return ;
51+
52+ endDate . value = new Date ( ) ;
53+ const newStartDate = new Date ( ) ;
54+
55+ switch ( selectedPeriod . value ) {
56+ case "All Deleted" :
57+ case "All Pending Retries" :
58+ newStartDate . setHours ( newStartDate . getHours ( ) - 24 * 365 ) ;
59+ break ;
60+ case "Deleted in the last 2 Hours" :
61+ case "Retried in the last 2 Hours" :
62+ newStartDate . setHours ( newStartDate . getHours ( ) - 2 ) ;
63+ break ;
64+ case "Deleted in the last 1 Day" :
65+ case "Retried in the last 1 Day" :
66+ newStartDate . setHours ( newStartDate . getHours ( ) - 24 ) ;
67+ break ;
68+ case "Deleted in the last 7 days" :
69+ case "Retried in the last 7 Days" :
70+ newStartDate . setHours ( newStartDate . getHours ( ) - 24 * 7 ) ;
71+ break ;
72+ }
73+ startDate . value = newStartDate ;
74+ }
75+
76+ function buildAdditionalQuery ( ) : string {
77+ switch ( messageStatus ) {
78+ case FailedMessageStatus . Archived :
79+ return `&modified=${ dateRange . value } ` ;
80+ case FailedMessageStatus . RetryIssued : {
81+ const searchPhrase = selectedQueue . value === "empty" ? "" : selectedQueue . value ;
82+ return `&queueaddress=${ searchPhrase } &modified=${ dateRange . value } ` ;
83+ }
84+ default :
85+ return "" ;
86+ }
87+ }
88+
89+ function mergeMessageState ( previousMessages : ExtendedFailedMessage [ ] , newMessages : ExtendedFailedMessage [ ] ) {
90+ if ( ! previousMessages . length || ! newMessages . length ) return ;
91+
92+ previousMessages . forEach ( ( previousMessage ) => {
93+ const receivedMessage = newMessages . find ( ( m ) => m . id === previousMessage . id ) ;
94+ if ( ! receivedMessage ) return ;
95+
96+ if ( previousMessage . last_modified === receivedMessage . last_modified ) {
97+ receivedMessage . retryInProgress = previousMessage . retryInProgress ;
98+ receivedMessage . deleteInProgress = previousMessage . deleteInProgress ;
99+ receivedMessage . restoreInProgress = previousMessage . restoreInProgress ;
100+ receivedMessage . submittedForRetrial = previousMessage . submittedForRetrial ;
101+ receivedMessage . resolved = previousMessage . resolved ;
102+ }
103+
104+ receivedMessage . selected = previousMessage . selected ;
105+ } ) ;
106+ }
107+
48108 async function refresh ( ) {
49109 try {
50110 if ( ! messageStatus ) return ;
51- if ( messageStatus === FailedMessageStatus . Archived || messageStatus === FailedMessageStatus . RetryIssued ) {
52- endDate . value = new Date ( ) ;
53- const newStartDate = new Date ( ) ;
54-
55- switch ( selectedPeriod . value ) {
56- case "All Deleted" :
57- case "All Pending Retries" :
58- newStartDate . setHours ( newStartDate . getHours ( ) - 24 * 365 ) ;
59- break ;
60- case "Deleted in the last 2 Hours" :
61- case "Retried in the last 2 Hours" :
62- newStartDate . setHours ( newStartDate . getHours ( ) - 2 ) ;
63- break ;
64- case "Deleted in the last 1 Day" :
65- case "Retried in the last 1 Day" :
66- newStartDate . setHours ( newStartDate . getHours ( ) - 24 ) ;
67- break ;
68- case "Deleted in the last 7 days" :
69- case "Retried in the last 7 Days" :
70- newStartDate . setHours ( newStartDate . getHours ( ) - 24 * 7 ) ;
71- break ;
72- }
73- startDate . value = newStartDate ;
74- }
75- const additionalQuery = ( ( ) => {
76- switch ( messageStatus ) {
77- case FailedMessageStatus . Archived :
78- return `&modified=${ dateRange . value } ` ;
79- case FailedMessageStatus . RetryIssued : {
80- const searchPhrase = selectedQueue . value === "empty" ? "" : selectedQueue . value ;
81- return `&queueaddress=${ searchPhrase } &modified=${ dateRange . value } ` ;
82- }
83- default :
84- return "" ;
85- }
86- } ) ( ) ;
111+
112+ updateDateRangeForPeriod ( ) ;
113+ const additionalQuery = buildAdditionalQuery ( ) ;
87114
88115 controller = new AbortController ( ) ;
89116 if ( groupId . value && ! groupName . value ) loadGroupDetails ( groupId . value ) ;
117+
90118 const [ response , data ] = await serviceControlClient . fetchTypedFromServiceControl < ExtendedFailedMessage [ ] > (
91119 `${ groupId . value ? `recoverability/groups/${ groupId . value } /` : "" } errors?status=${ messageStatus } &page=${ pageNumber . value } &per_page=${ perPage } &sort=${ sortBy . value } &direction=${ sortDirection . value } ${ additionalQuery } ` ,
92120 controller . signal
93121 ) ;
94122 controller = null ;
95123
96124 totalCount . value = parseInt ( response . headers . get ( "Total-Count" ) ?? "0" ) ;
97-
98- if ( messages . value . length && data . length ) {
99- // merge the previously selected messages into the new list so we can replace them
100- messages . value . forEach ( ( previousMessage ) => {
101- const receivedMessage = data . find ( ( m ) => m . id === previousMessage . id ) ;
102- if ( receivedMessage ) {
103- if ( previousMessage . last_modified === receivedMessage . last_modified ) {
104- receivedMessage . retryInProgress = previousMessage . retryInProgress ;
105- receivedMessage . deleteInProgress = previousMessage . deleteInProgress ;
106- receivedMessage . restoreInProgress = previousMessage . restoreInProgress ;
107- receivedMessage . submittedForRetrial = previousMessage . submittedForRetrial ;
108- receivedMessage . resolved = previousMessage . resolved ;
109- }
110-
111- receivedMessage . selected = previousMessage . selected ;
112- }
113- } ) ;
114- }
115-
125+ mergeMessageState ( messages . value , data ) ;
116126 messages . value = updateMessages ( data ) ;
117127 loaded = true ;
118128 } catch ( err ) {
0 commit comments