mirror of
https://github.com/usebruno/bruno.git
synced 2026-07-07 22:18:33 +00:00
feat: moved up the logic for making the network call
This commit is contained in:
@@ -1,6 +1,5 @@
|
||||
import React, { useState, useEffect } from 'react';
|
||||
import find from 'lodash/find';
|
||||
import { rawRequest, gql } from 'graphql-request';
|
||||
import QueryUrl from '../QueryUrl';
|
||||
import RequestPane from '../RequestPane';
|
||||
import ResponsePane from '../ResponsePane';
|
||||
@@ -19,13 +18,11 @@ const RequestTabPanel = ({dispatch, actions, collections, activeRequestTabId, re
|
||||
}
|
||||
|
||||
let asideWidth = 200;
|
||||
let [data, setData] = useState({});
|
||||
let [url, setUrl] = useState('https://api.spacex.land/graphql');
|
||||
let {
|
||||
schema
|
||||
} = useGraphqlSchema('https://api.spacex.land/graphql');
|
||||
let [query, setQuery] = useState('');
|
||||
let [isLoading, setIsLoading] = useState(false);
|
||||
const [leftPaneWidth, setLeftPaneWidth] = useState(500);
|
||||
const [rightPaneWidth, setRightPaneWidth] = useState(window.innerWidth - 700 - asideWidth);
|
||||
const [dragging, setDragging] = useState(false);
|
||||
@@ -83,33 +80,11 @@ const RequestTabPanel = ({dispatch, actions, collections, activeRequestTabId, re
|
||||
}
|
||||
|
||||
const runQuery = async () => {
|
||||
const query = gql`${item.request.body.graphql.query}`;
|
||||
|
||||
setIsLoading(true);
|
||||
const timeStart = Date.now();
|
||||
const { data, errors, extensions, headers, status } = await rawRequest(item.request.url, query);
|
||||
const timeEnd = Date.now();
|
||||
setData(data);
|
||||
setIsLoading(false);
|
||||
console.log(headers);
|
||||
|
||||
if(data && !errors) {
|
||||
// todo: alternate way to calculate length when content length is not present
|
||||
const size = headers.map["content-length"];
|
||||
|
||||
dispatch({
|
||||
type: actions.RESPONSE_RECEIVED,
|
||||
response: {
|
||||
data: data,
|
||||
headers: Object.entries(headers.map),
|
||||
size: size,
|
||||
status: status,
|
||||
duration: timeEnd - timeStart
|
||||
},
|
||||
requestTab: focusedTab,
|
||||
collectionId: collection.id
|
||||
});
|
||||
}
|
||||
dispatch({
|
||||
type: actions.SEND_REQUEST,
|
||||
requestTab: focusedTab,
|
||||
collectionId: collection ? collection.id : null
|
||||
});
|
||||
};
|
||||
|
||||
return (
|
||||
@@ -148,7 +123,7 @@ const RequestTabPanel = ({dispatch, actions, collections, activeRequestTabId, re
|
||||
<ResponsePane
|
||||
rightPaneWidth={rightPaneWidth}
|
||||
response={item.response}
|
||||
isLoading={isLoading}
|
||||
isLoading={item.response && item.response.state === 'sending' ? true : false}
|
||||
/>
|
||||
</section>
|
||||
</section>
|
||||
|
||||
@@ -22,7 +22,7 @@ const Wrapper = styled.div`
|
||||
padding-right: 0;
|
||||
cursor: pointer;
|
||||
font-size: 0.8125rem;
|
||||
height: 40px;
|
||||
height: 38px;
|
||||
|
||||
.tab-container {
|
||||
width: 100%;
|
||||
|
||||
@@ -3,9 +3,16 @@ import { IconPlus, IconUpload } from '@tabler/icons';
|
||||
import StyledWrapper from './StyledWrapper';
|
||||
|
||||
const Welcome = ({dispatch, actions}) => {
|
||||
const handleClick = () => {
|
||||
const newGraphqlRequest = () => {
|
||||
dispatch({
|
||||
type: actions.ADD_NEW_HTTP_REQUEST
|
||||
type: actions.ADD_NEW_GQL_REQUEST,
|
||||
requestType: 'graphql'
|
||||
});
|
||||
};
|
||||
const newHttpRequest = () => {
|
||||
dispatch({
|
||||
type: actions.ADD_NEW_HTTP_REQUEST,
|
||||
requestType: 'http'
|
||||
});
|
||||
};
|
||||
|
||||
@@ -36,12 +43,12 @@ const Welcome = ({dispatch, actions}) => {
|
||||
</svg>
|
||||
</div>
|
||||
<div className="text-xl font-semibold">grafnode</div>
|
||||
<div>opensource API collection collaboration platform</div>
|
||||
<div className="mt-1">Opensource API collection collaboration platform</div>
|
||||
|
||||
<div className="uppercase font-semibold create-request mt-8">Create Request</div>
|
||||
|
||||
<div className="flex mt-4 create-request-options">
|
||||
<div className="flex items-center mr-2 http">
|
||||
<div className="flex items-center mr-2 http" onClick={newHttpRequest}>
|
||||
<span style={{color: '#1662c3'}}>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" fill="currentColor" className="bi bi-globe" viewBox="0 0 16 16">
|
||||
<path d="M0 8a8 8 0 1 1 16 0A8 8 0 0 1 0 8zm7.5-6.923c-.67.204-1.335.82-1.887 1.855A7.97 7.97 0 0 0 5.145 4H7.5V1.077zM4.09 4a9.267 9.267 0 0 1 .64-1.539 6.7 6.7 0 0 1 .597-.933A7.025 7.025 0 0 0 2.255 4H4.09zm-.582 3.5c.03-.877.138-1.718.312-2.5H1.674a6.958 6.958 0 0 0-.656 2.5h2.49zM4.847 5a12.5 12.5 0 0 0-.338 2.5H7.5V5H4.847zM8.5 5v2.5h2.99a12.495 12.495 0 0 0-.337-2.5H8.5zM4.51 8.5a12.5 12.5 0 0 0 .337 2.5H7.5V8.5H4.51zm3.99 0V11h2.653c.187-.765.306-1.608.338-2.5H8.5zM5.145 12c.138.386.295.744.468 1.068.552 1.035 1.218 1.65 1.887 1.855V12H5.145zm.182 2.472a6.696 6.696 0 0 1-.597-.933A9.268 9.268 0 0 1 4.09 12H2.255a7.024 7.024 0 0 0 3.072 2.472zM3.82 11a13.652 13.652 0 0 1-.312-2.5h-2.49c.062.89.291 1.733.656 2.5H3.82zm6.853 3.472A7.024 7.024 0 0 0 13.745 12H11.91a9.27 9.27 0 0 1-.64 1.539 6.688 6.688 0 0 1-.597.933zM8.5 12v2.923c.67-.204 1.335-.82 1.887-1.855.173-.324.33-.682.468-1.068H8.5zm3.68-1h2.146c.365-.767.594-1.61.656-2.5h-2.49a13.65 13.65 0 0 1-.312 2.5zm2.802-3.5a6.959 6.959 0 0 0-.656-2.5H12.18c.174.782.282 1.623.312 2.5h2.49zM11.27 2.461c.247.464.462.98.64 1.539h1.835a7.024 7.024 0 0 0-3.072-2.472c.218.284.418.598.597.933zM10.855 4a7.966 7.966 0 0 0-.468-1.068C9.835 1.897 9.17 1.282 8.5 1.077V4h2.355z"/>
|
||||
@@ -49,7 +56,7 @@ const Welcome = ({dispatch, actions}) => {
|
||||
</span>
|
||||
<span className="ml-2 name">Http</span>
|
||||
</div>
|
||||
<div className="flex items-center graphql" onClick={handleClick}>
|
||||
<div className="flex items-center graphql" onClick={newGraphqlRequest}>
|
||||
<svg
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
height="26"
|
||||
|
||||
Reference in New Issue
Block a user