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

Upload/Main Merge #100 #118

Merged
merged 45 commits into from
Mar 5, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
45 commits
Select commit Hold shift + click to select a range
cc777d2
gitignore
AngelaChaejung Feb 13, 2023
8e6fcc7
Merge pull request #102 from haruharuganda/main
AngelaChaejung Mar 2, 2023
316019a
Merge pull request #103 from haruharuganda/main
AngelaChaejung Mar 2, 2023
12c7f9b
Create main.yml
AngelaChaejung Mar 2, 2023
5f3fa69
ACCESS_KEY_ID 변경
AngelaChaejung Mar 2, 2023
a073b82
Merge pull request #2 from AngelaChaejung/CI/CD
AngelaChaejung Mar 2, 2023
9279530
Update main.yml
AngelaChaejung Mar 2, 2023
d2d897f
Merge branch 'main' into dev
AngelaChaejung Mar 2, 2023
73d2f96
Feat/Router #92 Router 비밀번호 변경 오류 수정 피드백
Mar 2, 2023
582b6c8
Upload/Main Merge #100 githubaction 추가
Mar 3, 2023
202aa3a
no message
Mar 3, 2023
7a5db64
Feat/NaverLogin
AngelaChaejung Mar 3, 2023
6202f56
Feat/notification #38 - 알림 읽음표시부분 개선
AngelaChaejung Mar 3, 2023
4d292cc
Feat/NaverLogin-changed callback URL
AngelaChaejung Mar 3, 2023
14fae81
Update Router.jsx
AngelaChaejung Mar 3, 2023
e1a087a
Fix #6 카카오 로그인 API 변경 적용
dong-fa Mar 3, 2023
538589e
Merge pull request #112 from dong-fa/Feat/Kakao
haruharuganda Mar 3, 2023
c2bb8c5
Design/ schedule add - 내부 QA 피드백반영
AngelaChaejung Mar 3, 2023
24fc884
Design/ schedule detail #29 내부 QA 피드백반영
AngelaChaejung Mar 3, 2023
6e57068
Feat/ notification #38 알림 종모양 빨간불 기능 추가
AngelaChaejung Mar 3, 2023
9bcb23a
Feat/schedule add #9 -Date picker 시차오류 해결
AngelaChaejung Mar 4, 2023
0f3e948
Feat/ Mainpage key값오류 해결 w/승주님
AngelaChaejung Mar 4, 2023
1b0b999
Test/Notification #38
AngelaChaejung Mar 4, 2023
d6dfe7d
Feat/Notificaton alert 삭제
AngelaChaejung Mar 4, 2023
7456d1d
Fix #10 팔로우 페이지 카운터 추가중
dong-fa Mar 4, 2023
4fdb3a9
Fix/Edit profile 이미지 미선택시 기본이미지로 바뀌는 에러 수정, 기본이미지로 변경 추가
AngelaChaejung Mar 4, 2023
14f4419
Feat. GitHubAction #105 GitHubAction test index.html Title 변경
Mar 4, 2023
0d93c54
Fix #10 팔로우 로직 변경
dong-fa Mar 4, 2023
0bbc4b7
Fix #10 팔로우 로직 변경
haruharuganda Mar 4, 2023
f966e1f
Merge branch 'gnims-project:dev' into dev
haruharuganda Mar 4, 2023
9197b43
Feat/notification #38 노티 모달 (리덕스 적용안돼서 useState이용. 차차수정할 예정)
AngelaChaejung Mar 4, 2023
f33e552
Delete db.json
AngelaChaejung Mar 4, 2023
32c976c
Feat/Notification 모달, 메인에 표시. Fix/ScheduleAdd 내부QA 피드백, Fix/CSS 오류 수정…
dong-fa Mar 4, 2023
3acb277
Merge branch 'master' of https://github.com/haruharuganda/Gnims-front…
Mar 5, 2023
5e88ed6
Feat. GitHubAction #105 GitHubAction test index.html Title 변경
Mar 5, 2023
406137c
Merge pull request #117 from haruharuganda/dev
haruharuganda Mar 5, 2023
a092f91
Merge branch 'main' into dev
dong-fa Mar 5, 2023
f57b6dc
Delete main.yml
dong-fa Mar 5, 2023
05bce7f
Update FollowList.jsx
dong-fa Mar 5, 2023
fa98b7e
Update FollowList.jsx
dong-fa Mar 5, 2023
a946a21
Update FollowerCard.jsx
dong-fa Mar 5, 2023
7a9520e
Delete ChangePassword.jsx
dong-fa Mar 5, 2023
100161a
Update FollowSlice.jsx
dong-fa Mar 5, 2023
08d4541
Update LoginSlice.jsx
dong-fa Mar 5, 2023
de687e5
Update OAuth.jsx
dong-fa Mar 5, 2023
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 .env
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
REACT_APP_BASE_URL:https://eb.jxxhxxx.shop/
39 changes: 0 additions & 39 deletions .github/workflows/main.yml

