fix: default enter page for user

This commit is contained in:
jialin
2025-11-10 20:40:15 +08:00
parent 9eb1dba4a1
commit b4b25d4300
12 changed files with 48 additions and 39 deletions
+4 -5
View File
@@ -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
View File
@@ -1 +0,0 @@
export const HEADER_HEIGHT = 56;
+8
View File
@@ -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'
};
-13
View File
@@ -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,
+2 -1
View File
@@ -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 -5
View File
@@ -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
+1 -1
View File
@@ -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',
+13 -8
View File
@@ -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) => {
+7 -2
View File
@@ -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 -1
View File
@@ -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 });
}
}
},