Skip to content

Commit cf634b9

Browse files
Fix issues caused by master branch refactoring
1 parent c7d4692 commit cf634b9

File tree

8 files changed

+31
-152
lines changed

8 files changed

+31
-152
lines changed

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

Lines changed: 1 addition & 98 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import ServiceControlAvailable from "../ServiceControlAvailable.vue";
77
import MessageList, { IMessageList } from "./MessageList.vue";
88
import ConfirmDialog from "../ConfirmDialog.vue";
99
import PaginationStrip from "../../components/PaginationStrip.vue";
10-
import dayjs from "@/utils/dayjs";
11-
import { ExtendedFailedMessage } from "@/resources/FailedMessage";
10+
import { FailedMessageStatus } from "@/resources/FailedMessage";
1211
import { TYPE } from "vue-toastification";
1312
import FAIcon from "@/components/FAIcon.vue";
1413
import { faArrowRotateRight } from "@fortawesome/free-solid-svg-icons";
@@ -27,102 +26,6 @@ const { messages, groupId, groupName, totalCount, pageNumber, selectedPeriod } =
2726
2827
const showConfirmRestore = ref(false);
2928
const messageList = ref<IMessageList | undefined>();
30-
const messages = ref<ExtendedFailedMessage[]>([]);
31-
32-
watch(pageNumber, () => loadMessages());
33-
34-
const configurationStore = useConfigurationStore();
35-
const { configuration } = storeToRefs(configurationStore);
36-
const serviceControlStore = useServiceControlStore();
37-
38-
function loadMessages() {
39-
let startDate = new Date(0);
40-
const endDate = new Date();
41-
42-
switch (selectedPeriod.value) {
43-
case "All Deleted":
44-
startDate = new Date();
45-
startDate.setHours(startDate.getHours() - 24 * 365);
46-
break;
47-
case "Deleted in the last 2 Hours":
48-
startDate = new Date();
49-
startDate.setHours(startDate.getHours() - 2);
50-
break;
51-
case "Deleted in the last 1 Day":
52-
startDate = new Date();
53-
startDate.setHours(startDate.getHours() - 24);
54-
break;
55-
case "Deleted in the last 7 days":
56-
startDate = new Date();
57-
startDate.setHours(startDate.getHours() - 24 * 7);
58-
break;
59-
}
60-
return loadPagedMessages(groupId.value, pageNumber.value, "", "", startDate.toISOString(), endDate.toISOString());
61-
}
62-
63-
async function loadGroupDetails(groupId: string) {
64-
const [, data] = await serviceControlStore.fetchTypedFromServiceControl<FailureGroup>(`archive/groups/id/${groupId}`);
65-
groupName.value = data.title;
66-
}
67-
68-
function loadPagedMessages(groupId?: string, page: number = 1, sortBy: string = "modified", direction: string = "desc", startDate: string = new Date(0).toISOString(), endDate: string = new Date().toISOString()) {
69-
const dateRange = startDate + "..." + endDate;
70-
let loadGroupDetailsPromise;
71-
if (groupId && !groupName.value) {
72-
loadGroupDetailsPromise = loadGroupDetails(groupId);
73-
}
74-
75-
async function loadDelMessages() {
76-
try {
77-
const [response, data] = await serviceControlStore.fetchTypedFromServiceControl<ExtendedFailedMessage[]>(
78-
`${groupId ? `recoverability/groups/${groupId}/` : ""}errors?status=archived&page=${page}&per_page=${perPage}&sort=${sortBy}&direction=${direction}&modified=${dateRange}`
79-
);
80-
81-
totalCount.value = parseInt(response.headers.get("Total-Count") ?? "0");
82-
83-
if (messages.value.length && data.length) {
84-
// merge the previously selected messages into the new list so we can replace them
85-
messages.value.forEach((previousMessage) => {
86-
const receivedMessage = data.find((m) => m.id === previousMessage.id);
87-
if (receivedMessage) {
88-
if (previousMessage.last_modified === receivedMessage.last_modified) {
89-
receivedMessage.retryInProgress = previousMessage.retryInProgress;
90-
receivedMessage.deleteInProgress = previousMessage.deleteInProgress;
91-
}
92-
93-
receivedMessage.selected = previousMessage.selected;
94-
}
95-
});
96-
}
97-
messages.value = updateMessagesScheduledDeletionDate(data);
98-
} catch (err) {
99-
console.log(err);
100-
const result = {
101-
message: "error",
102-
};
103-
return result;
104-
}
105-
}
106-
107-
const loadDelMessagesPromise = loadDelMessages();
108-
109-
if (loadGroupDetailsPromise) {
110-
return Promise.all([loadGroupDetailsPromise, loadDelMessagesPromise]);
111-
}
112-
113-
return loadDelMessagesPromise;
114-
}
115-
116-
function updateMessagesScheduledDeletionDate(messages: ExtendedFailedMessage[]) {
117-
//check deletion time
118-
messages.forEach((message) => {
119-
message.error_retention_period = dayjs.duration(configuration.value?.data_retention.error_retention_period ?? "PT0S").asHours();
120-
const countdown = dayjs(message.last_modified).add(message.error_retention_period, "hours");
121-
message.delete_soon = countdown < dayjs();
122-
message.deleted_in = countdown.format();
123-
});
124-
return messages;
125-
}
12629
12730
function numberSelected() {
12831
return messageList.value?.getSelectedMessages()?.length ?? 0;

src/Frontend/src/components/platformcapabilities/capabilities/MonitoringCapability.ts

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,10 +2,10 @@ import { computed } from "vue";
22
import { StatusIndicator } from "@/components/platformcapabilities/types";
33
import { CapabilityStatus } from "@/components/platformcapabilities/constants";
44
import { storeToRefs } from "pinia";
5-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
65
import { useConnectionsAndStatsStore } from "@/stores/ConnectionsAndStatsStore";
76
import useMonitoringStoreAutoRefresh from "@/composables/useMonitoringStoreAutoRefresh";
87
import { type CapabilityComposable, type CapabilityStatusToStringMap, useCapabilityBase } from "./BaseCapability";
8+
import monitoringClient from "@/components/monitoring/monitoringClient";
99

1010
const MonitoringDescriptions: CapabilityStatusToStringMap = {
1111
[CapabilityStatus.EndpointsNotConfigured]:
@@ -39,9 +39,8 @@ enum MonitoringIndicatorTooltip {
3939
export function useMonitoringCapability(): CapabilityComposable {
4040
const { getIconForStatus, getDescriptionForStatus, getHelpButtonTextForStatus, getHelpButtonUrlForStatus, createIndicator } = useCapabilityBase();
4141

42-
// this tells us if monitoring is configured in ServiceControl
43-
const serviceControlStore = useServiceControlStore();
44-
const { isMonitoringEnabled } = storeToRefs(serviceControlStore);
42+
// this tells us if monitoring is configured in ServicePulse
43+
const isMonitoringEnabled = monitoringClient.isMonitoringEnabled;
4544

4645
// this tells us if there are any endpoints sending data
4746
// Uses auto-refresh to periodically check for monitored endpoints (every 5 seconds)
@@ -55,11 +54,11 @@ export function useMonitoringCapability(): CapabilityComposable {
5554

5655
// Determine overall monitoring status
5756
const monitoringStatus = computed(() => {
58-
const isConfiguredInServiceControl = isMonitoringEnabled.value;
57+
const isConfiguredInServicePulse = isMonitoringEnabled;
5958
const connectionSuccessful = monitoringConnectionState.connected && !monitoringConnectionState.unableToConnect;
6059

61-
// 1. Check if monitoring is configured in ServiceControl
62-
if (!isConfiguredInServiceControl) {
60+
// 1. Check if monitoring is configured in ServicePulse
61+
if (!isConfiguredInServicePulse) {
6362
return CapabilityStatus.InstanceNotConfigured;
6463
}
6564

@@ -95,11 +94,11 @@ export function useMonitoringCapability(): CapabilityComposable {
9594

9695
// Instance specific states
9796
const connectionSuccessful = monitoringConnectionState.connected && !monitoringConnectionState.unableToConnect;
98-
const instanceAvailable = isMonitoringEnabled.value && connectionSuccessful;
97+
const instanceAvailable = isMonitoringEnabled && connectionSuccessful;
9998

100-
const instanceTooltip = instanceAvailable ? MonitoringIndicatorTooltip.InstanceAvailable : !isMonitoringEnabled.value ? MonitoringIndicatorTooltip.InstanceNotConfigured : MonitoringIndicatorTooltip.InstanceUnavailable;
99+
const instanceTooltip = instanceAvailable ? MonitoringIndicatorTooltip.InstanceAvailable : !isMonitoringEnabled ? MonitoringIndicatorTooltip.InstanceNotConfigured : MonitoringIndicatorTooltip.InstanceUnavailable;
101100

102-
if (isMonitoringEnabled.value) {
101+
if (isMonitoringEnabled) {
103102
indicators.push(createIndicator("Instance", instanceAvailable ? CapabilityStatus.Available : CapabilityStatus.Unavailable, instanceTooltip));
104103
}
105104

Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
11
import { useAuditStore } from "@/stores/AuditStore";
2-
import { useAutoRefresh } from "./useAutoRefresh";
2+
import { useStoreAutoRefresh } from "./useAutoRefresh";
33

4-
let store: ReturnType<typeof useAuditStore> | null = null;
5-
6-
const refresh = () => {
7-
if (!store) {
8-
return Promise.resolve();
9-
}
10-
return store.checkForSuccessfulMessages();
4+
// Override the refresh method to use checkForSuccessfulMessages, which is more lightweight
5+
const useAuditStoreWithRefresh = () => {
6+
const store = useAuditStore();
7+
return Object.assign(store, { refresh: store.checkForSuccessfulMessages });
118
};
129

13-
const autoRefresh = useAutoRefresh("auditStoreSuccessfulMessages", refresh, 5000);
14-
15-
export default () => {
16-
store = useAuditStore();
17-
autoRefresh();
18-
return { store };
19-
};
10+
export default useStoreAutoRefresh("auditStoreSuccessfulMessages", useAuditStoreWithRefresh, 5000).autoRefresh;
Lines changed: 6 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,10 @@
11
import { useMonitoringStore } from "@/stores/MonitoringStore";
2-
import { useAutoRefresh } from "./useAutoRefresh";
2+
import { useStoreAutoRefresh } from "./useAutoRefresh";
33

4-
let store: ReturnType<typeof useMonitoringStore> | null = null;
5-
6-
const refresh = () => {
7-
if (!store) {
8-
return Promise.resolve();
9-
}
10-
return store.checkForMonitoredEndpoints();
4+
// Override the refresh method to use checkForMonitoredEndpoints, which is more lightweight
5+
const useMonitoringStoreWithRefresh = () => {
6+
const store = useMonitoringStore();
7+
return Object.assign(store, { refresh: store.checkForMonitoredEndpoints });
118
};
129

13-
const autoRefresh = useAutoRefresh("monitoringStoreMonitoredEndpoints", refresh, 5000);
14-
15-
export default () => {
16-
store = useMonitoringStore();
17-
autoRefresh();
18-
return { store };
19-
};
10+
export default useStoreAutoRefresh("monitoringStoreMonitoredEndpoints", useMonitoringStoreWithRefresh, 5000).autoRefresh;
Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
11
import { useRemoteInstancesStore } from "@/stores/RemoteInstancesStore";
22
import { useStoreAutoRefresh } from "./useAutoRefresh";
33

4-
export default useStoreAutoRefresh("remoteInstances", useRemoteInstancesStore, 5000);
4+
export default useStoreAutoRefresh("remoteInstances", useRemoteInstancesStore, 5000).autoRefresh;

src/Frontend/src/stores/AuditStore.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ export const useAuditStore = defineStore("AuditStore", () => {
3333
try {
3434
// Fetch the latest 10 messages and check if any are successful
3535
// todo: ideally we would want to filter successful messages server-side, but the API doesn't currently support that
36-
const [, data] = await serviceControlStore.fetchTypedFromServiceControl<Message[]>(`messages2/?page_size=10&sort=time_sent&direction=desc`);
36+
const [, data] = await serviceControlClient.fetchTypedFromServiceControl<Message[]>(`messages2/?page_size=10&sort=time_sent&direction=desc`);
3737
hasSuccessfulMessages.value = data?.some((msg) => msg.status === MessageStatus.Successful) ?? false;
3838
} catch {
3939
hasSuccessfulMessages.value = false;

src/Frontend/src/stores/MonitoringStore.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,12 +72,12 @@ export const useMonitoringStore = defineStore("MonitoringStore", () => {
7272

7373
async function checkForMonitoredEndpoints() {
7474
try {
75-
if (!serviceControlStore.isMonitoringEnabled || connectionStore.monitoringConnectionState.unableToConnect) {
75+
if (!monitoringClient.isMonitoringEnabled || connectionStore.monitoringConnectionState.unableToConnect) {
7676
hasMonitoredEndpoints.value = false;
7777
return;
7878
}
7979
// Minimal query: just need to check if any endpoints exist
80-
const [, data] = await serviceControlStore.fetchTypedFromMonitoring<Endpoint[]>(`monitored-endpoints?history=1`);
80+
const data = await monitoringClient.getMonitoredEndpoints(1);
8181
hasMonitoredEndpoints.value = (data?.length ?? 0) > 0;
8282
} catch {
8383
hasMonitoredEndpoints.value = false;

src/Frontend/src/stores/RemoteInstancesStore.ts

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,17 @@
1-
import { acceptHMRUpdate, defineStore, storeToRefs } from "pinia";
2-
import { ref, watch } from "vue";
1+
import { acceptHMRUpdate, defineStore } from "pinia";
2+
import { ref } from "vue";
33
import { RemoteInstance } from "@/resources/RemoteInstance";
4-
import { useServiceControlStore } from "./ServiceControlStore";
4+
import serviceControlClient from "@/components/serviceControlClient";
55

66
export const useRemoteInstancesStore = defineStore("RemoteInstancesStore", () => {
77
const remoteInstances = ref<RemoteInstance[] | null>(null);
88

9-
const serviceControlStore = useServiceControlStore();
10-
const { serviceControlUrl } = storeToRefs(serviceControlStore);
11-
129
async function refresh() {
13-
if (!serviceControlUrl.value) return;
14-
15-
const response = await serviceControlStore.fetchFromServiceControl("configuration/remotes");
10+
const response = await serviceControlClient.fetchFromServiceControl("configuration/remotes");
1611
remoteInstances.value = await response.json();
1712
}
1813

19-
watch(serviceControlUrl, refresh, { immediate: true });
14+
refresh();
2015

2116
return {
2217
remoteInstances,

0 commit comments

Comments
 (0)