From 98a411523f60ad161992f09406aec6682c8748de Mon Sep 17 00:00:00 2001 From: jina Date: Wed, 4 Oct 2023 16:05:25 +0900 Subject: [PATCH 01/17] =?UTF-8?q?feat:=20=ED=94=84=EB=A1=9C=ED=95=84?= =?UTF-8?q?=EC=97=90=20=EC=86=8C=EC=85=9C=20=EB=A7=81=ED=81=AC=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- 42manito/public/Slack-mark-RGB.png | Bin 0 -> 14675 bytes 42manito/src/RTK/Slices/ProfileUpdate.ts | 12 +++++-- .../Types/MentorProfiles/MentorProfile.dto.ts | 1 + .../MentorProfilePatchReq.dto.ts | 1 + 42manito/src/Types/Users/UserDefault.dto.ts | 1 + 42manito/src/components/Profile/Info.tsx | 10 ++++-- 42manito/src/components/Profile/Toggle.tsx | 32 ++++++++---------- .../src/components/Profile/UserProfile.tsx | 9 +++-- 42manito/src/pages/ProfileUpdate/[userId].tsx | 28 +++++++++++++++ 42manito/src/styles/profile.css | 21 +++++++----- 10 files changed, 83 insertions(+), 32 deletions(-) create mode 100644 42manito/public/Slack-mark-RGB.png diff --git a/42manito/public/Slack-mark-RGB.png b/42manito/public/Slack-mark-RGB.png new file mode 100644 index 0000000000000000000000000000000000000000..8fe767eda642ed54b0cbefb412562eee44a8b284 GIT binary patch literal 14675 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 { if ( state.categories.some( - (category) => category.name === action.payload.name, + (category) => category.name === action.payload.name ) ) { return; @@ -65,14 +67,17 @@ export const ProfileUpdateSlice = createSlice({ setViewConnectModal(state, action: PayloadAction) { state.viewConnectModal = action.payload; }, + setSocialLink(state, action: PayloadAction) { + state.socialLink = action.payload; + }, deleteOneHashtag(state, action: PayloadAction) { state.hashtags = state.hashtags.filter( - (hashtag) => hashtag.name !== action.payload, + (hashtag) => hashtag.name !== action.payload ); }, deleteOneCategory(state, action: PayloadAction) { state.categories = state.categories.filter( - (category) => category.name !== action.payload, + (category) => category.name !== action.payload ); }, deleteAll(state) { @@ -93,6 +98,7 @@ export const { deleteOneCategory, setDisabled, setViewConnectModal, + setSocialLink, } = ProfileUpdateSlice.actions; export default ProfileUpdateSlice.reducer; diff --git a/42manito/src/Types/MentorProfiles/MentorProfile.dto.ts b/42manito/src/Types/MentorProfiles/MentorProfile.dto.ts index 78624905..3958aae6 100644 --- a/42manito/src/Types/MentorProfiles/MentorProfile.dto.ts +++ b/42manito/src/Types/MentorProfiles/MentorProfile.dto.ts @@ -16,4 +16,5 @@ export interface MentorProfileDto { nickname: string; profileImage: string; }; + socialLink: string; } diff --git a/42manito/src/Types/MentorProfiles/MentorProfilePatchReq.dto.ts b/42manito/src/Types/MentorProfiles/MentorProfilePatchReq.dto.ts index eea54b3f..7dba8a36 100644 --- a/42manito/src/Types/MentorProfiles/MentorProfilePatchReq.dto.ts +++ b/42manito/src/Types/MentorProfiles/MentorProfilePatchReq.dto.ts @@ -8,4 +8,5 @@ export interface MentorProfilePatchReqDto { description?: string; hashtags?: HashtagResponseDto[]; categories?: CategoriesResponseDto[]; + socialLink?: string; } diff --git a/42manito/src/Types/Users/UserDefault.dto.ts b/42manito/src/Types/Users/UserDefault.dto.ts index 77cb5634..a73d8fff 100644 --- a/42manito/src/Types/Users/UserDefault.dto.ts +++ b/42manito/src/Types/Users/UserDefault.dto.ts @@ -20,5 +20,6 @@ export interface UserDefaultDto { updatedAt: string; hashtags: HashtagResponseDto[]; categories: CategoriesResponseDto[]; + socialLink: string; }; } diff --git a/42manito/src/components/Profile/Info.tsx b/42manito/src/components/Profile/Info.tsx index e519ae9b..4af4ae6d 100644 --- a/42manito/src/components/Profile/Info.tsx +++ b/42manito/src/components/Profile/Info.tsx @@ -3,15 +3,21 @@ import React from "react"; interface props { nickname: string; count?: number; + socialLink?: string; } -export default function ProfileInfo({ nickname, count }: props) { +export default function ProfileInfo({ nickname, count, socialLink }: props) { return (
-
+
{nickname} + {socialLink !== undefined && ( + + + + )}
diff --git a/42manito/src/components/Profile/Toggle.tsx b/42manito/src/components/Profile/Toggle.tsx index bdac56b1..6fc06349 100644 --- a/42manito/src/components/Profile/Toggle.tsx +++ b/42manito/src/components/Profile/Toggle.tsx @@ -7,30 +7,28 @@ export default function ManitoToggle() { const [isHide, setIsHide] = useState(false); const [setIsHideMutation, {}] = useSetIsHideMutation(); const userId = useSelector( - (state: RootState) => state.rootReducers.global.uId, + (state: RootState) => state.rootReducers.global.uId ); const { data: userData, isLoading: userLoading } = useGetUserQuery( { id: userId as number }, - { skip: userId === undefined }, + { skip: userId === undefined } ); const changeToggle = (e: React.ChangeEvent) => { - if (e.target.checked === false){ - setIsHideMutation({ id: userId as number, isHide: true }); - } - else{ - if (userData) { - const {categories, hashtags} = userData.mentorProfile; - if(categories.length == 0 && hashtags.length == 0) - alert("멘토링 분야와 관심 분야를 각각 최소한 하나 이상 설정해야 합니다."); - else if (categories.length == 0) - alert("멘토링 분야를 최소한 하나 이상 설정해야 합니다."); - else if (hashtags.length == 0) - alert("관심 분야를 최소한 하나 이상 설정해야 합니다."); - else - setIsHideMutation({ id: userId as number, isHide: false }); - } + if (e.target.checked === false) { + setIsHideMutation({ id: userId as number, isHide: true }); + } else { + if (userData) { + const { categories, hashtags, socialLink } = userData.mentorProfile; + console.log(categories, hashtags, socialLink); + if (categories.length == 0) + alert("멘토링 분야를 최소한 하나 이상 설정해야 합니다."); + else if (hashtags.length == 0) + alert("관심 분야를 최소한 하나 이상 설정해야 합니다."); + else if (socialLink == "") alert("슬랙 프로필 링크를 추가해야 합니다."); + else setIsHideMutation({ id: userId as number, isHide: false }); } + } }; useEffect(() => { diff --git a/42manito/src/components/Profile/UserProfile.tsx b/42manito/src/components/Profile/UserProfile.tsx index 6f0eeb7c..0e9e8da4 100644 --- a/42manito/src/components/Profile/UserProfile.tsx +++ b/42manito/src/components/Profile/UserProfile.tsx @@ -5,8 +5,9 @@ import DescriptionComponent from "@/components/Profile/Description"; import { useProfileDetailModal } from "@/hooks/Profile/Component"; import { useRouter } from "next/router"; import CardHashtag from "@/components/Global/CardHashtag"; -import { useDispatch } from "react-redux"; +import { useDispatch, useSelector } from "react-redux"; import { CurrMentorSlice } from "@/RTK/Slices/CurrMentor"; +import { RootState } from "@/RTK/store"; interface props { UserId: number; @@ -24,7 +25,10 @@ export default function UserProfile({ UserId, children }: props) { router.push(`/Search/${name}`); dispatch(CurrMentorSlice.actions.closeMentorModal()); }; - + const uid = Number(router.query.userId); + const loginId = useSelector( + (state: RootState) => state.rootReducers.global.uId + ); return ( <> {UserData && !UserLoading && ( @@ -34,6 +38,7 @@ export default function UserProfile({ UserId, children }: props) {
diff --git a/42manito/src/pages/ProfileUpdate/[userId].tsx b/42manito/src/pages/ProfileUpdate/[userId].tsx index 73c18315..d1e18eb6 100644 --- a/42manito/src/pages/ProfileUpdate/[userId].tsx +++ b/42manito/src/pages/ProfileUpdate/[userId].tsx @@ -23,6 +23,8 @@ import CategoryUpdateMultiple from "@/components/Profile/Update/CategoryUpdateMu import HashtagUpdateInput from "@/components/Profile/Update/HashtagUpdateInput"; import { ButtonType } from "@/Types/General/ButtonType"; import CardHashtag from "@/components/Global/CardHashtag"; +import { QuestionCircleOutlined } from "@ant-design/icons"; +import Link from "next/link"; const { TextArea } = Input; @@ -31,6 +33,7 @@ export default function ProfileUpdate() { const { userId } = route.query; const [shortDescription, setShortDescription] = useState(""); const [Description, setDescription] = useState(""); + const [socialLink, setSocialLink] = useState(""); const { data: allCategories, isLoading, error } = useGetCategoriesQuery(); const dispatch = useAppDispatch(); const formData = useSelector( @@ -61,6 +64,7 @@ export default function ProfileUpdate() { form.categories = formData.categories; form.shortDescription = shortDescription; form.description = Description; + form.socialLink = socialLink; UserUpdate({ id: Number(userId as string), profile: form, @@ -92,8 +96,14 @@ export default function ProfileUpdate() { UserData.mentorProfile.categories ) ); + dispatch( + ProfileUpdateSlice.actions.setSocialLink( + UserData.mentorProfile.socialLink + ) + ); setDescription(UserData.mentorProfile.description); setShortDescription(UserData.mentorProfile.shortDescription); + setSocialLink(UserData.mentorProfile.socialLink); } }, [UserData, dispatch]); @@ -170,6 +180,24 @@ export default function ProfileUpdate() {
+
+ + 슬랙 링크 + + + + + + 슬랙 프로필 링크를 입력해주세요 + +