Skip to content

Commit 8c8e63e

Browse files
committed
A few small changes based on code review
1 parent cf44963 commit 8c8e63e

File tree

8 files changed

+59
-25
lines changed

8 files changed

+59
-25
lines changed

src/Frontend/src/components/failedmessages/EditMessageHeader.vue

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ import { computed, onMounted, ref, watch } from "vue";
33
44
interface MessageHeader {
55
key: string;
6-
value: string;
6+
value?: string;
77
isChanged: boolean;
88
isMarkedAsRemoved: boolean;
99
isLocked: boolean;
@@ -14,7 +14,7 @@ const settings = defineProps<{
1414
header: MessageHeader;
1515
}>();
1616
17-
let origHeaderValue: string;
17+
let origHeaderValue: string | undefined;
1818
const header = ref<MessageHeader>(settings.header);
1919
2020
const headerValue = computed(() => settings.header.value);

src/Frontend/src/components/failedmessages/EditRetryDialog.vue

Lines changed: 51 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,30 @@ const props = defineProps<{
2424
configuration: EditAndRetryConfig;
2525
}>();
2626
27-
const panel = ref();
28-
const localMessage = ref();
27+
interface LocalMessageState {
28+
isBodyChanged: boolean;
29+
isBodyEmpty: boolean;
30+
isContentTypeSupported: boolean;
31+
bodyContentType: string | undefined;
32+
bodyUnavailable: boolean;
33+
isEvent: boolean;
34+
retried: boolean;
35+
headers: HeaderWithEditing[];
36+
messageBody: string;
37+
}
38+
39+
const panel = ref(0);
40+
const localMessage = ref<LocalMessageState>({
41+
isBodyChanged: false,
42+
isBodyEmpty: false,
43+
isContentTypeSupported: false,
44+
bodyContentType: undefined,
45+
bodyUnavailable: true,
46+
isEvent: false,
47+
retried: false,
48+
headers: [],
49+
messageBody: "",
50+
});
2951
let origMessageBody: string;
3052
3153
const showEditAndRetryConfirmation = ref(false);
@@ -79,10 +101,12 @@ function findHeadersByKey(key: string) {
79101
80102
function getContentType() {
81103
const header = findHeadersByKey("NServiceBus.ContentType");
82-
return header.value;
104+
return header?.value;
83105
}
84106
85-
function isContentTypeSupported(contentType: string) {
107+
function isContentTypeSupported(contentType: string | undefined) {
108+
if (contentType === undefined) return false;
109+
86110
if (contentType.startsWith("text/")) return true;
87111
88112
const charsetUtf8 = "; charset=utf-8";
@@ -106,7 +130,7 @@ function isContentTypeSupported(contentType: string) {
106130
107131
function getMessageIntent() {
108132
const intent = findHeadersByKey("NServiceBus.MessageIntent");
109-
return intent?.value ?? "";
133+
return intent?.value;
110134
}
111135
112136
function removeHeadersMarkedAsRemoved() {
@@ -127,7 +151,17 @@ async function retryEditedMessage() {
127151
128152
function initializeMessageBodyAndHeaders() {
129153
origMessageBody = props.message.messageBody;
130-
localMessage.value = props.message;
154+
localMessage.value = {
155+
isBodyChanged: false,
156+
isBodyEmpty: false,
157+
isContentTypeSupported: false,
158+
bodyContentType: undefined,
159+
bodyUnavailable: props.message.bodyUnavailable,
160+
isEvent: false,
161+
retried: props.message.retried,
162+
headers: props.message.headers.map((header: Header) => ({ ...header })) as HeaderWithEditing[],
163+
messageBody: props.message.messageBody,
164+
};
131165
localMessage.value.isBodyEmpty = false;
132166
localMessage.value.isBodyChanged = false;
133167
@@ -136,7 +170,7 @@ function initializeMessageBodyAndHeaders() {
136170
localMessage.value.isContentTypeSupported = isContentTypeSupported(contentType);
137171
138172
const messageIntent = getMessageIntent();
139-
localMessage.value.isEvent = messageIntent.value === "Publish";
173+
localMessage.value.isEvent = messageIntent === "Publish";
140174
141175
for (let index = 0; index < props.message.headers.length; index++) {
142176
const header: HeaderWithEditing = props.message.headers[index] as HeaderWithEditing;
@@ -191,15 +225,15 @@ onMounted(() => {
191225
</div>
192226
<div class="row msg-editor-content">
193227
<div class="col-sm-12 no-side-padding">
194-
<div class="alert alert-warning" v-if="localMessage?.isEvent">
228+
<div class="alert alert-warning" v-if="localMessage.isEvent">
195229
<div class="col-sm-12">
196230
<i class="fa fa-exclamation-circle"></i> This message is an event. If it was already successfully handled by other subscribers, editing it now has the risk of changing the semantic meaning of the event and may result in
197231
altering the system behavior.
198232
</div>
199233
</div>
200-
<div class="alert alert-warning" v-if="!localMessage?.isContentTypeSupported || localMessage?.bodyUnavailable">
234+
<div class="alert alert-warning" v-if="!localMessage.isContentTypeSupported || localMessage.bodyUnavailable">
201235
<div role="status" aria-label="cannot edit message body" class="col-sm-12">
202-
<i class="fa fa-exclamation-circle"></i> Message body cannot be edited because content type "{{ localMessage?.bodyContentType }}" is not supported. Only messages with content types "application/json" and "text/xml" can be
236+
<i class="fa fa-exclamation-circle"></i> Message body cannot be edited because content type "{{ localMessage.bodyContentType }}" is not supported. Only messages with content types "application/json" and "text/xml" can be
203237
edited.
204238
</div>
205239
</div>
@@ -208,16 +242,16 @@ onMounted(() => {
208242
</div>
209243
<table role="tabpanel" class="table" v-if="panel === 1">
210244
<tbody>
211-
<tr class="interactiveList" v-for="header in localMessage?.headers" :key="header.key">
245+
<tr class="interactiveList" v-for="header in localMessage.headers" :key="header.key">
212246
<MessageHeader :header="header"></MessageHeader>
213247
</tr>
214248
</tbody>
215249
</table>
216-
<div role="tabpanel" v-if="panel === 2 && !localMessage?.bodyUnavailable" style="height: calc(100% - 260px)">
217-
<textarea aria-label="message body" class="form-control" :disabled="!localMessage?.isContentTypeSupported" v-model="localMessage.messageBody"></textarea>
218-
<span class="empty-error" v-if="localMessage?.isBodyEmpty"><i class="fa fa-exclamation-triangle"></i> Message body cannot be empty</span>
219-
<span class="reset-body" v-if="localMessage?.isBodyChanged"><i class="fa fa-undo" v-tippy="`Reset changes`"></i> <a @click="resetBodyChanges()" href="javascript:void(0)">Reset changes</a></span>
220-
<div class="alert alert-info" v-if="localMessage?.panel === 2 && localMessage.bodyUnavailable">{{ localMessage.bodyUnavailable }}</div>
250+
<div role="tabpanel" v-if="panel === 2 && !localMessage.bodyUnavailable" style="height: calc(100% - 260px)">
251+
<textarea aria-label="message body" class="form-control" :disabled="!localMessage.isContentTypeSupported" v-model="localMessage.messageBody"></textarea>
252+
<span class="empty-error" v-if="localMessage.isBodyEmpty"><i class="fa fa-exclamation-triangle"></i> Message body cannot be empty</span>
253+
<span class="reset-body" v-if="localMessage.isBodyChanged"><i class="fa fa-undo" v-tippy="`Reset changes`"></i> <a @click="resetBodyChanges()" href="javascript:void(0)">Reset changes</a></span>
254+
<div class="alert alert-info" v-if="panel === 2 && localMessage.bodyUnavailable">{{ localMessage.bodyUnavailable }}</div>
221255
</div>
222256
</div>
223257
</div>
@@ -226,7 +260,7 @@ onMounted(() => {
226260
</div>
227261
<div class="modal-footer" v-if="!showEditAndRetryConfirmation && !showCancelConfirmation">
228262
<button class="btn btn-default" @click="confirmCancel()">Cancel</button>
229-
<button class="btn btn-primary" :disabled="localMessage?.isBodyEmpty || localMessage?.bodyUnavailable" @click="confirmEditAndRetry()">Retry</button>
263+
<button class="btn btn-primary" :disabled="localMessage.isBodyEmpty || localMessage.bodyUnavailable" @click="confirmEditAndRetry()">Retry</button>
230264
</div>
231265
<div class="modal-footer cancel-confirmation" v-if="showCancelConfirmation">
232266
<div>Are you sure you want to cancel? Any changes you made will be lost.</div>

src/Frontend/src/components/failedmessages/MessageView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ import { ExtendedFailedMessage, FailedMessageError, FailedMessageStatus, isError
1818
import Message from "@/resources/Message";
1919
import { NServiceBusHeaders } from "@/resources/Header";
2020
import { useConfiguration } from "@/composables/configuration";
21-
import { useIsMassTransitConnected } from "@/composables/connectedApplications";
21+
import { useIsMassTransitConnected } from "@/composables/useIsMassTransitConnected";
2222
import { parse, stringify } from "lossless-json";
2323
2424
let refreshInterval: number | undefined;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ import SortOptions, { SortDirection } from "@/resources/SortOptions";
1616
import QueueAddress from "@/resources/QueueAddress";
1717
import { TYPE } from "vue-toastification";
1818
import GroupOperation from "@/resources/GroupOperation";
19-
import { useIsMassTransitConnected } from "@/composables/connectedApplications";
19+
import { useIsMassTransitConnected } from "@/composables/useIsMassTransitConnected";
2020
2121
let refreshInterval: number | undefined;
2222
let sortMethod: SortOptions<GroupOperation> | undefined;

src/Frontend/src/components/monitoring/MonitoringHead.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
<script setup lang="ts">
2-
import { useIsMassTransitConnected } from "@/composables/connectedApplications";
2+
import { useIsMassTransitConnected } from "@/composables/useIsMassTransitConnected";
33
import MonitoringFilter from "./MonitoringFilter.vue";
44
55
const isMassTransitConnected = useIsMassTransitConnected();

src/Frontend/src/composables/connectedApplications.ts renamed to src/Frontend/src/composables/useIsMassTransitConnected.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,5 @@ import { useConfiguration } from "./configuration";
33

44
export function useIsMassTransitConnected() {
55
const configuration = useConfiguration();
6-
return computed(() => configuration.value?.mass_transit_connector != null);
6+
return computed(() => configuration.value?.mass_transit_connector !== undefined);
77
}

src/Frontend/src/resources/LicenseInfo.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ export default interface LicenseInfo {
1414
}
1515

1616
export function typeText(license: LicenseInfo, configuration: Configuration | null) {
17-
if (license.license_type === "Non-Production Development" && configuration?.mass_transit_connector) {
17+
if (license.trial_license && configuration?.mass_transit_connector) {
1818
return "Early Access";
1919
}
2020
}

src/Frontend/src/views/HeartbeatsView.vue

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ import { storeToRefs } from "pinia";
77
import ServiceControlAvailable from "@/components/ServiceControlAvailable.vue";
88
import LicenseNotExpired from "@/components/LicenseNotExpired.vue";
99
import FilterInput from "@/components/FilterInput.vue";
10-
import { useIsMassTransitConnected } from "@/composables/connectedApplications";
10+
import { useIsMassTransitConnected } from "@/composables/useIsMassTransitConnected";
1111
1212
const store = useHeartbeatsStore();
1313
const { unhealthyEndpoints, healthyEndpoints, endpointFilterString } = storeToRefs(store);

0 commit comments

Comments
 (0)