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:
Archer
2025-01-11 17:16:17 +08:00
committed by GitHub
parent 10d8c56e23
commit f1f0ae2839
5 changed files with 41 additions and 36 deletions

View File

@@ -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

View File

@@ -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

View File

@@ -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>
} }

View File

@@ -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';

View File

@@ -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);