forked from extern/bruno
refactor: old store cleanup
This commit is contained in:
parent
1fe1247cf3
commit
a79593f951
@ -1,7 +1,5 @@
|
|||||||
import React, { useState, useEffect } from 'react';
|
import React, { useState, useEffect } from 'react';
|
||||||
import find from 'lodash/find';
|
import find from 'lodash/find';
|
||||||
import { useStore } from 'providers/Store';
|
|
||||||
import actions from 'providers/Store/actions';
|
|
||||||
import { useSelector, useDispatch } from 'react-redux';
|
import { useSelector, useDispatch } from 'react-redux';
|
||||||
import QueryUrl from 'components/QueryUrl';
|
import QueryUrl from 'components/QueryUrl';
|
||||||
import GraphQLRequestPane from 'components/GraphQLRequestPane';
|
import GraphQLRequestPane from 'components/GraphQLRequestPane';
|
||||||
@ -23,7 +21,6 @@ const RequestTabPanel = () => {
|
|||||||
const activeTabUid = useSelector((state) => state.tabs.activeTabUid);
|
const activeTabUid = useSelector((state) => state.tabs.activeTabUid);
|
||||||
const collections = useSelector((state) => state.collections.collections);
|
const collections = useSelector((state) => state.collections.collections);
|
||||||
const dispatch = useDispatch();
|
const dispatch = useDispatch();
|
||||||
const [store, storeDispatch] = useStore();
|
|
||||||
|
|
||||||
let asideWidth = 270;
|
let asideWidth = 270;
|
||||||
let {
|
let {
|
||||||
@ -61,17 +58,12 @@ const RequestTabPanel = () => {
|
|||||||
}, [dragging, leftPaneWidth]);
|
}, [dragging, leftPaneWidth]);
|
||||||
|
|
||||||
const onGraphqlQueryChange = (value) => {
|
const onGraphqlQueryChange = (value) => {
|
||||||
storeDispatch({
|
// todo
|
||||||
type: actions.REQUEST_GQL_QUERY_CHANGED,
|
|
||||||
query: value,
|
|
||||||
requestTab: focusedTab,
|
|
||||||
collectionUid: collection ? collection.uid : null
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
if(!activeTabUid) {
|
if(!activeTabUid) {
|
||||||
return (
|
return (
|
||||||
<Welcome dispatch={storeDispatch} actions={actions}/>
|
<Welcome/>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -105,11 +97,7 @@ const RequestTabPanel = () => {
|
|||||||
};
|
};
|
||||||
|
|
||||||
const runQuery = async () => {
|
const runQuery = async () => {
|
||||||
storeDispatch({
|
// todo
|
||||||
type: actions.SEND_REQUEST,
|
|
||||||
requestTab: focusedTab,
|
|
||||||
collectionUid: collection ? collection.uid : null
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const sendNetworkRequest = async () => {
|
const sendNetworkRequest = async () => {
|
||||||
|
@ -2,18 +2,12 @@ import React from 'react';
|
|||||||
import { IconPlus, IconUpload } from '@tabler/icons';
|
import { IconPlus, IconUpload } from '@tabler/icons';
|
||||||
import StyledWrapper from './StyledWrapper';
|
import StyledWrapper from './StyledWrapper';
|
||||||
|
|
||||||
const Welcome = ({dispatch, actions}) => {
|
const Welcome = () => {
|
||||||
const newGraphqlRequest = () => {
|
const newGraphqlRequest = () => {
|
||||||
dispatch({
|
// todo
|
||||||
type: actions.ADD_NEW_GQL_REQUEST,
|
|
||||||
requestType: 'graphql'
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
const newHttpRequest = () => {
|
const newHttpRequest = () => {
|
||||||
dispatch({
|
// todo
|
||||||
type: actions.ADD_NEW_HTTP_REQUEST,
|
|
||||||
requestType: 'http'
|
|
||||||
});
|
|
||||||
};
|
};
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
@ -1,4 +1,3 @@
|
|||||||
import { StoreProvider } from 'providers/Store';
|
|
||||||
import { HotkeysProvider } from 'providers/Hotkeys';
|
import { HotkeysProvider } from 'providers/Hotkeys';
|
||||||
import { AuthProvider } from 'providers/Auth';
|
import { AuthProvider } from 'providers/Auth';
|
||||||
import { AppProvider } from 'providers/App';
|
import { AppProvider } from 'providers/App';
|
||||||
@ -27,11 +26,9 @@ function MyApp({ Component, pageProps }) {
|
|||||||
<AuthProvider>
|
<AuthProvider>
|
||||||
<Provider store={ReduxStore}>
|
<Provider store={ReduxStore}>
|
||||||
<AppProvider>
|
<AppProvider>
|
||||||
<StoreProvider>
|
|
||||||
<HotkeysProvider>
|
<HotkeysProvider>
|
||||||
<Component {...pageProps} />
|
<Component {...pageProps} />
|
||||||
</HotkeysProvider>
|
</HotkeysProvider>
|
||||||
</StoreProvider>
|
|
||||||
</AppProvider>
|
</AppProvider>
|
||||||
</Provider>
|
</Provider>
|
||||||
</AuthProvider>
|
</AuthProvider>
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
const REQUEST_GQL_QUERY_CHANGED = "REQUEST_GQL_QUERY_CHANGED";
|
|
||||||
const ADD_NEW_GQL_REQUEST = "ADD_NEW_GQL_REQUEST";
|
|
||||||
|
|
||||||
export default {
|
|
||||||
REQUEST_GQL_QUERY_CHANGED,
|
|
||||||
ADD_NEW_GQL_REQUEST,
|
|
||||||
};
|
|
@ -1,41 +0,0 @@
|
|||||||
import isArray from 'lodash/isArray';
|
|
||||||
|
|
||||||
export const saveCollectionToIdb = (connection, collection) => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
connection
|
|
||||||
.then((db) => {
|
|
||||||
let tx = db.transaction(`collection`, 'readwrite');
|
|
||||||
let collectionStore = tx.objectStore('collection');
|
|
||||||
|
|
||||||
if(isArray(collection)) {
|
|
||||||
for(let c of collection) {
|
|
||||||
collectionStore.put(c);
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
collectionStore.put(collection);
|
|
||||||
}
|
|
||||||
|
|
||||||
resolve();
|
|
||||||
})
|
|
||||||
.catch((err) => reject(err));
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
export const getCollectionsFromIdb = (connection) => {
|
|
||||||
return new Promise((resolve, reject) => {
|
|
||||||
connection
|
|
||||||
.then((db) => {
|
|
||||||
let tx = db.transaction('collection');
|
|
||||||
let collectionStore = tx.objectStore('collection');
|
|
||||||
return collectionStore.getAll();
|
|
||||||
})
|
|
||||||
.then((collections) => {
|
|
||||||
if(!Array.isArray(collections)) {
|
|
||||||
return new Error('IDB Corrupted');
|
|
||||||
}
|
|
||||||
|
|
||||||
return resolve(collections);
|
|
||||||
})
|
|
||||||
.catch((err) => reject(err));
|
|
||||||
});
|
|
||||||
};
|
|
@ -1,9 +1,3 @@
|
|||||||
import React, {useContext, useReducer, createContext } from 'react';
|
|
||||||
import { nanoid } from 'nanoid';
|
|
||||||
import reducer from './reducer';
|
|
||||||
import useIdb from './useIdb';
|
|
||||||
export const StoreContext = createContext();
|
|
||||||
|
|
||||||
const collection = {
|
const collection = {
|
||||||
"id": nanoid(),
|
"id": nanoid(),
|
||||||
"name": "spacex",
|
"name": "spacex",
|
||||||
@ -107,31 +101,3 @@ const collection2 = {
|
|||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
|
|
||||||
const initialState = {
|
|
||||||
idbConnection: null,
|
|
||||||
collections: [],
|
|
||||||
activeRequestTabUid: null,
|
|
||||||
requestTabs: [],
|
|
||||||
collectionsToSyncToIdb: []
|
|
||||||
};
|
|
||||||
|
|
||||||
export const StoreProvider = props => {
|
|
||||||
const [state, dispatch] = useReducer(reducer, initialState);
|
|
||||||
|
|
||||||
useIdb(dispatch);
|
|
||||||
|
|
||||||
return <StoreContext.Provider value={[state, dispatch]} {...props} />;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const useStore = () => {
|
|
||||||
const context = useContext(StoreContext);
|
|
||||||
|
|
||||||
if (context === undefined) {
|
|
||||||
throw new Error(`useStore must be used within a StoreProvider`);
|
|
||||||
}
|
|
||||||
|
|
||||||
return context;
|
|
||||||
};
|
|
||||||
|
|
||||||
export default StoreProvider;
|
|
||||||
|
@ -1,28 +0,0 @@
|
|||||||
import { useEffect } from 'react';
|
|
||||||
import { openDB } from 'idb';
|
|
||||||
import actions from './actions';
|
|
||||||
|
|
||||||
const useIdb = (dispatch) => {
|
|
||||||
useEffect(() => {
|
|
||||||
let dbName = `grafnode`;
|
|
||||||
let connection = openDB(dbName, 1, {
|
|
||||||
upgrade(db, oldVersion, newVersion, transaction) {
|
|
||||||
switch(oldVersion) {
|
|
||||||
case 0:
|
|
||||||
const collectionStore = db.createObjectStore('collection', { keyPath: 'uid' });
|
|
||||||
collectionStore.createIndex('transactionIdIndex', 'transaction_id');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
connection.then(() => {
|
|
||||||
dispatch({
|
|
||||||
type: actions.IDB_CONNECTION_READY,
|
|
||||||
connection: connection
|
|
||||||
});
|
|
||||||
})
|
|
||||||
.catch((err) => console.log(err));
|
|
||||||
}, []);
|
|
||||||
};
|
|
||||||
|
|
||||||
export default useIdb;
|
|
@ -1,48 +0,0 @@
|
|||||||
import each from 'lodash/each';
|
|
||||||
import find from 'lodash/find';
|
|
||||||
import cloneDeep from 'lodash/cloneDeep';
|
|
||||||
|
|
||||||
export const flattenItems = (items = []) => {
|
|
||||||
const flattenedItems = [];
|
|
||||||
|
|
||||||
const flatten = (itms, flattened) => {
|
|
||||||
each(itms, (i) => {
|
|
||||||
flattened.push(i);
|
|
||||||
|
|
||||||
if(i.items && i.items.length) {
|
|
||||||
flatten(i.items, flattened);
|
|
||||||
}
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
flatten(items, flattenedItems);
|
|
||||||
|
|
||||||
return flattenedItems;
|
|
||||||
};
|
|
||||||
|
|
||||||
export const findItem = (items = [], itemUid) => {
|
|
||||||
return find(items, (i) => i.uid === itemUid);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const isItemARequest = (item) => {
|
|
||||||
return item.hasOwnProperty('request');
|
|
||||||
};
|
|
||||||
|
|
||||||
export const itemIsOpenedInTabs = (item, tabs) => {
|
|
||||||
return find(tabs, (t) => t.uid === item.uid);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const cloneItem = (item) => {
|
|
||||||
return cloneDeep(item);
|
|
||||||
};
|
|
||||||
|
|
||||||
export const updateRequestTabAsChanged = (requestTabs, itemUid) => {
|
|
||||||
let currentTab = find(requestTabs, (rt) => rt.uid == itemUid);
|
|
||||||
if(currentTab) {
|
|
||||||
currentTab.hasChanges = true;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
export const findCollectionByUid = (collections, collectionUid) => {
|
|
||||||
return find(collections, (c) => c.uid === collectionUid);
|
|
||||||
};
|
|
Loading…
Reference in New Issue
Block a user