Skip to content

Commit acab1ce

Browse files
authored
Merge pull request #2738 from Particular/john/small_refactor
2 parents 0003bd4 + 1784723 commit acab1ce

File tree

4 files changed

+68
-58
lines changed

4 files changed

+68
-58
lines changed

src/Frontend/src/components/failedmessages/DeletedMessages.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ const POLLING_INTERVAL_NORMAL = 5000;
2020
const POLLING_INTERVAL_FAST = 1000;
2121
2222
const loading = ref(false);
23-
const { autoRefresh, isRefreshing, updateInterval } = useStoreAutoRefresh("messagesStore", useRecoverabilityStore, POLLING_INTERVAL_NORMAL);
23+
const { autoRefresh, isRefreshing, updateInterval } = useStoreAutoRefresh("recoverabilityStore", useRecoverabilityStore, POLLING_INTERVAL_NORMAL);
2424
const { store } = autoRefresh();
2525
const { messages, groupId, groupName, totalCount, pageNumber, selectedPeriod } = storeToRefs(store);
2626

src/Frontend/src/components/failedmessages/FailedMessages.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ const POLLING_INTERVAL_FAST = 1000;
2828
const messageStore = useMessageStore();
2929
const messageGroupClient = createMessageGroupClient();
3030
const loading = ref(false);
31-
const { autoRefresh, isRefreshing, updateInterval } = useStoreAutoRefresh("messagesStore", useRecoverabilityStore, POLLING_INTERVAL_NORMAL);
31+
const { autoRefresh, isRefreshing, updateInterval } = useStoreAutoRefresh("recoverabilityStore", useRecoverabilityStore, POLLING_INTERVAL_NORMAL);
3232
const { store } = autoRefresh();
3333
const { messages, groupId, groupName, totalCount, pageNumber } = storeToRefs(store);
3434

src/Frontend/src/components/failedmessages/PendingRetries.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ import { useStoreAutoRefresh } from "@/composables/useAutoRefresh";
2121
import { RetryPeriodOption, useRecoverabilityStore } from "@/stores/RecoverabilityStore";
2222
2323
const loading = ref(false);
24-
const { autoRefresh, isRefreshing } = useStoreAutoRefresh("messagesStore", useRecoverabilityStore, 5000);
24+
const { autoRefresh, isRefreshing } = useStoreAutoRefresh("recoverabilityStore", useRecoverabilityStore, 5000);
2525
const { store } = autoRefresh();
2626
const { messages, totalCount, pageNumber, selectedPeriod, selectedQueue, endpoints } = storeToRefs(store);
2727
const configurationStore = useConfigurationStore();

src/Frontend/src/stores/RecoverabilityStore.ts

Lines changed: 65 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)