fix: default enter page for user
This commit is contained in:
+4
-5
@@ -1,5 +1,6 @@
|
|||||||
import { GPUStackVersionAtom, UpdateCheckAtom } from '@/atoms/user';
|
import { GPUStackVersionAtom, UpdateCheckAtom } from '@/atoms/user';
|
||||||
import { setAtomStorage } from '@/atoms/utils';
|
import { setAtomStorage } from '@/atoms/utils';
|
||||||
|
import { DEFAULT_ENTER_PAGE } from '@/config/settings';
|
||||||
import { requestConfig } from '@/request-config';
|
import { requestConfig } from '@/request-config';
|
||||||
import {
|
import {
|
||||||
queryCurrentUserState,
|
queryCurrentUserState,
|
||||||
@@ -15,8 +16,6 @@ import {
|
|||||||
import { RequestConfig, history } from '@umijs/max';
|
import { RequestConfig, history } from '@umijs/max';
|
||||||
import { message } from 'antd';
|
import { message } from 'antd';
|
||||||
|
|
||||||
const loginPath = '/login';
|
|
||||||
|
|
||||||
// only for the first login and access from http://localhost
|
// only for the first login and access from http://localhost
|
||||||
|
|
||||||
const checkDefaultPage = async (userInfo: any) => {
|
const checkDefaultPage = async (userInfo: any) => {
|
||||||
@@ -24,7 +23,7 @@ const checkDefaultPage = async (userInfo: any) => {
|
|||||||
if (isFirstLogin === null && isOnline()) {
|
if (isFirstLogin === null && isOnline()) {
|
||||||
writeState(IS_FIRST_LOGIN, true);
|
writeState(IS_FIRST_LOGIN, true);
|
||||||
if (userInfo && userInfo?.is_admin) {
|
if (userInfo && userInfo?.is_admin) {
|
||||||
history.push('/models/deployments');
|
history.push(DEFAULT_ENTER_PAGE.adminForFirst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -72,7 +71,7 @@ export async function getInitialState(): Promise<{
|
|||||||
duration: 5
|
duration: 5
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
history.push(loginPath);
|
history.push(DEFAULT_ENTER_PAGE.login);
|
||||||
}
|
}
|
||||||
return {} as Global.UserInfo;
|
return {} as Global.UserInfo;
|
||||||
};
|
};
|
||||||
@@ -92,7 +91,7 @@ export async function getInitialState(): Promise<{
|
|||||||
|
|
||||||
getAppVersionInfo();
|
getAppVersionInfo();
|
||||||
|
|
||||||
if (![loginPath].includes(location.pathname)) {
|
if (![DEFAULT_ENTER_PAGE.login].includes(location.pathname)) {
|
||||||
const userInfo = await fetchUserInfo();
|
const userInfo = await fetchUserInfo();
|
||||||
checkDefaultPage(userInfo);
|
checkDefaultPage(userInfo);
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -1 +0,0 @@
|
|||||||
export const HEADER_HEIGHT = 56;
|
|
||||||
@@ -0,0 +1,8 @@
|
|||||||
|
export const HEADER_HEIGHT = 56;
|
||||||
|
|
||||||
|
export const DEFAULT_ENTER_PAGE = {
|
||||||
|
adminForNormal: '/dashboard',
|
||||||
|
adminForFirst: '/models/deployments',
|
||||||
|
user: '/models/user-models',
|
||||||
|
login: '/login'
|
||||||
|
};
|
||||||
@@ -232,20 +232,7 @@ export default function useOverlayScroller(data?: {
|
|||||||
instanceRef.current?.elements()?.scrollEventElement;
|
instanceRef.current?.elements()?.scrollEventElement;
|
||||||
}
|
}
|
||||||
|
|
||||||
const scrollerState = instanceRef.current?.state();
|
|
||||||
const overflowAmount = scrollerState?.overflowAmount;
|
|
||||||
const scrollOffsetElement = instanceRef.current?.elements().viewport;
|
const scrollOffsetElement = instanceRef.current?.elements().viewport;
|
||||||
console.log('osInstance==========', overflowAmount, scrollOffsetElement, {
|
|
||||||
top:
|
|
||||||
Math.round(
|
|
||||||
(overflowAmount?.y - scrollOffsetElement?.scrollTop || 0) /
|
|
||||||
overflowAmount?.y
|
|
||||||
) * overflowAmount?.y,
|
|
||||||
scrollTop: scrollOffsetElement?.scrollTop,
|
|
||||||
scrollLeft: scrollOffsetElement?.scrollLeft,
|
|
||||||
scrollHeight:
|
|
||||||
scrollOffsetElement?.scrollHeight - scrollOffsetElement?.clientHeight
|
|
||||||
});
|
|
||||||
|
|
||||||
return {
|
return {
|
||||||
scrollTop: scrollOffsetElement?.scrollTop,
|
scrollTop: scrollOffsetElement?.scrollTop,
|
||||||
|
|||||||
@@ -20,6 +20,7 @@ import { Avatar, Divider, Modal } from 'antd';
|
|||||||
import { useAtom } from 'jotai';
|
import { useAtom } from 'jotai';
|
||||||
import { useMemo } from 'react';
|
import { useMemo } from 'react';
|
||||||
import styled from 'styled-components';
|
import styled from 'styled-components';
|
||||||
|
import { DEFAULT_ENTER_PAGE } from '../config/settings';
|
||||||
|
|
||||||
const IconWrapper = styled.span`
|
const IconWrapper = styled.span`
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
@@ -93,7 +94,7 @@ export const ExtraContent = () => {
|
|||||||
|
|
||||||
const navigate = useNavigate();
|
const navigate = useNavigate();
|
||||||
|
|
||||||
const loginPath = '/login';
|
const loginPath = DEFAULT_ENTER_PAGE.login;
|
||||||
|
|
||||||
const showUpgrade = useMemo(() => {
|
const showUpgrade = useMemo(() => {
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ import ShortCuts, {
|
|||||||
} from '@/components/short-cuts';
|
} from '@/components/short-cuts';
|
||||||
import VersionInfo, { modalConfig } from '@/components/version-info';
|
import VersionInfo, { modalConfig } from '@/components/version-info';
|
||||||
import routeCachekey from '@/config/route-cachekey';
|
import routeCachekey from '@/config/route-cachekey';
|
||||||
|
import { DEFAULT_ENTER_PAGE } from '@/config/settings';
|
||||||
import useBodyScroll from '@/hooks/use-body-scroll';
|
import useBodyScroll from '@/hooks/use-body-scroll';
|
||||||
import useOverlayScroller from '@/hooks/use-overlay-scroller';
|
import useOverlayScroller from '@/hooks/use-overlay-scroller';
|
||||||
import useUserSettings from '@/hooks/use-user-settings';
|
import useUserSettings from '@/hooks/use-user-settings';
|
||||||
@@ -54,7 +55,7 @@ const NO_CONTAINER_PAGES = [
|
|||||||
'clusterCreate'
|
'clusterCreate'
|
||||||
];
|
];
|
||||||
|
|
||||||
const loginPath = '/login';
|
const loginPath = DEFAULT_ENTER_PAGE.login;
|
||||||
|
|
||||||
type InitialStateType = {
|
type InitialStateType = {
|
||||||
fetchUserInfo: () => Promise<Global.UserInfo>;
|
fetchUserInfo: () => Promise<Global.UserInfo>;
|
||||||
@@ -408,8 +409,8 @@ export default (props: any) => {
|
|||||||
history.push(loginPath);
|
history.push(loginPath);
|
||||||
} else if (location.pathname === '/') {
|
} else if (location.pathname === '/') {
|
||||||
const pathname = initialState?.currentUser?.is_admin
|
const pathname = initialState?.currentUser?.is_admin
|
||||||
? '/dashboard'
|
? DEFAULT_ENTER_PAGE.adminForNormal
|
||||||
: '/playground';
|
: DEFAULT_ENTER_PAGE.user;
|
||||||
history.push(pathname);
|
history.push(pathname);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
@@ -417,11 +418,14 @@ export default (props: any) => {
|
|||||||
const onMenuHeaderClick = (e) => {
|
const onMenuHeaderClick = (e) => {
|
||||||
e.stopPropagation();
|
e.stopPropagation();
|
||||||
e.preventDefault();
|
e.preventDefault();
|
||||||
navigate('/dashboard');
|
const pagepath = initialState?.currentUser?.is_admin
|
||||||
|
? DEFAULT_ENTER_PAGE.adminForNormal
|
||||||
|
: DEFAULT_ENTER_PAGE.user;
|
||||||
|
|
||||||
|
navigate(pagepath);
|
||||||
};
|
};
|
||||||
|
|
||||||
const onCollapse = (value) => {
|
const onCollapse = (value) => {
|
||||||
// setCollapsed(value);
|
|
||||||
setUserSettings({
|
setUserSettings({
|
||||||
...userSettings,
|
...userSettings,
|
||||||
collapsed: value
|
collapsed: value
|
||||||
|
|||||||
@@ -42,7 +42,7 @@ export default {
|
|||||||
'models.search.hfvisit': 'Please make sure you can visit',
|
'models.search.hfvisit': 'Please make sure you can visit',
|
||||||
'models.search.unsupport':
|
'models.search.unsupport':
|
||||||
'This model is not supported and may be unusable after deployment.',
|
'This model is not supported and may be unusable after deployment.',
|
||||||
'models.form.scheduletype': 'Schedule Type',
|
'models.form.scheduletype': 'Scheduling Mode',
|
||||||
'models.form.categories': 'Model Category',
|
'models.form.categories': 'Model Category',
|
||||||
'models.form.scheduletype.auto': 'Auto',
|
'models.form.scheduletype.auto': 'Auto',
|
||||||
'models.form.scheduletype.manual': 'Manual',
|
'models.form.scheduletype.manual': 'Manual',
|
||||||
|
|||||||
@@ -3,6 +3,7 @@ import { PageActionType } from '@/config/types';
|
|||||||
import CollapsePanel from '@/pages/_components/collapse-panel';
|
import CollapsePanel from '@/pages/_components/collapse-panel';
|
||||||
import { useWrapperContext } from '@/pages/_components/column-wrapper/use-wrapper-context';
|
import { useWrapperContext } from '@/pages/_components/column-wrapper/use-wrapper-context';
|
||||||
import { useIntl } from '@umijs/max';
|
import { useIntl } from '@umijs/max';
|
||||||
|
import useMemoizedFn from 'ahooks/lib/useMemoizedFn';
|
||||||
import { Form, Segmented } from 'antd';
|
import { Form, Segmented } from 'antd';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import React, { forwardRef, useImperativeHandle, useMemo } from 'react';
|
import React, { forwardRef, useImperativeHandle, useMemo } from 'react';
|
||||||
@@ -130,11 +131,6 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
|
|||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
console.log(
|
|
||||||
'getScrollElementScrollableHeight',
|
|
||||||
getScrollElementScrollableHeight?.()
|
|
||||||
);
|
|
||||||
|
|
||||||
const segmentedTop = useMemo(() => {
|
const segmentedTop = useMemo(() => {
|
||||||
if (
|
if (
|
||||||
modelSourceMap.local_path_value === source ||
|
modelSourceMap.local_path_value === source ||
|
||||||
@@ -294,10 +290,19 @@ const DataForm: React.FC<DataFormProps> = forwardRef((props, ref) => {
|
|||||||
setActiveKey(Array.isArray(keys) ? keys : [keys]);
|
setActiveKey(Array.isArray(keys) ? keys : [keys]);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleTargetChange = async (val: any) => {
|
const throttleScrollToSegment = useMemoizedFn(
|
||||||
setTarget(val);
|
_.throttle(
|
||||||
|
async (val: string) => {
|
||||||
|
setTarget(val);
|
||||||
|
scrollToSegment(val, { offsetTop: segmentedTop.offsetTop });
|
||||||
|
},
|
||||||
|
500,
|
||||||
|
{ trailing: true }
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
await scrollToSegment(val, { offsetTop: segmentedTop.offsetTop });
|
const handleTargetChange = async (val: any) => {
|
||||||
|
throttleScrollToSegment(val);
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleOnFinishFailed = (errorInfo: any) => {
|
const handleOnFinishFailed = (errorInfo: any) => {
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
import { DEFAULT_ENTER_PAGE } from '@/config/settings';
|
||||||
import { isOnline } from '@/utils';
|
import { isOnline } from '@/utils';
|
||||||
import {
|
import {
|
||||||
IS_FIRST_LOGIN,
|
IS_FIRST_LOGIN,
|
||||||
@@ -12,13 +13,17 @@ export const checkDefaultPage = async (userInfo: any, replace: boolean) => {
|
|||||||
if (isFirstLogin === null && isOnline()) {
|
if (isFirstLogin === null && isOnline()) {
|
||||||
writeState(IS_FIRST_LOGIN, true);
|
writeState(IS_FIRST_LOGIN, true);
|
||||||
const pathname =
|
const pathname =
|
||||||
userInfo && userInfo?.is_admin ? '/models/deployments' : '/playground';
|
userInfo && userInfo?.is_admin
|
||||||
|
? DEFAULT_ENTER_PAGE.adminForFirst
|
||||||
|
: DEFAULT_ENTER_PAGE.user;
|
||||||
history.push(pathname);
|
history.push(pathname);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
await writeState(IS_FIRST_LOGIN, false);
|
await writeState(IS_FIRST_LOGIN, false);
|
||||||
|
|
||||||
const pathname = userInfo?.is_admin ? '/dashboard' : '/playground';
|
const pathname = userInfo?.is_admin
|
||||||
|
? DEFAULT_ENTER_PAGE.adminForNormal
|
||||||
|
: DEFAULT_ENTER_PAGE.user;
|
||||||
|
|
||||||
history.push(pathname, { replace: replace });
|
history.push(pathname, { replace: replace });
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -5,8 +5,8 @@ import AudioPlayer from '@/components/audio-player';
|
|||||||
import CopyButton from '@/components/copy-button';
|
import CopyButton from '@/components/copy-button';
|
||||||
import IconFont from '@/components/icon-font';
|
import IconFont from '@/components/icon-font';
|
||||||
import UploadAudio from '@/components/upload-audio';
|
import UploadAudio from '@/components/upload-audio';
|
||||||
import { HEADER_HEIGHT } from '@/config/constants';
|
|
||||||
import routeCachekey from '@/config/route-cachekey';
|
import routeCachekey from '@/config/route-cachekey';
|
||||||
|
import { HEADER_HEIGHT } from '@/config/settings';
|
||||||
import useOverlayScroller from '@/hooks/use-overlay-scroller';
|
import useOverlayScroller from '@/hooks/use-overlay-scroller';
|
||||||
import { useCancelToken } from '@/hooks/use-request-token';
|
import { useCancelToken } from '@/hooks/use-request-token';
|
||||||
import { readAudioFile } from '@/utils/load-audio-file';
|
import { readAudioFile } from '@/utils/load-audio-file';
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
import { HEADER_HEIGHT } from '@/config/constants';
|
import { HEADER_HEIGHT } from '@/config/settings';
|
||||||
import useOverlayScroller from '@/hooks/use-overlay-scroller';
|
import useOverlayScroller from '@/hooks/use-overlay-scroller';
|
||||||
import _ from 'lodash';
|
import _ from 'lodash';
|
||||||
import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
import { memo, useCallback, useEffect, useMemo, useRef, useState } from 'react';
|
||||||
|
|||||||
@@ -2,6 +2,7 @@ import { userAtom } from '@/atoms/user';
|
|||||||
import { clearAtomStorage } from '@/atoms/utils';
|
import { clearAtomStorage } from '@/atoms/utils';
|
||||||
import { RequestConfig, history } from '@umijs/max';
|
import { RequestConfig, history } from '@umijs/max';
|
||||||
import { message } from 'antd';
|
import { message } from 'antd';
|
||||||
|
import { DEFAULT_ENTER_PAGE } from './config/settings';
|
||||||
|
|
||||||
// no base URL APIs
|
// no base URL APIs
|
||||||
const NoBaseURLAPIs = ['/auth', '/v1-openai', '/version', '/proxy', '/update'];
|
const NoBaseURLAPIs = ['/auth', '/v1-openai', '/version', '/proxy', '/update'];
|
||||||
@@ -24,7 +25,7 @@ export const requestConfig: RequestConfig = {
|
|||||||
if (response?.status === 401) {
|
if (response?.status === 401) {
|
||||||
clearAtomStorage(userAtom);
|
clearAtomStorage(userAtom);
|
||||||
|
|
||||||
history.push('/login', { replace: true });
|
history.push(DEFAULT_ENTER_PAGE.login, { replace: true });
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
Reference in New Issue
Block a user