feat: add new data services to App.jsx

This commit is contained in:
Daniel D Orlando 2023-04-02 12:48:52 -07:00
parent 2589754171
commit 2048e34311

View file

@ -1,15 +1,12 @@
import React, { useEffect, useState } from 'react'; import { useEffect } from 'react';
import { createBrowserRouter, RouterProvider, Navigate } from 'react-router-dom'; import { createBrowserRouter, RouterProvider, Navigate } from 'react-router-dom';
import Root from './routes/Root'; import Root from './routes/Root';
import Chat from './routes/Chat'; import Chat from './routes/Chat';
import Search from './routes/Search'; import Search from './routes/Search';
import store from './store'; import store from './store';
import userAuth from './utils/userAuth';
import { useRecoilState, useSetRecoilState } from 'recoil'; import { useRecoilState, useSetRecoilState } from 'recoil';
import { ScreenshotProvider } from './utils/screenshotContext.jsx'; import { ScreenshotProvider } from './utils/screenshotContext.jsx';
import { useGetSearchEnabledQuery, useGetUserQuery, useGetModelsQuery, useGetEndpointsQuery, useGetPresetsQuery} from '~/data-provider';
import axios from 'axios';
const router = createBrowserRouter([ const router = createBrowserRouter([
{ {
@ -43,58 +40,64 @@ const App = () => {
const setEndpointsConfig = useSetRecoilState(store.endpointsConfig); const setEndpointsConfig = useSetRecoilState(store.endpointsConfig);
const setPresets = useSetRecoilState(store.presets); const setPresets = useSetRecoilState(store.presets);
const searchEnabledQuery = useGetSearchEnabledQuery();
const userQuery = useGetUserQuery();
const modelsQuery = useGetModelsQuery();
const endpointsQuery = useGetEndpointsQuery();
const presetsQuery = useGetPresetsQuery();
if(endpointsQuery.data) {
setEndpointsConfig(endpointsQuery.data);
} else if(endpointsQuery.isError) {
console.error("Failed to get endpoints", endpointsQuery.error);
window.location.href = '/auth/login';
}
if(presetsQuery.data) {
setPresets(presetsQuery.data);
} else if(presetsQuery.isError) {
console.error("Failed to get presets", presetsQuery.error);
window.location.href = '/auth/login';
}
useEffect(() => { useEffect(() => {
// fetch if seatch enabled if (searchEnabledQuery.error) {
axios console.error("Failed to get search enabled", searchEnabledQuery.error);
.get('/api/search/enable', { }
timeout: 1000, if (searchEnabledQuery.data) {
withCredentials: true setIsSearchEnabled(searchEnabledQuery.data);
}) }
.then(res => { }, [searchEnabledQuery.data, setIsSearchEnabled, searchEnabledQuery.error]);
setIsSearchEnabled(res.data);
});
// fetch user useEffect(() => {
userAuth() if (userQuery.error) {
.then(user => setUser(user)) console.error("Failed to get user", userQuery.error);
.catch(err => console.log(err)); }
if (userQuery.data) {
setUser(userQuery.data);
}
}, [userQuery.data, setUser, userQuery.error]);
// fetch models useEffect(() => {
axios const { data, error } = modelsQuery;
.get('/api/endpoints', { if (error) {
timeout: 1000, console.error("Failed to get models", error);
withCredentials: true }
}) if (data) {
.then(({ data }) => { const filter = {
setEndpointsConfig(data); chatgpt: data?.hasOpenAI,
}) chatgptCustom: data?.hasOpenAI,
.catch(error => { bingai: data?.hasBing,
console.error(error); sydney: data?.hasBing,
console.log('Not login!'); chatgptBrowser: data?.hasChatGpt
window.location.href = '/auth/login'; };
}); setModelsFilter(filter);
}
// fetch presets }, [modelsQuery.data, setModelsFilter, modelsQuery.error, modelsQuery]);
axios
.get('/api/presets', {
timeout: 1000,
withCredentials: true
})
.then(({ data }) => {
setPresets(data);
})
.catch(error => {
console.error(error);
console.log('Not login!');
window.location.href = '/auth/login';
});
}, []);
if (user) if (user)
return ( return (
<div>
<RouterProvider router={router} /> <RouterProvider router={router} />
</div>
); );
else return <div className="flex h-screen"></div>; else return <div className="flex h-screen"></div>;
}; };