1 ? 'multi' : 'single'}`}
- >
- {messagesToShow.map((message, index) => (
+
+ {messages.map((message, index) => (
toggleMessage(message.uid)}
+ isNew={newMessageUid === message.uid}
+ onNewRendered={handleNewMessageRendered}
+ isSelected={selectedIndex === index}
+ onSelect={() => handleSelect(index)}
/>
))}
-
- {canClientSendMultipleMessages && (
-
- }
- >
- Add Message
-
-
- )}
);
};
diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js b/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js
index 1e9842e10..f1e915863 100644
--- a/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js
+++ b/packages/bruno-app/src/providers/ReduxStore/slices/collections/actions.js
@@ -582,7 +582,9 @@ export const sendRequest = (item, collectionUid) => (dispatch, getState) => {
toast.error(err.message);
});
} else if (isWsRequest) {
- sendWsRequest(itemCopy, collectionCopy, environment, collectionCopy.runtimeVariables)
+ const wsMessages = itemCopy.draft?.request?.body?.ws || itemCopy.request?.body?.ws || [];
+ const wsSelectedMessageIndex = Math.max(0, wsMessages.findIndex((msg) => msg.selected));
+ sendWsRequest(itemCopy, collectionCopy, environment, collectionCopy.runtimeVariables, wsSelectedMessageIndex)
.then(resolve)
.catch((err) => {
toast.error(err.message);
@@ -1609,6 +1611,7 @@ export const newWsRequest = (params) => (dispatch, getState) => {
mode: 'ws',
ws: [
{
+ uid: uuid(),
name: 'message 1',
type: 'json',
content: '{}'
diff --git a/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js b/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js
index 0d3f45a9b..5586e491e 100644
--- a/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js
+++ b/packages/bruno-app/src/providers/ReduxStore/slices/collections/index.js
@@ -101,7 +101,8 @@ const REQUEST_UID_PATHS = [
'assertions',
'body.formUrlEncoded',
'body.multipartForm',
- 'body.file'
+ 'body.file',
+ 'body.ws'
];
const ROOT_UID_PATHS = ['request.headers', 'request.vars.req', 'request.vars.res'];
diff --git a/packages/bruno-app/src/utils/collections/index.js b/packages/bruno-app/src/utils/collections/index.js
index 0cc1b508e..0b551b53b 100644
--- a/packages/bruno-app/src/utils/collections/index.js
+++ b/packages/bruno-app/src/utils/collections/index.js
@@ -785,10 +785,11 @@ export const transformRequestToSaveToFilesystem = (item) => {
if (itemToSave.request.body.mode === 'ws') {
itemToSave.request.body = {
...itemToSave.request.body,
- ws: itemToSave.request.body.ws.map(({ name, content, type }, index) => ({
+ ws: itemToSave.request.body.ws.map(({ name, content, type, selected }, index) => ({
name: name ? name : `message ${index + 1}`,
type,
- content: replaceTabsWithSpaces(content)
+ content: replaceTabsWithSpaces(content),
+ selected: selected || false
}))
};
}
@@ -1014,6 +1015,7 @@ export const refreshUidsInItem = (item) => {
each(get(item, 'request.body.multipartForm'), (param) => (param.uid = uuid()));
each(get(item, 'request.body.formUrlEncoded'), (param) => (param.uid = uuid()));
each(get(item, 'request.body.file'), (param) => (param.uid = uuid()));
+ each(get(item, 'request.body.ws'), (msg) => (msg.uid = uuid()));
each(get(item, 'request.assertions'), (assertion) => (assertion.uid = uuid()));
return item;
diff --git a/packages/bruno-app/src/utils/network/index.js b/packages/bruno-app/src/utils/network/index.js
index b1a265276..3e9c906bd 100644
--- a/packages/bruno-app/src/utils/network/index.js
+++ b/packages/bruno-app/src/utils/network/index.js
@@ -224,7 +224,7 @@ export const connectWS = async (item, collection, environment, runtimeVariables,
});
};
-export const sendWsRequest = async (item, collection, environment, runtimeVariables) => {
+export const sendWsRequest = async (item, collection, environment, runtimeVariables, selectedMessageIndex = 0) => {
const ensureConnection = async () => {
const connectionStatus = await isWsConnectionActive(item.uid);
if (!connectionStatus.isActive) {
@@ -234,8 +234,8 @@ export const sendWsRequest = async (item, collection, environment, runtimeVariab
await ensureConnection();
- // Use queueWsMessage helper to queue all messages with proper variable interpolation
- const result = await queueWsMessage(item, collection, environment, runtimeVariables, null);
+ // Send only the selected message by index
+ const result = await queueWsMessage(item, collection, environment, runtimeVariables, selectedMessageIndex);
if (result.success) {
return {};
@@ -250,10 +250,10 @@ export const sendWsRequest = async (item, collection, environment, runtimeVariab
* @param {Object} collection - The collection object
* @param {Object} environment - The environment variables
* @param {Object} runtimeVariables - The runtime variables
- * @param {string} messageContent - The message content to queue (or null to queue all messages)
+ * @param {number} selectedMessageIndex - Index of the message to queue
* @returns {Promise