Skip to content

Commit 0efe289

Browse files
committed
Refactor serviceControlStore to be a rest client instead
1 parent 265b96f commit 0efe289

40 files changed

+235
-323
lines changed

src/Frontend/src/components/AutoRefreshDataView.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { onMounted, onUnmounted, ref, watch } from "vue";
33
import ItemsPerPage from "@/components/ItemsPerPage.vue";
44
import PaginationStrip from "@/components/PaginationStrip.vue";
55
import type DataViewPageModel from "./DataViewPageModel";
6-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
6+
import serviceControlClient from "@/components/serviceControlClient";
77
88
const props = withDefaults(
99
defineProps<{
@@ -20,8 +20,6 @@ const props = withDefaults(
2020
let refreshTimer: number | undefined;
2121
const viewModel = defineModel<DataViewPageModel<T>>({ required: true });
2222
23-
const store = useServiceControlStore();
24-
2523
const pageNumber = ref(1);
2624
const itemsPerPage = ref(props.itemsPerPage);
2725
@@ -37,7 +35,7 @@ watch(itemsPerPage, () => loadData());
3735
watch(pageNumber, () => loadData());
3836
3937
async function loadData() {
40-
const [response, data] = await store.fetchTypedFromServiceControl<T[]>(`${props.apiUrl}?page=${pageNumber.value}&per_page=${itemsPerPage.value}`);
38+
const [response, data] = await serviceControlClient.fetchTypedFromServiceControl<T[]>(`${props.apiUrl}?page=${pageNumber.value}&per_page=${itemsPerPage.value}`);
4139
if (response.ok) {
4240
viewModel.value.totalCount = parseInt(response.headers.get("Total-Count") ?? "0");
4341
viewModel.value.data = data;

src/Frontend/src/components/BackendChecksNotifications.vue

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ import { useShowToast } from "@/composables/toast";
77
import { TYPE } from "vue-toastification";
88
import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndStatsAutoRefresh";
99
import useEnvironmentAndVersionsAutoRefresh from "@/composables/useEnvironmentAndVersionsAutoRefresh";
10-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
11-
import { storeToRefs } from "pinia";
10+
import serviceControlClient from "@/components/serviceControlClient";
1211
import monitoringClient from "./monitoring/monitoringClient";
1312
1413
const router = useRouter();
@@ -17,8 +16,6 @@ const connectionState = connectionStore.connectionState;
1716
const monitoringConnectionState = connectionStore.monitoringConnectionState;
1817
const { store: environmentStore } = useEnvironmentAndVersionsAutoRefresh();
1918
const environment = environmentStore.environment;
20-
const serviceControlStore = useServiceControlStore();
21-
const { serviceControlUrl } = storeToRefs(serviceControlStore);
2219
const primaryConnectionFailure = computed(() => connectionState.unableToConnect);
2320
const monitoringConnectionFailure = computed(() => monitoringConnectionState.unableToConnect);
2421
@@ -27,9 +24,9 @@ watch(primaryConnectionFailure, (newValue, oldValue) => {
2724
if (newValue !== oldValue && !(oldValue === null && newValue === false)) {
2825
const connectionUrl = router.resolve(routeLinks.configuration.connections.link).href;
2926
if (newValue) {
30-
useShowToast(TYPE.ERROR, "Error", `Could not connect to ServiceControl at ${serviceControlUrl.value}. <a class="btn btn-default" href="${connectionUrl}">View connection settings</a>`);
27+
useShowToast(TYPE.ERROR, "Error", `Could not connect to ServiceControl at ${serviceControlClient.url}. <a class="btn btn-default" href="${connectionUrl}">View connection settings</a>`);
3128
} else {
32-
useShowToast(TYPE.SUCCESS, "Success", `Connection to ServiceControl was successful at ${serviceControlUrl.value}.`);
29+
useShowToast(TYPE.SUCCESS, "Success", `Connection to ServiceControl was successful at ${serviceControlClient.url}.`);
3330
}
3431
}
3532
});

src/Frontend/src/components/PageFooter.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ import FAIcon from "@/components/FAIcon.vue";
66
import { faArrowTurnUp, faPlus } from "@fortawesome/free-solid-svg-icons";
77
import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndStatsAutoRefresh";
88
import useEnvironmentAndVersionsAutoRefresh from "@/composables/useEnvironmentAndVersionsAutoRefresh";
9-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
9+
import serviceControlClient from "@/components/serviceControlClient";
1010
import { storeToRefs } from "pinia";
1111
import { useConfigurationStore } from "@/stores/ConfigurationStore";
1212
import { useLicenseStore } from "@/stores/LicenseStore";
@@ -18,14 +18,12 @@ const monitoringConnectionState = connectionStore.monitoringConnectionState;
1818
const { store: environmentAndVersionsStore } = useEnvironmentAndVersionsAutoRefresh();
1919
const newVersions = environmentAndVersionsStore.newVersions;
2020
const environment = environmentAndVersionsStore.environment;
21-
const serviceControlStore = useServiceControlStore();
22-
const { serviceControlUrl } = storeToRefs(serviceControlStore);
2321
const licenseStore = useLicenseStore();
2422
const { licenseStatus, license } = licenseStore;
2523
const isMonitoringEnabled = monitoringClient.isMonitoringEnabled;
2624
2725
const scAddressTooltip = computed(() => {
28-
return `ServiceControl URL ${serviceControlUrl.value}`;
26+
return `ServiceControl URL ${serviceControlClient.url}`;
2927
});
3028
3129
const scMonitoringAddressTooltip = computed(() => {

src/Frontend/src/components/ServiceControlAvailable.vue

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22
import ConditionalRender from "@/components/ConditionalRender.vue";
33
import routeLinks from "@/router/routeLinks";
44
import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndStatsAutoRefresh";
5-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
6-
import { storeToRefs } from "pinia";
5+
import serviceControlClient from "@/components/serviceControlClient";
76
87
const { store: connectionStore } = useConnectionsAndStatsAutoRefresh();
98
const connectionState = connectionStore.connectionState;
10-
const serviceControlStore = useServiceControlStore();
11-
const { serviceControlUrl } = storeToRefs(serviceControlStore);
129
</script>
1310

1411
<template>
@@ -19,7 +16,7 @@ const { serviceControlUrl } = storeToRefs(serviceControlStore);
1916
<h1>Cannot connect to ServiceControl</h1>
2017
<p>
2118
ServicePulse is unable to connect to the ServiceControl instance at
22-
<span id="serviceControlUrl">{{ serviceControlUrl }}</span
19+
<span id="serviceControlUrl">{{ serviceControlClient.url }}</span
2320
>. Please ensure that ServiceControl is running and accessible from your machine.
2421
</p>
2522
<div class="action-toolbar">

src/Frontend/src/components/configuration/EndpointConnection.vue

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,7 @@ import { onMounted, ref } from "vue";
33
import LicenseNotExpired from "../LicenseNotExpired.vue";
44
import ServiceControlAvailable from "../ServiceControlAvailable.vue";
55
import CodeEditor from "@/components/CodeEditor.vue";
6-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
7-
import { storeToRefs } from "pinia";
6+
import serviceControlClient from "@/components/serviceControlClient";
87
import LoadingSpinner from "../LoadingSpinner.vue";
98
import monitoringClient, { MetricsConnectionDetails } from "../monitoring/monitoringClient";
109
@@ -13,9 +12,6 @@ interface ServiceControlInstanceConnection {
1312
errors: string[];
1413
}
1514
16-
const serviceControlStore = useServiceControlStore();
17-
const { serviceControlUrl } = storeToRefs(serviceControlStore);
18-
1915
const loading = ref(true);
2016
const showCodeOnlyTab = ref(true);
2117
const jsonSnippet = ref("");
@@ -88,10 +84,10 @@ async function serviceControlConnections() {
8884
8985
async function getServiceControlConnection() {
9086
try {
91-
const [, data] = await serviceControlStore.fetchTypedFromServiceControl<ServiceControlInstanceConnection>("connection");
87+
const [, data] = await serviceControlClient.fetchTypedFromServiceControl<ServiceControlInstanceConnection>("connection");
9288
return data;
9389
} catch {
94-
return { errors: [`Error reaching ServiceControl at ${serviceControlUrl.value} connection`] } as ServiceControlInstanceConnection;
90+
return { errors: [`Error reaching ServiceControl at ${serviceControlClient.url} connection`] } as ServiceControlInstanceConnection;
9591
}
9692
}
9793
</script>

src/Frontend/src/components/configuration/PlatformConnections.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,14 @@ import { ref } from "vue";
33
import { faCheck, faExclamationTriangle } from "@fortawesome/free-solid-svg-icons";
44
import FAIcon from "@/components/FAIcon.vue";
55
import useConnectionsAndStatsAutoRefresh from "@/composables/useConnectionsAndStatsAutoRefresh";
6-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
6+
import serviceControlClient from "@/components/serviceControlClient";
77
import monitoringClient from "../monitoring/monitoringClient";
88
99
const { store: connectionStore } = useConnectionsAndStatsAutoRefresh();
1010
const connectionState = connectionStore.connectionState;
1111
const monitoringConnectionState = connectionStore.monitoringConnectionState;
1212
13-
const serviceControlStore = useServiceControlStore();
14-
serviceControlStore.refresh();
15-
const localServiceControlUrl = ref(serviceControlStore.serviceControlUrl);
13+
const localServiceControlUrl = ref(serviceControlClient.url);
1614
const localMonitoringUrl = ref(monitoringClient.url);
1715
const isMonitoringDisabled = monitoringClient.isMonitoringDisabled;
1816
const testingServiceControl = ref(false);

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import { TYPE } from "vue-toastification";
1414
import FailureGroup from "@/resources/FailureGroup";
1515
import FAIcon from "@/components/FAIcon.vue";
1616
import { faArrowRotateRight } from "@fortawesome/free-solid-svg-icons";
17-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
17+
import serviceControlClient from "@/components/serviceControlClient";
1818
import { useConfigurationStore } from "@/stores/ConfigurationStore";
1919
import { storeToRefs } from "pinia";
2020
@@ -39,7 +39,6 @@ watch(pageNumber, () => loadMessages());
3939
4040
const configurationStore = useConfigurationStore();
4141
const { configuration } = storeToRefs(configurationStore);
42-
const serviceControlStore = useServiceControlStore();
4342
4443
function loadMessages() {
4544
let startDate = new Date(0);
@@ -67,7 +66,7 @@ function loadMessages() {
6766
}
6867
6968
async function loadGroupDetails(groupId: string) {
70-
const [, data] = await serviceControlStore.fetchTypedFromServiceControl<FailureGroup>(`archive/groups/id/${groupId}`);
69+
const [, data] = await serviceControlClient.fetchTypedFromServiceControl<FailureGroup>(`archive/groups/id/${groupId}`);
7170
groupName.value = data.title;
7271
}
7372
@@ -80,7 +79,7 @@ function loadPagedMessages(groupId?: string, page: number = 1, sortBy: string =
8079
8180
async function loadDelMessages() {
8281
try {
83-
const [response, data] = await serviceControlStore.fetchTypedFromServiceControl<ExtendedFailedMessage[]>(
82+
const [response, data] = await serviceControlClient.fetchTypedFromServiceControl<ExtendedFailedMessage[]>(
8483
`${groupId ? `recoverability/groups/${groupId}/` : ""}errors?status=archived&page=${page}&per_page=${perPage}&sort=${sortBy}&direction=${direction}&modified=${dateRange}`
8584
);
8685
@@ -152,7 +151,7 @@ async function restoreSelectedMessages() {
152151
selectedMessages.forEach((m) => (m.restoreInProgress = true));
153152
useShowToast(TYPE.INFO, "Info", `restoring ${selectedMessages.length} messages...`);
154153
155-
await serviceControlStore.patchToServiceControl(
154+
await serviceControlClient.patchToServiceControl(
156155
"errors/unarchive",
157156
selectedMessages.map((m) => m.id)
158157
);

src/Frontend/src/components/failedmessages/FailedMessageGroups.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@ import SortOptions, { SortDirection } from "@/resources/SortOptions";
1010
import GroupOperation from "@/resources/GroupOperation";
1111
import getSortFunction from "@/components/getSortFunction";
1212
import { faArrowDownAZ, faArrowDownZA, faArrowDownShortWide, faArrowDownWideShort, faArrowDown19, faArrowDown91 } from "@fortawesome/free-solid-svg-icons";
13-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
14-
15-
const serviceControlStore = useServiceControlStore();
13+
import serviceControlClient from "@/components/serviceControlClient";
1614
1715
const selectedClassifier = ref<string>("");
1816
const classifiers = ref<string[]>([]);
@@ -60,7 +58,7 @@ const sortOptions: SortOptions<GroupOperation>[] = [
6058
];
6159
6260
async function getGroupingClassifiers() {
63-
const [, data] = await serviceControlStore.fetchTypedFromServiceControl<string[]>("recoverability/classifiers");
61+
const [, data] = await serviceControlClient.fetchTypedFromServiceControl<string[]>("recoverability/classifiers");
6462
classifiers.value = data;
6563
}
6664

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,9 @@ import { TYPE } from "vue-toastification";
1616
import GroupOperation from "@/resources/GroupOperation";
1717
import { faArrowDownAZ, faArrowDownZA, faArrowDownShortWide, faArrowDownWideShort, faArrowRotateRight, faTrash, faDownload } from "@fortawesome/free-solid-svg-icons";
1818
import ActionButton from "@/components/ActionButton.vue";
19-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
19+
import serviceControlClient from "@/components/serviceControlClient";
2020
import { useMessageStore } from "@/stores/MessageStore";
2121
22-
const serviceControlStore = useServiceControlStore();
2322
const messageStore = useMessageStore();
2423
const messageGroupClient = createMessageGroupClient();
2524
@@ -62,7 +61,7 @@ function loadMessages() {
6261
}
6362
6463
async function loadGroupDetails(groupId: string) {
65-
const response = await serviceControlStore.fetchFromServiceControl(`recoverability/groups/id/${groupId}`);
64+
const response = await serviceControlClient.fetchFromServiceControl(`recoverability/groups/id/${groupId}`);
6665
const data = await response.json();
6766
groupName.value = data.title;
6867
}
@@ -78,7 +77,7 @@ function loadPagedMessages(groupId: string, page: number, sortBy?: string, direc
7877
7978
async function loadMessages() {
8079
try {
81-
const [response, data] = await serviceControlStore.fetchTypedFromServiceControl<ExtendedFailedMessage[]>(
80+
const [response, data] = await serviceControlClient.fetchTypedFromServiceControl<ExtendedFailedMessage[]>(
8281
`${groupId ? `recoverability/groups/${groupId}/` : ""}errors?status=${FailedMessageStatus.Unresolved}&page=${page}&per_page=${perPage}&sort=${sortBy}&direction=${direction}`
8382
);
8483
totalCount.value = parseInt(response.headers.get("Total-Count") ?? "");
@@ -214,7 +213,7 @@ async function deleteSelectedMessages() {
214213
const selectedMessages = messageList.value?.getSelectedMessages() ?? [];
215214
216215
useShowToast(TYPE.INFO, "Info", "Deleting " + selectedMessages.length + " messages...");
217-
await serviceControlStore.patchToServiceControl(
216+
await serviceControlClient.patchToServiceControl(
218217
"errors/archive",
219218
selectedMessages.map((m) => m.id)
220219
);

src/Frontend/src/components/failedmessages/LastTenOperations.vue

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -7,15 +7,13 @@ import RecoverabilityHistoryResponse from "@/resources/RecoverabilityHistoryResp
77
import FAIcon from "@/components/FAIcon.vue";
88
import { faAngleDown, faAngleRight, faEnvelope } from "@fortawesome/free-solid-svg-icons";
99
import { faClock } from "@fortawesome/free-regular-svg-icons";
10-
import { useServiceControlStore } from "@/stores/ServiceControlStore";
10+
import serviceControlClient from "@/components/serviceControlClient";
1111
1212
const historicOperations = ref<HistoricRetryOperation[]>([]);
1313
const showHistoricRetries = ref(false);
1414
15-
const serviceControlStore = useServiceControlStore();
16-
1715
async function getHistoricOperations() {
18-
const [, data] = await serviceControlStore.fetchTypedFromServiceControl<RecoverabilityHistoryResponse>("recoverability/history");
16+
const [, data] = await serviceControlClient.fetchTypedFromServiceControl<RecoverabilityHistoryResponse>("recoverability/history");
1917
historicOperations.value = data.historic_operations;
2018
}
2119

0 commit comments

Comments
 (0)