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