2
0
mirror of https://github.com/inventree/InvenTree.git synced 2026-05-21 16:56:47 +00:00

Merge branch 'master' of https://github.com/inventree/InvenTree into matmair/issue5729

This commit is contained in:
Matthias Mair
2023-10-25 23:15:00 +02:00
47 changed files with 510 additions and 224 deletions
+7 -5
View File
@@ -20,8 +20,8 @@ export const doClassicLogin = async (username: string, password: string) => {
const token = await axios
.get(apiUrl(ApiPaths.user_token), {
auth: { username, password },
baseURL: host.toString(),
timeout: 5000,
baseURL: host,
timeout: 2000,
params: {
name: 'inventree-web-app'
}
@@ -43,6 +43,9 @@ export const doClassicLogin = async (username: string, password: string) => {
return true;
};
/**
* Logout the user (invalidate auth token)
*/
export const doClassicLogout = async () => {
// TODO @matmair - logout from the server session
// Set token in context
@@ -117,7 +120,7 @@ export function handleReset(navigate: any, values: { email: string }) {
export function checkLoginState(navigate: any, redirect?: string) {
api
.get(apiUrl(ApiPaths.user_token), {
timeout: 5000,
timeout: 2000,
params: {
name: 'inventree-web-app'
}
@@ -137,8 +140,7 @@ export function checkLoginState(navigate: any, redirect?: string) {
navigate('/login');
}
})
.catch((error) => {
console.error('Error fetching login information:', error);
.catch(() => {
navigate('/login');
});
}
+16 -5
View File
@@ -14,7 +14,7 @@ declare global {
server_list: HostList;
default_server: string;
show_server_selector: boolean;
url_base: string;
base_url: string;
sentry_dsn?: string;
environment?: string;
};
@@ -25,6 +25,17 @@ export const IS_DEV = import.meta.env.DEV;
export const IS_DEMO = import.meta.env.VITE_DEMO === 'true';
export const IS_DEV_OR_DEMO = IS_DEV || IS_DEMO;
// Filter out any settings that are not defined
let loaded_vals = (window.INVENTREE_SETTINGS || {}) as any;
Object.keys(loaded_vals).forEach((key) => {
if (loaded_vals[key] === undefined) {
delete loaded_vals[key];
// check for empty server list
} else if (key === 'server_list' && loaded_vals[key].length === 0) {
delete loaded_vals[key];
}
});
window.INVENTREE_SETTINGS = {
server_list: {
'mantine-cqj63coxn': {
@@ -40,11 +51,11 @@ window.INVENTREE_SETTINGS = {
}
: {})
},
default_server: IS_DEMO ? 'mantine-u56l5jt85' : 'mantine-cqj63coxn', // use demo server for demo mode
default_server: IS_DEMO ? 'mantine-u56l5jt85' : 'mantine-cqj63coxn',
show_server_selector: IS_DEV_OR_DEMO,
// merge in settings that are already set via django's spa_view or for development
...((window.INVENTREE_SETTINGS || {}) as any)
...loaded_vals
};
if (window.INVENTREE_SETTINGS.sentry_dsn) {
@@ -56,7 +67,7 @@ if (window.INVENTREE_SETTINGS.sentry_dsn) {
});
}
export const url_base = window.INVENTREE_SETTINGS.url_base || 'platform';
export const base_url = window.INVENTREE_SETTINGS.base_url || 'platform';
ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
<React.StrictMode>
@@ -66,5 +77,5 @@ ReactDOM.createRoot(document.getElementById('root') as HTMLElement).render(
// Redirect to base url if on /
if (window.location.pathname === '/') {
window.location.replace(`/${url_base}`);
window.location.replace(`/${base_url}`);
}
+6 -3
View File
@@ -15,9 +15,12 @@ export const useServerApiState = create<ServerApiStateProps>((set, get) => ({
setServer: (newServer: ServerAPIProps) => set({ server: newServer }),
fetchServerApiState: async () => {
// Fetch server data
await api.get(apiUrl(ApiPaths.api_server_info)).then((response) => {
set({ server: response.data });
});
await api
.get(apiUrl(ApiPaths.api_server_info))
.then((response) => {
set({ server: response.data });
})
.catch(() => {});
}
}));
+1 -1
View File
@@ -32,7 +32,7 @@ export const useUserState = create<UserStateProps>((set, get) => ({
// Fetch user data
await api
.get(apiUrl(ApiPaths.user_me), {
timeout: 5000
timeout: 2000
})
.then((response) => {
const user: UserProps = {
+7 -6
View File
@@ -5,7 +5,7 @@ import { BrowserRouter } from 'react-router-dom';
import { queryClient, setApiDefaults } from '../App';
import { BaseContext } from '../contexts/BaseContext';
import { defaultHostList } from '../defaults/defaultHostList';
import { url_base } from '../main';
import { base_url } from '../main';
import { routes } from '../router';
import { useLocalState } from '../states/LocalState';
import { useSessionState } from '../states/SessionState';
@@ -27,10 +27,6 @@ export default function DesktopAppView() {
]);
// Local state initialization
if (Object.keys(hostList).length === 0) {
console.log('Loading default host list');
useLocalState.setState({ hostList: defaultHostList });
}
setApiDefaults();
// Server Session
@@ -38,6 +34,11 @@ export default function DesktopAppView() {
const sessionState = useSessionState.getState();
const [token] = sessionState.token ? [sessionState.token] : [null];
useEffect(() => {
if (Object.keys(hostList).length === 0) {
console.log('Loading default host list', defaultHostList);
useLocalState.setState({ hostList: defaultHostList });
}
if (token && !fetchedServerSession) {
setFetchedServerSession(true);
fetchUserState();
@@ -49,7 +50,7 @@ export default function DesktopAppView() {
return (
<BaseContext>
<QueryClientProvider client={queryClient}>
<BrowserRouter basename={url_base}>{routes}</BrowserRouter>
<BrowserRouter basename={base_url}>{routes}</BrowserRouter>
</QueryClientProvider>
</BaseContext>
);
-5
View File
@@ -11,9 +11,4 @@ test('Basic Platform UI test', async ({ page }) => {
await page.goto('./platform/');
await expect(page).toHaveTitle('InvenTree Demo Server');
await expect(
page.getByRole('heading', {
name: 'Welcome to your Dashboard, Ally Access'
})
).toBeVisible();
});