diff --git a/packages/bruno-app/src/components/FolderSettings/Auth/index.js b/packages/bruno-app/src/components/FolderSettings/Auth/index.js
index e465d174d..360d5c64f 100644
--- a/packages/bruno-app/src/components/FolderSettings/Auth/index.js
+++ b/packages/bruno-app/src/components/FolderSettings/Auth/index.js
@@ -46,11 +46,11 @@ const Auth = ({ collection, folder }) => {
case 'oauth2': {
return (
<>
-
>
diff --git a/packages/bruno-app/src/components/RequestPane/HttpRequestPane/index.js b/packages/bruno-app/src/components/RequestPane/HttpRequestPane/index.js
index 7bbc903b2..4c7e6029b 100644
--- a/packages/bruno-app/src/components/RequestPane/HttpRequestPane/index.js
+++ b/packages/bruno-app/src/components/RequestPane/HttpRequestPane/index.js
@@ -152,7 +152,7 @@ const HttpRequestPane = ({ item, collection, leftPaneWidth }) => {
selectTab('script')}>
Script
{(script.req || script.res) && (
- item.preScriptResponseErrorMessage || item.postResponseScriptErrorMessage ?
+ item.preRequestScriptErrorMessage || item.postResponseScriptErrorMessage ?
:
)}
diff --git a/packages/bruno-app/src/components/ResponsePane/ClearTimeline/StyledWrapper.js b/packages/bruno-app/src/components/ResponsePane/ClearTimeline/StyledWrapper.js
new file mode 100644
index 000000000..8c32a8bab
--- /dev/null
+++ b/packages/bruno-app/src/components/ResponsePane/ClearTimeline/StyledWrapper.js
@@ -0,0 +1,8 @@
+import styled from 'styled-components';
+
+const StyledWrapper = styled.div`
+ font-size: 0.8125rem;
+ color: ${(props) => props.theme.requestTabPanel.responseStatus};
+`;
+
+export default StyledWrapper;
diff --git a/packages/bruno-app/src/components/ResponsePane/ClearTimeline/index.js b/packages/bruno-app/src/components/ResponsePane/ClearTimeline/index.js
new file mode 100644
index 000000000..18704cc41
--- /dev/null
+++ b/packages/bruno-app/src/components/ResponsePane/ClearTimeline/index.js
@@ -0,0 +1,26 @@
+import React from 'react';
+import { useDispatch } from 'react-redux';
+import StyledWrapper from './StyledWrapper';
+import { clearRequestTimeline } from 'providers/ReduxStore/slices/collections/index';
+
+const ClearTimeline = ({ collection, item }) => {
+ const dispatch = useDispatch();
+
+ const clearResponse = () =>
+ dispatch(
+ clearRequestTimeline({
+ itemUid: item.uid,
+ collectionUid: collection.uid
+ })
+ );
+
+ return (
+
+
+
+ );
+};
+
+export default ClearTimeline;
diff --git a/packages/bruno-app/src/components/ResponsePane/Timeline/TimelineItem/Common/Time/index.js b/packages/bruno-app/src/components/ResponsePane/Timeline/TimelineItem/Common/Time/index.js
index d4fd0ec07..ab4cddce0 100644
--- a/packages/bruno-app/src/components/ResponsePane/Timeline/TimelineItem/Common/Time/index.js
+++ b/packages/bruno-app/src/components/ResponsePane/Timeline/TimelineItem/Common/Time/index.js
@@ -27,7 +27,7 @@ export const RelativeTime = ({ timestamp }) => {
useEffect(() => {
const interval = setInterval(() => {
setRelativeTime(getRelativeTime(new Date(timestamp)));
- }, 1000);
+ }, 60000);
return () => clearInterval(interval);
}, [timestamp]);
diff --git a/packages/bruno-app/src/components/ResponsePane/index.js b/packages/bruno-app/src/components/ResponsePane/index.js
index 606c2043d..2d2a6ec25 100644
--- a/packages/bruno-app/src/components/ResponsePane/index.js
+++ b/packages/bruno-app/src/components/ResponsePane/index.js
@@ -18,6 +18,7 @@ import ScriptErrorIcon from './ScriptErrorIcon';
import StyledWrapper from './StyledWrapper';
import ResponseSave from 'src/components/ResponsePane/ResponseSave';
import ResponseClear from 'src/components/ResponsePane/ResponseClear';
+import ClearTimeline from './ClearTimeline/index';
const ResponsePane = ({ rightPaneWidth, item, collection }) => {
const dispatch = useDispatch();
@@ -26,6 +27,10 @@ const ResponsePane = ({ rightPaneWidth, item, collection }) => {
const isLoading = ['queued', 'sending'].includes(item.requestState);
const [showScriptErrorCard, setShowScriptErrorCard] = useState(false);
+ const requestTimeline = ([...(collection.timeline || [])]).filter(obj => {
+ if (obj.itemUid === item.uid) return true;
+ });
+
useEffect(() => {
if (item?.preRequestScriptErrorMessage || item?.postResponseScriptErrorMessage) {
setShowScriptErrorCard(true);
@@ -83,7 +88,7 @@ const ResponsePane = ({ rightPaneWidth, item, collection }) => {
);
}
- if (!item.response) {
+ if (!item.response && !requestTimeline?.length) {
return (
@@ -134,11 +139,17 @@ const ResponsePane = ({ rightPaneWidth, item, collection }) => {
onClick={() => setShowScriptErrorCard(true)}
/>
)}
-
-
-
-
-
+ {focusedTab?.responsePaneTab === "timeline" ? (
+
+ ) : item?.response ? (
+ <>
+
+
+
+
+
+ >
+ ) : null}
) : null}
@@ -152,7 +163,17 @@ const ResponsePane = ({ rightPaneWidth, item, collection }) => {
onClose={() => setShowScriptErrorCard(false)}
/>
)}
- {getTabPanel(focusedTab.responsePaneTab)}
+ {!item?.response ? (
+ focusedTab?.responsePaneTab === "timeline" && requestTimeline?.length ? (
+