* Dashboard submenu (#4545) * add app submenu (#4452) * add app submenu * fix * width & i18n * optimize submenu code (#4515) * optimize submenu code * fix * fix * fix * fix ts * perf: dashboard sub menu * doc --------- Co-authored-by: heheer <heheer@sealos.io> * feat: value format test * doc * Mcp export (#4555) * feat: mcp server * feat: mcp server * feat: mcp server build * update doc * perf: path selector (#4556) * perf: path selector * fix: docker file path * perf: add image endpoint to dataset search (#4557) * perf: add image endpoint to dataset search * fix: mcp_server url * human in loop (#4558) * Support interactive nodes for loops, and enhance the function of merging nested and loop node history messages. (#4552) * feat: add LoopInteractive definition * feat: Support LoopInteractive type and update related logic * fix: Refactor loop handling logic and improve output value initialization * feat: Add mergeSignId to dispatchLoop and dispatchRunAppNode responses * feat: Enhance mergeChatResponseData to recursively merge plugin details and improve response handling * refactor: Remove redundant comments in mergeChatResponseData for clarity * perf: loop interactive * perf: human in loop --------- Co-authored-by: Theresa <63280168+sd0ric4@users.noreply.github.com> * mcp server ui * integrate mcp (#4549) * integrate mcp * delete unused code * fix ts * bug fix * fix * support whole mcp tools * add try catch * fix * fix * fix ts * fix test * fix ts * fix: interactive in v1 completions * doc * fix: router path * fix mcp integrate (#4563) * fix mcp integrate * fix ui * fix: mcp ux * feat: mcp call title * remove repeat loading * fix mcp tools avatar (#4564) * fix * fix avatar * fix update version * update doc * fix: value format * close server and remove cache * perf: avatar --------- Co-authored-by: heheer <heheer@sealos.io> Co-authored-by: Theresa <63280168+sd0ric4@users.noreply.github.com>
87 lines
2.3 KiB
TypeScript
87 lines
2.3 KiB
TypeScript
import React, { useCallback, useEffect } from 'react';
|
|
import { useRouter } from 'next/router';
|
|
import type { ResLogin } from '@/global/support/api/userRes.d';
|
|
import { useUserStore } from '@/web/support/user/useUserStore';
|
|
import { clearToken } from '@/web/support/user/auth';
|
|
import { postFastLogin } from '@/web/support/user/api';
|
|
import { useToast } from '@fastgpt/web/hooks/useToast';
|
|
import Loading from '@fastgpt/web/components/common/MyLoading';
|
|
import { serviceSideProps } from '@/web/common/i18n/utils';
|
|
import { getErrText } from '@fastgpt/global/common/error/utils';
|
|
import { useTranslation } from 'next-i18next';
|
|
const FastLogin = ({
|
|
code,
|
|
token,
|
|
callbackUrl
|
|
}: {
|
|
code: string;
|
|
token: string;
|
|
callbackUrl: string;
|
|
}) => {
|
|
const { setUserInfo } = useUserStore();
|
|
const router = useRouter();
|
|
const { toast } = useToast();
|
|
const { t } = useTranslation();
|
|
const loginSuccess = useCallback(
|
|
(res: ResLogin) => {
|
|
setUserInfo(res.user);
|
|
|
|
setTimeout(() => {
|
|
router.push(decodeURIComponent(callbackUrl));
|
|
}, 100);
|
|
},
|
|
[setUserInfo, router, callbackUrl]
|
|
);
|
|
|
|
const authCode = useCallback(
|
|
async (code: string, token: string) => {
|
|
try {
|
|
const res = await postFastLogin({
|
|
code,
|
|
token
|
|
});
|
|
if (!res) {
|
|
toast({
|
|
status: 'warning',
|
|
title: t('common:support.user.login.error')
|
|
});
|
|
return setTimeout(() => {
|
|
router.replace('/login');
|
|
}, 1000);
|
|
}
|
|
loginSuccess(res);
|
|
} catch (error) {
|
|
toast({
|
|
status: 'warning',
|
|
title: getErrText(error, t('common:support.user.login.error'))
|
|
});
|
|
setTimeout(() => {
|
|
router.replace('/login');
|
|
}, 1000);
|
|
}
|
|
},
|
|
[loginSuccess, router, toast]
|
|
);
|
|
|
|
useEffect(() => {
|
|
clearToken();
|
|
router.prefetch(callbackUrl);
|
|
authCode(code, token);
|
|
}, []);
|
|
|
|
return <Loading />;
|
|
};
|
|
|
|
export async function getServerSideProps(content: any) {
|
|
return {
|
|
props: {
|
|
code: content?.query?.code || '',
|
|
token: content?.query?.token || '',
|
|
callbackUrl: content?.query?.callbackUrl || '/dashboard/apps',
|
|
...(await serviceSideProps(content))
|
|
}
|
|
};
|
|
}
|
|
|
|
export default FastLogin;
|