Skip to content

Commit b160456

Browse files
soujaycquirosj
authored andcommitted
Updated to read from message store
1 parent 6117adf commit b160456

File tree

3 files changed

+32
-25
lines changed

3 files changed

+32
-25
lines changed

src/Frontend/src/components/messages2/MessageView.vue

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ import { storeToRefs } from "pinia";
2121
import MetadataLabel from "@/components/messages2/MetadataLabel.vue";
2222
import { hexToCSSFilter } from "hex-to-css-filter";
2323
import LoadingOverlay from "@/components/LoadingOverlay.vue";
24+
import SagaDiagram from "./SagaDiagram.vue";
2425
2526
const route = useRoute();
2627
const id = computed(() => route.params.id as string);
@@ -58,6 +59,10 @@ const tabs = computed(() => {
5859
text: "Sequence Diagram",
5960
component: SequenceDiagram,
6061
});
62+
currentTabs.push({
63+
text: "Saga Diagram",
64+
component: SagaDiagram,
65+
});
6166
}
6267
6368
return currentTabs;

src/Frontend/src/components/messages2/SagaDiagram.vue

Lines changed: 14 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,4 @@
11
<script setup lang="ts">
2-
import Message from "@/resources/Message";
32
import { computed, onUnmounted, watch } from "vue";
43
import { RouterLink } from "vue-router";
54
import routeLinks from "@/router/routeLinks";
@@ -19,24 +18,20 @@ import SagaTimeoutIcon from "@/assets/SagaTimeoutIcon.svg";
1918
import ToolbarEndpointIcon from "@/assets/Shell_ToolbarEndpoint.svg";
2019
import NoSagaIcon from "@/assets/NoSaga.svg";
2120
import CopyClipboardIcon from "@/assets/Shell_CopyClipboard.svg";
21+
import { useMessageStore } from "@/stores/MessageStore";
22+
import { storeToRefs } from "pinia";
2223
23-
const props = withDefaults(
24-
defineProps<{
25-
message: Message;
26-
}>(),
27-
{
28-
message: () => ({}) as Message,
29-
}
30-
);
24+
const store = useMessageStore();
25+
const { state: messageState } = storeToRefs(store);
3126
3227
const sagaDiagramStore = useSagaDiagramStore();
3328
3429
//Watch for message and set saga ID when component mounts or message changes
3530
watch(
36-
() => props.message?.invoked_sagas,
31+
() => messageState.value.data.invoked_saga,
3732
(newSagas) => {
38-
if (newSagas && newSagas?.length > 0) {
39-
sagaDiagramStore.setSagaId(newSagas[0].saga_id);
33+
if (newSagas.has_saga) {
34+
sagaDiagramStore.setSagaId(newSagas.saga_id || "");
4035
} else {
4136
sagaDiagramStore.clearSagaHistory();
4237
}
@@ -150,7 +145,7 @@ interface SagaViewModel {
150145
MessageIdUrl: string;
151146
ParticipatedInSaga: boolean;
152147
HasSagaData: boolean;
153-
ShowNoPluginActiveLeged: boolean;
148+
ShowNoPluginActiveLegend: boolean;
154149
SagaCompleted: boolean;
155150
FormattedCompletionTime: string;
156151
SagaUpdates: SagaUpdateViewModel[];
@@ -160,15 +155,13 @@ const vm = computed<SagaViewModel>(() => {
160155
const completedUpdate = sagaDiagramStore.sagaHistory?.changes.find((update) => update.status === "completed");
161156
const completionTime = completedUpdate ? new Date(completedUpdate.finish_time) : null;
162157
163-
const invokedSaga = props.message?.invoked_sagas?.[0];
164-
165158
return {
166-
SagaTitle: typeToName(invokedSaga?.saga_type) || "Unknown saga",
167-
SagaGuid: invokedSaga?.saga_id || "Missing guid",
168-
MessageIdUrl: routeLinks.messages.successMessage.link(props.message.message_id, props.message.id),
169-
ParticipatedInSaga: invokedSaga !== undefined,
159+
SagaTitle: typeToName(messageState.value.data.invoked_saga.saga_type) || "Unknown saga",
160+
SagaGuid: messageState.value.data.invoked_saga.saga_id || "Missing guid",
161+
MessageIdUrl: messageState.value && routeLinks.messages.successMessage.link(messageState.value.data.message_id || "", messageState.value.data.id || ""),
162+
ParticipatedInSaga: messageState.value.data.invoked_saga.has_saga || false,
170163
HasSagaData: !!sagaDiagramStore.sagaHistory,
171-
ShowNoPluginActiveLeged: !sagaDiagramStore.sagaHistory && invokedSaga !== undefined,
164+
ShowNoPluginActiveLegend: (!sagaDiagramStore.sagaHistory && messageState.value.data.invoked_saga.has_saga) || false,
172165
SagaCompleted: !!completedUpdate,
173166
FormattedCompletionTime: completionTime ? `${completionTime.toLocaleDateString()} ${completionTime.toLocaleTimeString()}` : "",
174167
SagaUpdates: parseSagaUpdates(sagaDiagramStore.sagaHistory),
@@ -194,7 +187,7 @@ const vm = computed<SagaViewModel>(() => {
194187
</div>
195188

196189
<!-- Saga Audit Plugin Needed container -->
197-
<div v-if="vm.ShowNoPluginActiveLeged" class="body" role="status" aria-label="saga-plugin-needed">
190+
<div v-if="vm.ShowNoPluginActiveLegend" class="body" role="status" aria-label="saga-plugin-needed">
198191
<div class="saga-message">
199192
<div class="saga-message-container">
200193
<img class="saga-message-image" :src="NoSagaIcon" alt="" />

src/Frontend/src/stores/MessageStore.ts

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,12 +58,17 @@ interface Model {
5858
show_retry_confirm: boolean;
5959
show_edit_retry_modal: boolean;
6060
}>;
61+
invoked_saga: Partial<{
62+
has_saga: boolean;
63+
saga_id: string;
64+
saga_type: string;
65+
}>;
6166
}
6267

6368
export const useMessageStore = defineStore("MessageStore", () => {
6469
const headers = ref<DataContainer<Header[]>>({ data: [] });
6570
const body = ref<DataContainer<{ value?: string; content_type?: string }>>({ data: {} });
66-
const state = reactive<DataContainer<Model>>({ data: { failure_metadata: {}, failure_status: {}, dialog_status: {} } });
71+
const state = reactive<DataContainer<Model>>({ data: { failure_metadata: {}, failure_status: {}, dialog_status: {}, invoked_saga: {} } });
6772
let bodyLoadedId = "";
6873
let conversationLoadedId = "";
6974
const conversationData = ref<DataContainer<Message[]>>({ data: [] });
@@ -74,7 +79,7 @@ export const useMessageStore = defineStore("MessageStore", () => {
7479
configStore.loadConfig();
7580

7681
function reset() {
77-
state.data = { failure_metadata: {}, failure_status: {}, dialog_status: {} };
82+
state.data = { failure_metadata: {}, failure_status: {}, dialog_status: {}, invoked_saga: {} };
7883
headers.value.data = [];
7984
body.value.data = { value: "", content_type: "" };
8085
bodyLoadedId = "";
@@ -141,7 +146,7 @@ export const useMessageStore = defineStore("MessageStore", () => {
141146
state.not_found = headers.value.not_found = true;
142147
return;
143148
}
144-
149+
const invokedSaga = message?.invoked_sagas?.[0];
145150
state.data.message_id = message.message_id;
146151
state.data.conversation_id = message.conversation_id;
147152
state.data.body_url = message.body_url;
@@ -150,7 +155,11 @@ export const useMessageStore = defineStore("MessageStore", () => {
150155
state.data.receiving_endpoint = message.receiving_endpoint;
151156
state.data.status = message.status;
152157
state.data.processed_at = message.processed_at;
153-
158+
if (invokedSaga) {
159+
state.data.invoked_saga.has_saga = true;
160+
state.data.invoked_saga.saga_id = invokedSaga.saga_id;
161+
state.data.invoked_saga.saga_type = invokedSaga.saga_type;
162+
}
154163
headers.value.data = message.headers;
155164
} catch {
156165
state.failed_to_load = headers.value.failed_to_load = true;

0 commit comments

Comments
 (0)