feat: moved up the logic for making the network call

This commit is contained in:
Anoop M D
2022-01-18 20:28:18 +05:30
parent f719922072
commit 83d33b604a
7 changed files with 137 additions and 42 deletions

View File

@@ -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>

View File

@@ -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%;

View File

@@ -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"