mirror of
https://github.com/labring/FastGPT.git
synced 2025-07-23 05:12:39 +00:00
fix: per;fix: invite user un refresh;perf: loginout (#3566)
* perf: loginout * fix: invite user un refresh * fix: per * fix: dockerfile * perf: docker file
This commit is contained in:
17
.github/workflows/preview-fastgpt-image.yml
vendored
17
.github/workflows/preview-fastgpt-image.yml
vendored
@@ -51,6 +51,23 @@ jobs:
|
|||||||
--cache-to=type=local,dest=/tmp/.buildx-cache \
|
--cache-to=type=local,dest=/tmp/.buildx-cache \
|
||||||
-t ${DOCKER_REPO_TAGGED} \
|
-t ${DOCKER_REPO_TAGGED} \
|
||||||
.
|
.
|
||||||
|
# Add write md step after build
|
||||||
|
- name: Write md
|
||||||
|
run: |
|
||||||
|
echo "# 🤖 Generated by deploy action" > report.md
|
||||||
|
echo "📦 Preview Image: \`${DOCKER_REPO_TAGGED}\`" >> report.md
|
||||||
|
cat report.md
|
||||||
|
|
||||||
|
- name: Gh Rebot for Sealos
|
||||||
|
uses: labring/gh-rebot@v0.0.6
|
||||||
|
if: ${{ (github.event_name == 'pull_request_target') }}
|
||||||
|
with:
|
||||||
|
version: v0.0.6
|
||||||
|
env:
|
||||||
|
GH_TOKEN: '${{ secrets.GH_PAT }}'
|
||||||
|
SEALOS_TYPE: 'pr_comment'
|
||||||
|
SEALOS_FILENAME: 'report.md'
|
||||||
|
SEALOS_REPLACE_TAG: 'DEFAULT_REPLACE_DEPLOY'
|
||||||
|
|
||||||
helm-check:
|
helm-check:
|
||||||
runs-on: ubuntu-20.04
|
runs-on: ubuntu-20.04
|
||||||
|
@@ -82,7 +82,6 @@ COPY ./projects/app/data /app/data
|
|||||||
RUN chown -R nextjs:nodejs /app/data
|
RUN chown -R nextjs:nodejs /app/data
|
||||||
|
|
||||||
# Add tmp directory permission control
|
# Add tmp directory permission control
|
||||||
RUN mkdir -p /tmp && chmod 666 /tmp
|
|
||||||
|
|
||||||
ENV NODE_ENV=production
|
ENV NODE_ENV=production
|
||||||
ENV NEXT_TELEMETRY_DISABLED=1
|
ENV NEXT_TELEMETRY_DISABLED=1
|
||||||
|
@@ -1,53 +1,50 @@
|
|||||||
import React, { useEffect } from 'react';
|
import React from 'react';
|
||||||
import { useTranslation } from 'next-i18next';
|
import { useTranslation } from 'next-i18next';
|
||||||
import MyModal from '@fastgpt/web/components/common/MyModal';
|
import MyModal from '@fastgpt/web/components/common/MyModal';
|
||||||
import {
|
import { Button, ModalFooter, ModalBody, Flex, Box, useTheme } from '@chakra-ui/react';
|
||||||
Button,
|
|
||||||
ModalFooter,
|
|
||||||
useDisclosure,
|
|
||||||
ModalBody,
|
|
||||||
Flex,
|
|
||||||
Box,
|
|
||||||
useTheme
|
|
||||||
} from '@chakra-ui/react';
|
|
||||||
import { useQuery } from '@tanstack/react-query';
|
|
||||||
import { getTeamList, updateInviteResult } from '@/web/support/user/team/api';
|
import { getTeamList, updateInviteResult } from '@/web/support/user/team/api';
|
||||||
import { TeamMemberStatusEnum } from '@fastgpt/global/support/user/team/constant';
|
import { TeamMemberStatusEnum } from '@fastgpt/global/support/user/team/constant';
|
||||||
import Avatar from '@fastgpt/web/components/common/Avatar';
|
import Avatar from '@fastgpt/web/components/common/Avatar';
|
||||||
import { useRequest } from '@fastgpt/web/hooks/useRequest';
|
|
||||||
import { useToast } from '@fastgpt/web/hooks/useToast';
|
import { useToast } from '@fastgpt/web/hooks/useToast';
|
||||||
import { useConfirm } from '@fastgpt/web/hooks/useConfirm';
|
import { useConfirm } from '@fastgpt/web/hooks/useConfirm';
|
||||||
import { useSystemStore } from '@/web/common/system/useSystemStore';
|
import { useSystemStore } from '@/web/common/system/useSystemStore';
|
||||||
|
import { useRequest2 } from '@fastgpt/web/hooks/useRequest';
|
||||||
|
import { useUserStore } from '@/web/support/user/useUserStore';
|
||||||
|
|
||||||
const UpdateInviteModal = () => {
|
const UpdateInviteModal = () => {
|
||||||
const { t } = useTranslation();
|
const { t } = useTranslation();
|
||||||
const theme = useTheme();
|
const theme = useTheme();
|
||||||
const { toast } = useToast();
|
const { toast } = useToast();
|
||||||
const { ConfirmModal, openConfirm } = useConfirm({});
|
|
||||||
const { feConfigs } = useSystemStore();
|
const { feConfigs } = useSystemStore();
|
||||||
|
const { initUserInfo } = useUserStore();
|
||||||
|
|
||||||
const { data: inviteList = [], refetch } = useQuery(['getInviteList'], () =>
|
const { ConfirmModal, openConfirm } = useConfirm({});
|
||||||
feConfigs.isPlus ? getTeamList(TeamMemberStatusEnum.waiting) : []
|
|
||||||
|
const { data: inviteList = [], run: fetchInviteList } = useRequest2(
|
||||||
|
async () => (feConfigs.isPlus ? getTeamList(TeamMemberStatusEnum.waiting) : []),
|
||||||
|
{
|
||||||
|
manual: false
|
||||||
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
const { mutate: onAccept, isLoading: isLoadingAccept } = useRequest({
|
const { runAsync: onAccept, loading: isLoadingAccept } = useRequest2(updateInviteResult, {
|
||||||
mutationFn: updateInviteResult,
|
|
||||||
onSuccess() {
|
onSuccess() {
|
||||||
toast({
|
toast({
|
||||||
status: 'success',
|
status: 'success',
|
||||||
title: t('common:user.team.invite.Accepted')
|
title: t('common:user.team.invite.Accepted')
|
||||||
});
|
});
|
||||||
refetch();
|
fetchInviteList();
|
||||||
|
initUserInfo();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
const { mutate: onReject, isLoading: isLoadingReject } = useRequest({
|
const { runAsync: onReject, loading: isLoadingReject } = useRequest2(updateInviteResult, {
|
||||||
mutationFn: updateInviteResult,
|
|
||||||
onSuccess() {
|
onSuccess() {
|
||||||
toast({
|
toast({
|
||||||
status: 'success',
|
status: 'success',
|
||||||
title: t('common:user.team.invite.Reject')
|
title: t('common:user.team.invite.Reject')
|
||||||
});
|
});
|
||||||
refetch();
|
fetchInviteList();
|
||||||
|
initUserInfo();
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -59,7 +56,7 @@ const UpdateInviteModal = () => {
|
|||||||
<Box>
|
<Box>
|
||||||
<Box>{t('common:user.team.Processing invitations')}</Box>
|
<Box>{t('common:user.team.Processing invitations')}</Box>
|
||||||
<Box fontWeight={'normal'} fontSize={'sm'} color={'myGray.500'}>
|
<Box fontWeight={'normal'} fontSize={'sm'} color={'myGray.500'}>
|
||||||
{t('user.team.Processing invitations Tips', { amount: inviteList?.length })}
|
{t('common:user.team.Processing invitations Tips', { amount: inviteList?.length })}
|
||||||
</Box>
|
</Box>
|
||||||
</Box>
|
</Box>
|
||||||
}
|
}
|
||||||
|
@@ -10,8 +10,6 @@ import { useContextSelector } from 'use-context-selector';
|
|||||||
import { useRouter } from 'next/router';
|
import { useRouter } from 'next/router';
|
||||||
import FillRowTabs from '@fastgpt/web/components/common/Tabs/FillRowTabs';
|
import FillRowTabs from '@fastgpt/web/components/common/Tabs/FillRowTabs';
|
||||||
import MyIcon from '@fastgpt/web/components/common/Icon';
|
import MyIcon from '@fastgpt/web/components/common/Icon';
|
||||||
import { useToast } from '@fastgpt/web/hooks/useToast';
|
|
||||||
import { useSystemStore } from '@/web/common/system/useSystemStore';
|
|
||||||
import { TeamMemberRoleEnum } from '@fastgpt/global/support/user/team/constant';
|
import { TeamMemberRoleEnum } from '@fastgpt/global/support/user/team/constant';
|
||||||
import { TeamContext, TeamModalContextProvider } from './components/context';
|
import { TeamContext, TeamModalContextProvider } from './components/context';
|
||||||
import dynamic from 'next/dynamic';
|
import dynamic from 'next/dynamic';
|
||||||
|
@@ -1,15 +1,9 @@
|
|||||||
import type { NextApiRequest, NextApiResponse } from 'next';
|
import type { NextApiRequest, NextApiResponse } from 'next';
|
||||||
import { jsonRes } from '@fastgpt/service/common/response';
|
|
||||||
import { clearCookie } from '@fastgpt/service/support/permission/controller';
|
import { clearCookie } from '@fastgpt/service/support/permission/controller';
|
||||||
|
import { NextAPI } from '@/service/middleware/entry';
|
||||||
|
|
||||||
export default async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
|
async function handler(req: NextApiRequest, res: NextApiResponse<any>) {
|
||||||
try {
|
clearCookie(res);
|
||||||
clearCookie(res);
|
|
||||||
jsonRes(res);
|
|
||||||
} catch (err) {
|
|
||||||
jsonRes(res, {
|
|
||||||
code: 500,
|
|
||||||
error: err
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export default NextAPI(handler);
|
||||||
|
Reference in New Issue
Block a user