Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Feature/#371 학습자료 상세 조회 에러 처리 #377

Open
wants to merge 3 commits into
base: develop
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions src/app/team/[teamId]/study/[studyId]/page.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -144,6 +144,7 @@ const Page = ({ params }: { params: { teamId: number; studyId: number } }) => {
<Grid gap="2" templateColumns={{ base: 'repeat(2, 1fr)', lg: 'repeat(4, 1fr)' }}>
{documentArray.map((data) => (
<DocumentCard
teamId={params.teamId}
id={data.id}
key={data.id}
title={data.title}
Expand Down
1 change: 1 addition & 0 deletions src/containers/document/Documents/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ const Documents = ({ groupId, category, refetchTrigger = false }: DocumentPagePr
<Grid gap={{ sm: '2', md: '4', xl: '8' }} templateColumns={`repeat(${itemsPerPage / 2}, 1fr)`} w="100%">
{currentData.map((data) => (
<DocumentCard
teamId={data.teamId}
id={data.id}
key={data.id}
title={data.title}
Expand Down
25 changes: 23 additions & 2 deletions src/containers/study/DocumentModal/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -2,17 +2,20 @@

import { Box, Flex, Text, Image } from '@chakra-ui/react';
import Link from 'next/link';
import { useState } from 'react';
import { useEffect, useState } from 'react';
import { BiFile, BiLink } from 'react-icons/bi';

import { deleteDocument, getDocument } from '@/app/api/document';
import { getTeamMembers } from '@/app/api/team';
import IconBox from '@/components/IconBox';
import ActionModal from '@/components/Modal/ActionModal';
import AlertModal from '@/components/Modal/AlertModal';
import S3_URL from '@/constants/s3Url';
import CreateDocumentModal from '@/containers/study/CreateDocumentModal';
import { useGetFetchWithToken, useMutateWithToken } from '@/hooks/useFetchWithToken';
import useGetUser from '@/hooks/useGetUser';
import colors from '@/theme/foundations/colors';
import { DocumentDetail } from '@/types';
import { DocumentDetail, Member } from '@/types';

import { DocumentModalProps } from './types';

Expand All @@ -39,6 +42,24 @@ const DocumentModal = ({ id, isOpen, setIsDocsModalOpen, setReload }: DocumentMo
setReload((prev: boolean) => !prev);
};

const user = useGetUser();
const [isMember, setIsMember] = useState<boolean>(false);
const { result: teamMembers } = useGetFetchWithToken(getTeamMembers, [document?.teamId], user);

useEffect(() => {
if (user?.isLogin) {
setIsMember(teamMembers?.some((member: Member) => member.id === user.memberId));
}
}, [teamMembers, user]);

if (!isMember) {
return (
<AlertModal isOpen={isOpen} onClose={() => setIsDocsModalOpen(false)} title="접근 권한이 없습니다." size="sm">
<Text>{user?.isLogin ? '팀원만 접근 가능합니다.' : '로그인 후 접근 가능합니다.'}</Text>
</AlertModal>
);
}

return (
<ActionModal
isOpen={isOpen}
Expand Down
1 change: 1 addition & 0 deletions src/containers/team/DocumentGridView/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ const DocumentGridView = ({ documentArray, setReload = () => {} }: DocumentGridV
{documentArray?.map((document) => {
return (
<DocumentCard
teamId={document.teamId}
key={document.id}
id={document.id}
title={document.title}
Expand Down
8 changes: 8 additions & 0 deletions src/mocks/documentCard.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { DocumentList } from '@/types';

const documentCardData: DocumentList[] = [
{
teamId: 1,
id: 1,
title: '자료이름1',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -18,6 +19,7 @@ const documentCardData: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 2,
title: '자료이름2',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -34,6 +36,7 @@ const documentCardData: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 3,
title: '자료이름3',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -51,6 +54,7 @@ const documentCardData: DocumentList[] = [
},

{
teamId: 1,
id: 4,
title: '자료이름4',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -67,6 +71,7 @@ const documentCardData: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 5,
title: '자료이름5',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -84,6 +89,7 @@ const documentCardData: DocumentList[] = [
},

{
teamId: 1,
id: 6,
title: '자료이름6',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -100,6 +106,7 @@ const documentCardData: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 7,
title: '자료이름7',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -116,6 +123,7 @@ const documentCardData: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 8,
title: '자료이름8',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand Down
12 changes: 12 additions & 0 deletions src/mocks/documentCardAll.ts
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import { DocumentList } from '@/types';

const documentCardDataAll: DocumentList[] = [
{
teamId: 1,
id: 1,
title: '자료이름1',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -17,6 +18,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 2,
title: '자료이름2',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -32,6 +34,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 3,
title: '자료이름3',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -47,6 +50,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 4,
title: '자료이름4',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -62,6 +66,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 5,
title: '자료이름5',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -77,6 +82,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 6,
title: '자료이름6',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -92,6 +98,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 7,
title: '자료이름7',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -107,6 +114,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 8,
title: '자료이름8',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -122,6 +130,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 9,
title: '자료이름9',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -137,6 +146,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 10,
title: '자료이름10',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -152,6 +162,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 11,
title: '자료이름11',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand All @@ -167,6 +178,7 @@ const documentCardDataAll: DocumentList[] = [
type: 'IMAGE',
},
{
teamId: 1,
id: 12,
title: '자료이름12',
description: '이번 포스팅은 [스터디 목적]에 관한것입니다. 먼저 [목차]는 이렇습니다.',
Expand Down
1 change: 1 addition & 0 deletions src/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -111,6 +111,7 @@ export interface Document {
}

export interface DocumentList {
readonly teamId: number;
id: number;
title: string;
description: string;
Expand Down