This file was deleted.

4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@

# See https://help.github.com/articles/ignoring-files/ for more about ignoring files.

# dependencies
Expand Down Expand Up @@ -27,3 +28,6 @@ yarn-error.log
*.json

*.env



4 changes: 3 additions & 1 deletion public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,9 @@
work correctly both with client-side routing and a non-root public URL.
Learn how to configure a non-root public URL by running `npm run build`.
-->
<title>그님스</title>

<title>Gnims</title>

</head>
<body>
<noscript>You need to enable JavaScript to run this app.</noscript>
Expand Down
163 changes: 74 additions & 89 deletions src/components/Schedule/ScheduleDetail.jsx
Original file line number Diff line number Diff line change
@@ -1,136 +1,121 @@
import axios from "axios";
import React, { memo, useEffect, useState } from "react";
import React, { useEffect, useState } from "react";
import { useParams } from "react-router-dom";
import kebab from "../../img/kebab.png";
import BottomNavi from "../layout/BottomNavi";
import KebabModal from "../modal/KebabButtonModal";
import gnimsIcon from "../../img/gnimslogo1.png";
import { useDispatch, useSelector } from "react-redux";
import { __getScheduleDetail } from "../../redux/modules/ScheduleSlice";
import schedulealoneIcon from "../../img/schedulealone.png";

const ScheduleDetail = () => {
const dispatch = useDispatch();
const schedule = useSelector((state) => state.ScheduleSlice.oldschedules);
console.log("올드?", schedule);
// 모달 노출시키는 여부
const [modalOpen, setModalOpen] = useState(false);
const showModalHandler = () => {
setModalOpen(true);
};
//id구하기
const { id } = useParams();
console.log("이벤트아이디?", id);

//데이터베이스를 담을 schedule
// const [schedule, setSchedule] = useState([]);

// const fetchTodos = async () => {
// await instance.get(`/events/${id}`).then((appData) => {
// setSchedule(appData.data.data);
// }, []);
// };

const time = schedule.time?.split(":", 2).join(":");
useEffect(() => {
dispatch(__getScheduleDetail(id));
}, []);
console.log("디테일스케줄?", schedule);
// useEffect(() => {
// fetchTodos();
// }, []);

const joiner = schedule.invitees;
console.log(joiner);
const numberOfJoiner = joiner && joiner.length;
const hostId = schedule.hostId;
//isHidden은 해당 스케쥴이 본인의 스케쥴이 아닐 땐 케밥버튼이 보이지 않게하기 위해 쓰인다. 기본값은 flex이고,
let isHidden = "";
let isHidden;
//스케쥴의 참여자에 로그인한 본인의 닉네임이 포함되지 않으면 hidden값이 입혀진다.
if (hostId !== Number(sessionStorage.getItem("userId"))) {
isHidden = "hidden";
}
console.log(hostId === Number(sessionStorage.getItem("userId")));
console.log(hostId);
console.log(Number(sessionStorage.getItem("userId")));

return (
<div className="bg-[#F8FCFF] h-full width-[375px]">
<div>
<div className="fixed bottom-0">
{/* 케밥모달이 열리면 bottomNavi는 사라집니다 */}
{modalOpen ? false : <BottomNavi />}
</div>
{modalOpen && <KebabModal setModalOpen={setModalOpen} id={id} />}
<div
className={`h-[212px] bg-${schedule.cardColor} pl-[18px] pt-[23px] pr-[21px] text-white`}
>
<div className="flex flex-row-reverse ">
<img
className={`h-[20px] ${isHidden} row cursor-pointer`}
src={kebab}
alt="케밥메뉴"
onClick={showModalHandler}
/>
</div>
<div className="flex space-x-3 text-[18px] font-light ">
<div>{schedule.date}</div> <div> {time}</div>
<div>
<div className="bg-[#F8FCFF] h-full width-[375px]">
<div>
<div className="fixed bottom-0">
{/* 케밥모달이 열리면 bottomNavi는 사라집니다 */}
{modalOpen ? false : <BottomNavi />}
</div>
<div className="mt-[28px] font-semibold text-[24px]">
{schedule.subject}
</div>{" "}
<div className="place-content-end font-light flex text-[18px] mt-[70px]">
D-
{schedule.dday === 0 ? <div>DAY</div> : <div>{schedule.dday}</div>}
{modalOpen && <KebabModal setModalOpen={setModalOpen} id={id} />}
<div
className={`h-[212px] bg-${schedule.cardColor} pl-[18px] w-[375px] pt-[23px] pr-[21px] text-white
`}
>
<div className="flex flex-row-reverse ">
<img
className={`h-[20px] ${isHidden} row cursor-pointer`}
src={kebab}
alt="케밥메뉴"
onClick={showModalHandler}
/>
</div>
<div className="flex space-x-3 text-[18px] font-light ">
<div>{schedule.date}</div> <div> {time}</div>
</div>
<div className="mt-[28px] font-semibold text-[24px]">
{schedule.subject}
</div>{" "}
<div className="place-content-end font-light flex text-[18px] mt-[45px]">
D-
{schedule.dday === 0 ? (
<div>DAY</div>
) : (
<div>{schedule.dday}</div>
)}
</div>
</div>
</div>
<div className="">
<div>
{/* 참여자는 2명이상일 때부터 화면에 보입니다. */}
{numberOfJoiner !== 1 ? (
<div className="mt-[30px] h-[98px] ml-[20px]">
참여자
<div className="bg-white h-[50px] w-[335px] mt-[20px] p-[15px] drop-shadow-lg flex rounded-lg">
{joiner &&
joiner.map((a) => {
return (
<span className="text-sm ml-[5px]">{a.username}</span>
);
})}
<div className="">
<div>
{/* 참여자는 2명이상일 때부터 화면에 보입니다. */}
{numberOfJoiner !== 1 ? (
<div className="mt-[30px] h-[98px] ml-[20px]">
참여자
<div className="bg-white h-[50px] w-[335px] mt-[20px] p-[15px] drop-shadow-lg flex rounded-lg">
{joiner &&
joiner.map((a) => {
return (
<span className="text-sm ml-[5px]">{a.username}</span>
);
})}
</div>
</div>
) : (
false
)}
</div>
{/* 일정의 내용이 없을 땐 화면에 보이지 않습니다. */}
{schedule.content ? (
<div className="h-[234px] w-[375px] mt-[30px] mb-[8px] ml-[20px]">
일정내용{" "}
<div className="bg-white word-wrap break-words whitespace-normal shadow-lg h-[186px] w-[335px] mt-[20px] p-[20px] flex rounded-lg">
<div className="w-[295px] relative">{schedule.content}</div>
</div>
</div>
) : (
false
)}
</div>
{/* 일정의 내용이 없을 땐 화면에 보이지 않습니다. */}
{schedule.content ? (
<div className="h-[234px] mt-[30px] mb-[8px] ml-[20px]">
일정내용{" "}
<div className="bg-white shadow-lg h-[186px] w-[335px] mt-[20px] p-[15px] flex rounded-lg">
{schedule.content}
</div>
</div>
) : (
false
)}
{!schedule.content && numberOfJoiner === 1 ? (
<div className="m-auto justify-center items-center mt-[80px]">
<img
src={schedulealoneIcon}
alt="gnimslogo"
className="m-auto w-[167px] h-[153px] flex justify-center items-center"
/>
<div className="font-medium mt-[30px] text-[20px] text-center text-black">
혼자만의 일정이군요! <br />
때로는 개인시간도 중요한 법이죠.
{!schedule.content && numberOfJoiner === 1 ? (
<div className="m-auto justify-center items-center mt-[80px]">
<img
src={schedulealoneIcon}
alt="gnimslogo"
className="m-auto w-[167px] h-[153px] flex justify-center items-center"
/>
<div className="font-medium mt-[30px] text-[20px] text-center text-black">
혼자만의 일정이군요! <br />
때로는 개인시간도 중요한 법이죠.
</div>
</div>
</div>
) : null}
) : null}
</div>
</div>
</div>
</div>
);
};

export default memo(ScheduleDetail);
export default ScheduleDetail;
52 changes: 33 additions & 19 deletions src/components/follow/FollowList.jsx
Original file line number Diff line number Diff line change
@@ -1,41 +1,51 @@
import React, { useState, useEffect } from "react";
import { useDispatch, useSelector } from "react-redux";
import { __getFollower, __getFollowing } from "../../redux/modules/FollowSlice";
import {
__getFollower,
__getFollowing,
__getFollowerCount,
__getFollowingCount,
} from "../../redux/modules/FollowSlice";
import FollowerCard from "./FollowerCard";
import FollowingCard from "./FollowingCard";

const FollowList = () => {
const dispatch = useDispatch();
//탭 상태 변화
const [activeTab, setActiveTab] = useState("follower");
const [activeTab, setActiveTab] = useState("following");

//조건부 렌더링 설정하기 위한 스테이트
const [bdColor, setBdColor] = useState({
followerBD: "border-b-[1px] border-black",
followingBD: "",
});
const followerList = useSelector((state) => state.FollowSlice.followerList);
const followingList = useSelector((state) => state.FollowSlice.followingList);
const follower = useSelector((state) => state.FollowSlice.follower);
const following = useSelector((state) => state.FollowSlice.following);

useEffect(() => {
dispatch(__getFollower());
}, [FollowList]);
dispatch(__getFollowing());
}, [activeTab]);

useEffect(() => {
dispatch(__getFollowerCount());
dispatch(__getFollowingCount());
}, [follower, following]);

const handleTabChange = (tab) => {
console.log(tab);
setActiveTab(tab);
if (tab === "follower") {
//
if (tab === "following") {
setBdColor({
followerBD: "border-b-[1px] border-black",
followingBD: "",
});
dispatch(__getFollower());
dispatch(__getFollowing());
} else {
setBdColor({
followerBD: "",
followingBD: "border-b-[1px] border-black",
});
dispatch(__getFollowing());
dispatch(__getFollower());
}
};

Expand All @@ -44,31 +54,35 @@ const FollowList = () => {
<div className="flex">
<button
className={`${bdColor.followerBD} w-1/2 h-[40px] p-[10px] text-[18px] cursor-pointer`}
onClick={() => handleTabChange("follower")}
onClick={() => handleTabChange("following")}
>
팔로워
팔로잉 {following.followingCount}명
</button>
<button
className={`${bdColor.followingBD} w-1/2 h-[40px] p-[10px] text-[18px] cursor-pointer`}
onClick={() => handleTabChange("following")}
onClick={() => handleTabChange("follower")}
>
팔로잉
팔로워 {follower.followerCount}명
</button>
</div>
<div>
{activeTab === "follower" ? (
{activeTab === "following" ? (
<div>
{followerList.map((follower) => {
{following.followingList?.map((following) => {
return (
<FollowerCard key={follower.followId} follower={follower} />
<FollowingCard key={following.followId} following={following} />
);
})}
</div>
) : (
<div>
{followingList.map((following) => {
{follower.followerList?.map((follower) => {
return (
<FollowingCard key={following.followId} following={following} />
<FollowerCard
key={follower.followId}
follower={follower}
following={following}
/>
);
})}
</div>
Expand Down
Loading