From a2b6bc5970356bcefb6d9f63c3bae36aeb946e07 Mon Sep 17 00:00:00 2001 From: Dipin Jagadish Date: Sat, 14 Oct 2023 15:50:01 +0100 Subject: [PATCH 1/3] feat: add textbox for request timeout --- .../components/Preferences/General/index.js | 43 ++++++++++++++++++- .../src/providers/Preferences/index.js | 6 ++- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/packages/bruno-app/src/components/Preferences/General/index.js b/packages/bruno-app/src/components/Preferences/General/index.js index 637c483e5..4193996c3 100644 --- a/packages/bruno-app/src/components/Preferences/General/index.js +++ b/packages/bruno-app/src/components/Preferences/General/index.js @@ -6,6 +6,7 @@ const General = () => { const { preferences, setPreferences } = usePreferences(); const [sslVerification, setSslVerification] = useState(preferences.request.sslVerification); + const [timeout, setTimeout] = useState(preferences.request.timeout); const handleCheckboxChange = () => { const updatedPreferences = { @@ -25,11 +26,49 @@ const General = () => { }); }; + const handleTimeoutChange = (value) => { + const timeout = value === '' ? 0 : value; + const updatedPreferences = { + ...preferences, + request: { + ...preferences.request, + timeout + } + }; + + setPreferences(updatedPreferences) + .then(() => { + setTimeout(timeout); + }) + .catch((err) => { + console.error(err); + }); + }; + return (
- - SSL Certificate Verification + + +
+
+ + handleTimeoutChange(e.target.value)} + type="text" + className="block textbox w-1/6" + />
); diff --git a/packages/bruno-app/src/providers/Preferences/index.js b/packages/bruno-app/src/providers/Preferences/index.js index 9b0345004..604c40e33 100644 --- a/packages/bruno-app/src/providers/Preferences/index.js +++ b/packages/bruno-app/src/providers/Preferences/index.js @@ -14,13 +14,15 @@ import toast from 'react-hot-toast'; const defaultPreferences = { request: { - sslVerification: true + sslVerification: true, + timeout: 0 } }; const preferencesSchema = Yup.object().shape({ request: Yup.object().shape({ - sslVerification: Yup.boolean() + sslVerification: Yup.boolean(), + timeout: Yup.number() }) }); From ad3f1b23316ffe6213af538694051276e726775b Mon Sep 17 00:00:00 2001 From: Dipin Jagadish Date: Sun, 15 Oct 2023 18:26:17 +0100 Subject: [PATCH 2/3] feat: use timeout for axios requests --- packages/bruno-electron/src/ipc/network/index.js | 6 ++++++ packages/bruno-js/src/bruno-request.js | 9 +++++++++ 2 files changed, 15 insertions(+) diff --git a/packages/bruno-electron/src/ipc/network/index.js b/packages/bruno-electron/src/ipc/network/index.js index 8e8cb6247..19ca7e43b 100644 --- a/packages/bruno-electron/src/ipc/network/index.js +++ b/packages/bruno-electron/src/ipc/network/index.js @@ -205,6 +205,8 @@ const registerNetworkIpc = (mainWindow) => { }); const preferences = getPreferences(); + const timeout = get(preferences, 'request.timeout', 0); + request.timeout = timeout; const sslVerification = get(preferences, 'request.sslVerification', true); const httpsAgentRequestFields = {}; if (!sslVerification) { @@ -505,6 +507,8 @@ const registerNetworkIpc = (mainWindow) => { const preparedRequest = prepareGqlIntrospectionRequest(endpoint, envVars, request, collectionRoot); const preferences = getPreferences(); + const timeout = get(preferences, 'request.timeout', 0); + request.timeout = timeout; const sslVerification = get(preferences, 'request.sslVerification', true); if (!sslVerification) { @@ -683,6 +687,8 @@ const registerNetworkIpc = (mainWindow) => { }); const preferences = getPreferences(); + const timeout = get(preferences, 'request.timeout', 0); + request.timeout = timeout; const sslVerification = get(preferences, 'request.sslVerification', true); // proxy configuration diff --git a/packages/bruno-js/src/bruno-request.js b/packages/bruno-js/src/bruno-request.js index 099d35111..afbf97873 100644 --- a/packages/bruno-js/src/bruno-request.js +++ b/packages/bruno-js/src/bruno-request.js @@ -5,6 +5,7 @@ class BrunoRequest { this.method = req.method; this.headers = req.headers; this.body = req.data; + this.timeout = req.timeout; } getUrl() { @@ -50,6 +51,14 @@ class BrunoRequest { setMaxRedirects(maxRedirects) { this.req.maxRedirects = maxRedirects; } + + getTimeout() { + return this.req.timeout; + } + + setTimeout(timeout) { + this.req.timeout = timeout; + } } module.exports = BrunoRequest; From 0e1869139ba9bafe1ed0c53a1fcf2009b1f03419 Mon Sep 17 00:00:00 2001 From: Dipin Jagadish Date: Sun, 15 Oct 2023 20:19:08 +0100 Subject: [PATCH 3/3] fix: fixing merge conflicts --- .../components/Preferences/General/index.js | 40 +++++++++---------- .../bruno-electron/src/store/preferences.js | 6 ++- 2 files changed, 23 insertions(+), 23 deletions(-) diff --git a/packages/bruno-app/src/components/Preferences/General/index.js b/packages/bruno-app/src/components/Preferences/General/index.js index 1c99e5456..b6719b69c 100644 --- a/packages/bruno-app/src/components/Preferences/General/index.js +++ b/packages/bruno-app/src/components/Preferences/General/index.js @@ -15,7 +15,8 @@ const General = ({ close }) => { savePreferences({ ...preferences, request: { - sslVerification + sslVerification, + timeout } }) ).then(() => { @@ -24,37 +25,34 @@ const General = ({ close }) => { }; const handleTimeoutChange = (value) => { - const timeout = value === '' ? 0 : value; - const updatedPreferences = { - ...preferences, - request: { - ...preferences.request, - timeout - } - }; - - setPreferences(updatedPreferences) - .then(() => { - setTimeout(timeout); - }) - .catch((err) => { - console.error(err); - }); + const validTimeout = isNaN(Number(value)) ? timeout : Number(value); + setTimeout(validTimeout); }; return (
+ setSslVerification(!sslVerification)} - className="mr-3 mousetrap" + className="mousetrap h-4 w-4 mr-0" /> -
+
+ + handleTimeoutChange(e.target.value)} + type="text" + className="block textbox w-1/6" + />
diff --git a/packages/bruno-electron/src/store/preferences.js b/packages/bruno-electron/src/store/preferences.js index 869895cd8..7238ce7cc 100644 --- a/packages/bruno-electron/src/store/preferences.js +++ b/packages/bruno-electron/src/store/preferences.js @@ -3,7 +3,8 @@ const Store = require('electron-store'); const defaultPreferences = { request: { - sslVerification: true + sslVerification: true, + timeout: 0 }, font: { codeFont: 'default' @@ -12,7 +13,8 @@ const defaultPreferences = { const preferencesSchema = Yup.object().shape({ request: Yup.object().shape({ - sslVerification: Yup.boolean() + sslVerification: Yup.boolean(), + timeout: Yup.number() }), font: Yup.object().shape({ codeFont: Yup.string().nullable()