mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-18 17:30:16 +01:00
feat: add new data services to App.jsx
This commit is contained in:
parent
2589754171
commit
2048e34311
1 changed files with 54 additions and 51 deletions
|
|
@ -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>;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue