Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
15 commits
Select commit Hold shift + click to select a range
e9d88c9
Feat: Pagination ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์ œ์ž‘ ๋ฐ ์ ์šฉ
choiseona Dec 21, 2024
b04784b
Feat: InstanceCreate์˜ Button, DatePicker, Form, Image, Input, Select,โ€ฆ
choiseona Dec 23, 2024
33bb17f
Feat: InstanceEdit์˜ Button, Form, Image, Input, Upload, UploadProps๋ฅผ โ€ฆ
choiseona Dec 23, 2024
8969617
Feat: TopicCreate์˜ Button, Form, Input, Select๋ฅผ antd ์—†์ด ๊ตฌํ˜„
choiseona Dec 23, 2024
cd62f91
Feat: TopicEdit์˜ Button, Form, Input, Select๋ฅผ antd์—†์ด ๊ตฌํ˜„
choiseona Dec 23, 2024
938ee7f
Feat: ํŠน์ • ํ† ํ”ฝ์— ๋Œ€ํ•œ ์ธ์Šคํ„ด์Šค ์กฐํšŒ api ์ด์šฉํ•˜์—ฌ ์ธ์Šคํ„ด์Šค ๋„์šฐ๊ธฐ
choiseona Dec 23, 2024
82ae968
Feat: antd์˜ Checkbox ์—†์• ๊ณ  ์ง์ ‘ ๊ตฌํ˜„
choiseona Dec 23, 2024
5e292e6
Feat: InterestCheck ์ปดํฌ๋„ŒํŠธ ์—†์• ๊ณ , Interest์—์„œ Checkbox ๊ณตํ†ต ์ปดํฌ๋„ŒํŠธ ์‚ฌ์šฉ
choiseona Dec 23, 2024
d1ad109
Feat: UserImage์˜ antd Form, Upload, message๋ฅผ ์ง์ ‘ ๊ตฌํ˜„, UserInformationEdโ€ฆ
choiseona Dec 24, 2024
000e125
Chore: antd ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์‚ญ์ œ
choiseona Dec 24, 2024
a44abb3
Feat: formik์„ react hook form์œผ๋กœ ๊ต์ฒด
choiseona Dec 24, 2024
9b4bd7f
Chore: ํ•„์š”์—†๋Š” ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ์ œ๊ฑฐ
choiseona Dec 24, 2024
249a0a3
Feat: ์ด๋ฏธ์ง€ ํฌ๋งท, ํฌ๊ธฐ ์ œํ•œ ์ถ”๊ฐ€
choiseona Dec 24, 2024
c8aee8d
Fix: accessURI ํ•„๋“œ๋ช…์„ source๋กœ ๋ณ€๊ฒฝ
choiseona Dec 24, 2024
801be2c
Fix: ํƒ€์ž… ์—๋Ÿฌ ํ•ด๊ฒฐ
choiseona Dec 24, 2024
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
13 changes: 4 additions & 9 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,28 +21,22 @@
"@types/node": "^20.10.5",
"@types/react-custom-scrollbars": "^4.0.13",
"@types/react-facebook-login": "^4.1.10",
"@types/react-modal": "^3.16.3",
"@types/yup": "^0.32.0",
"antd": "^5.12.5",
"axios": "^1.6.3",
"crypto-js": "^4.2.0",
"formik": "^2.4.5",
"modal": "^1.2.0",
"moment": "^2.30.1",
"date-fns": "^4.1.0",
"nanoid": "^5.0.5",
"qs": "^6.11.2",
"react": "^18.2.0",
"react-custom-scrollbars": "^4.2.1",
"react-datepicker": "^7.5.0",
"react-dom": "^18.2.0",
"react-error-boundary": "^4.0.13",
"react-facebook-login": "^4.1.1",
"react-hook-form": "^7.54.2",
"react-intersection-observer": "^9.8.1",
"react-modal": "^3.16.1",
"react-query": "^3.39.3",
"react-router-dom": "^6.21.1",
"swiper": "^11.0.7",
"tailwind-scrollbar-hide": "^1.1.7",
"yup": "^1.3.3",
"zustand": "^4.5.2"
},
"devDependencies": {
Expand All @@ -60,6 +54,7 @@
"@types/crypto-js": "^4.2.2",
"@types/jest": "^29.5.11",
"@types/react": "^18.2.43",
"@types/react-datepicker": "^7.0.0",
"@types/react-dom": "^18.2.17",
"@types/react-query": "^1.2.9",
"@typescript-eslint/eslint-plugin": "^6.14.0",
Expand Down
1 change: 1 addition & 0 deletions src/apis/axios/request.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ const requests = {
fetchLogout: `/logout`,
fetchTopic: `/admin/topic`,
fetchInstance: `/admin/instance`,
fetchTopicInstnaces: `/admin/topic/instances`,
fetchChallenges: `/challenges`,
fetchChallengesLatest: `/challenges/latest`,
fetchChallengesActivity: `/challenges/my/activity`,
Expand Down
4 changes: 3 additions & 1 deletion src/apis/getAdminInstanceListApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,15 @@ import requests from "./axios/request";

type adminInstanceListApiType = {
pageNumber?: number;
topicId: number;
};

const getAdminInstanceListPageApi = async ({
pageNumber,
topicId,
}: adminInstanceListApiType) => {
const data = await instance
.get(`${requests.fetchInstance}?page=${pageNumber}&size=5`)
.get(`${requests.fetchTopicInstnaces}/${topicId}?page=${pageNumber}&size=5`)
.then((res) => {
const list = res.data.data;
return list || {};
Expand Down
2 changes: 1 addition & 1 deletion src/apis/getSearchedChallengeItem.ts
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ interface Data {
participantCount: number;
pointPerPerson: number;
fileResponse: {
accessURI: string;
source: string;
};
}

Expand Down
2 changes: 1 addition & 1 deletion src/apis/patchAdminInstanceFileEditApi.ts
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ import { multiInstance } from "./axios/axios";

type editInstacneType = {
instanceId: number;
instanceImg?: File;
instanceImg?: File | null;
};

const patchAdminInstanceFileEditApi = async ({
Expand Down
21 changes: 9 additions & 12 deletions src/apis/patchProfileImage.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
import requests from "./axios/request";
import { multiInstance } from "./axios/axios";

type PostSignUpProfileImageParams = {
files: any;
files: File | null;
userId: number;
};

Expand All @@ -10,19 +11,15 @@ const patchProfileImage = async ({
userId,
}: PostSignUpProfileImageParams) => {
if (!files) return;

const formData = new FormData();
const realFile = files?.file?.originFileObj;
const blob = new Blob([realFile], { type: files?.file?.type });
formData.append("files", blob, `profile-image.jpg`);
formData.append("files", files, `profile-image.jpg`);

const data = await multiInstance.patch(
`${requests.fetchFile}/${userId}?type=profile`,
formData
);

const data = await multiInstance
.patch(`${requests.fetchFile}/${userId}?type=profile`, formData)
.then((res) => {
return res;
})
.catch((err) => {
throw err;
});
return data;
};

Expand Down
3 changes: 1 addition & 2 deletions src/apis/postInterestEditApi.ts
Original file line number Diff line number Diff line change
@@ -1,9 +1,8 @@
import { CheckboxValueType } from "antd/es/checkbox/Group";
import requests from "./axios/request";
import { instance } from "./axios/axios";

type postInterestEditApiType = {
interestEditData: CheckboxValueType[];
interestEditData: string[];
};
const postInterestEditApi = async ({
interestEditData,
Expand Down
3 changes: 1 addition & 2 deletions src/apis/postSignUpApi.ts
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
import { CheckboxValueType } from "antd/es/checkbox/Group";
import requests from "./axios/request";
import { acceptInstance } from "./axios/axios";
type SignUpApiParams = {
identifier: string;
nickname: string;
information: string;
interest: CheckboxValueType[];
interest: string[];
};

const signUpApi = async ({
Expand Down
Original file line number Diff line number Diff line change
@@ -1,55 +1,46 @@
import { AdminListLayOut } from "@/components/Admin/AdminLayOut/AdminListLayOut/AdminListLayOut";
import CreateBtn from "@/components/Admin/CreateBtn/CreateBtn";
import { useInstanceListQuery } from "@/hooks/queries/useAdminInstanceQuery";
import { useTopicDetailQuery } from "@/hooks/queries/useAdminTopicQuery";
import { decrypt } from "@/hooks/useCrypto";
import { Pagination } from "antd";
import { useEffect, useState } from "react";
import { useState } from "react";
import { useLocation } from "react-router-dom";
import InstanceListComponent from "../InstanceListComponent";
import { Pagination } from "@/components/Common/Pagination";

function AdminInstanceContent() {
const [pageNumber, setPageNumber] = useState<number>(0);
const [totalNumber, setTotalNumber] = useState<number>(0);
const [pageNumber, setPageNumber] = useState<number>(1);
const location = useLocation();

const topicId = location.state.topicId;
const decryptTopicId = decrypt(topicId);

const { data: topicDetail } = useTopicDetailQuery({
topicId: decryptTopicId,
});
const { data: instanceContent } = useInstanceListQuery({
pageNumber: pageNumber - 1,
topicId: decryptTopicId,
});

const handlePageChange = (page: number) => {
setPageNumber(page);
};

useEffect(() => {
setTotalNumber(instanceContent.totalElements);
}, [instanceContent]);

return (
<>
<AdminListLayOut.MainContent>
<>
<CreateBtn tokken="instance" topicId={topicId} />
<InstanceListComponent
instanceList={instanceContent.content}
topicDetail={topicDetail}
/>
<InstanceListComponent instanceList={instanceContent.content} />
</>
</AdminListLayOut.MainContent>
<AdminListLayOut.PageNation>
<Pagination
current={pageNumber}
pageSize={5}
total={totalNumber}
onChange={handlePageChange}
className="mt-10"
/>
{instanceContent.totalElements > 0 && (
<Pagination
currentPage={pageNumber}
totalPages={instanceContent.totalPages}
limit={5}
onPageChange={handlePageChange}
className="mt-10"
/>
)}
</AdminListLayOut.PageNation>
</>
);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,18 @@
import Button from "@/components/Common/Button";
import moment from "moment";
import deleteAdminInstanceApi from "@/apis/deleteAdminInstanceApi";
import { adminTopicDataType, instanceListDataType } from "@/types/adminType";
import { instanceListDataType } from "@/types/adminType";
import InstanceTitle from "./InstanceTitle/InstanceTitle";
import { useNavigate } from "react-router-dom";
import { useQueryClient } from "react-query";
import { encrypt } from "@/hooks/useCrypto";
import { PATH } from "@/constants/path";
import { format } from "date-fns";

type instanceListPropsType = {
instanceList: any;
topicDetail?: adminTopicDataType;
instanceList: instanceListDataType[];
};

const InstanceListComponent = ({
instanceList,
topicDetail,
}: instanceListPropsType) => {
const InstanceListComponent = ({ instanceList }: instanceListPropsType) => {
const navigate = useNavigate();
const queryClient = useQueryClient();

Expand All @@ -25,19 +21,14 @@ const InstanceListComponent = ({
navigate(`${PATH.ADMIN_INSTANCE}/${InstanceCryptoId}/edit`);
};

const topicPropsId = topicDetail?.topicId;
const instanceFilterList = instanceList.filter(
(item: instanceListDataType) => item.topicId === topicPropsId
);

return (
<>
<ul className="flex flex-col gap-10 rounded-xl h-full">
<>
{instanceFilterList.map((item: instanceListDataType) => {
const imageData = item.fileResponse.accessURI;
const startDate = moment(item.startedAt).format("YYYY-MM-DD");
const completedDate = moment(item.completedAt).format("YYYY-MM-DD");
{instanceList.map((item: instanceListDataType) => {
const imageData = item.fileResponse.source;
const startDate = format(item.startedAt, "yyyy-MM-dd");
const completedDate = format(item.completedAt, "yyyy-MM-dd");
return (
<li
className="flex gap-[1.5rem] p-[1rem] bg-_neutral-10"
Expand Down
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
import { AdminListLayOut } from "@/components/Admin/AdminLayOut/AdminListLayOut/AdminListLayOut";
import CreateBtn from "@/components/Admin/CreateBtn/CreateBtn";
import { Pagination } from "antd";
import TopicListComponents from "@/components/Admin/AdminTopic/TopicListComponent/TopicListComponent";
import { useEffect, useState } from "react";
import { useState } from "react";
import { useTopicListQuery } from "@/hooks/queries/useAdminTopicQuery";
import { Pagination } from "@/components/Common/Pagination";

function AdminTopicContent() {
const [pageNumber, setPageNumber] = useState<number>(0);
const [totalNumber, setTotalNumber] = useState<number>(0);
const [pageNumber, setPageNumber] = useState<number>(1);

const { data: adminData } = useTopicListQuery({
pageNumber: pageNumber - 1,
Expand All @@ -18,10 +17,6 @@ function AdminTopicContent() {
setPageNumber(page);
};

useEffect(() => {
setTotalNumber(adminData.totalElements);
}, [adminData]);

return (
<>
<AdminListLayOut.MainContent>
Expand All @@ -31,13 +26,15 @@ function AdminTopicContent() {
</>
</AdminListLayOut.MainContent>
<AdminListLayOut.PageNation>
<Pagination
current={pageNumber}
pageSize={5}
total={totalNumber}
onChange={handlePageChange}
className="mt-10"
/>
{adminData.totalElements > 0 && (
<Pagination
currentPage={pageNumber}
totalPages={adminData.totalPages}
limit={5}
onPageChange={handlePageChange}
className="mt-10"
/>
)}
</AdminListLayOut.PageNation>
</>
);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ function ChallengeInformation() {
<>
<div className="relative">
<ChallengeImage
imgSrc={data.fileResponse.accessURI}
imgSrc={data.fileResponse.source}
alt={"์ฑŒ๋ฆฐ์ง€ ์ด๋ฏธ์ง€"}
/>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ function MyProfile({ decryptedUserId }: Props) {
/>
)}
<Profile.Image
imgSrc={userProfile.fileResponse.accessURI}
imgSrc={userProfile.fileResponse.source}
alt={"ํ”„๋กœํ•„ ์ด๋ฏธ์ง€"}
width="w-[13rem]"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ function OthersProfile({ decryptedUserId }: Props) {
/>
)}
<Profile.Image
imgSrc={userProfile.fileResponse.accessURI}
imgSrc={userProfile.fileResponse.source}
alt={"ํ”„๋กœํ•„ ์ด๋ฏธ์ง€"}
width="w-[13rem]"
/>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,7 @@ function ChallengeDetailContent({ decryptId }: Props) {
return (
<>
<div className="max-w-[54.6rem] w-full flex flex-col gap-[2.3rem]">
<Image imgSrc={data.fileResponse.accessURI} alt={"์ฑŒ๋ฆฐ์ง€ ์ด๋ฏธ์ง€"} />
<Image imgSrc={data.fileResponse.source} alt={"์ฑŒ๋ฆฐ์ง€ ์ด๋ฏธ์ง€"} />
<CoreInformation
challengeTitle={data.title}
applicant={data.participantCount}
Expand Down
4 changes: 2 additions & 2 deletions src/components/Common/BottomButton/BottomButton.tsx
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
type bottomButtonType = {
content: string;
onClick: any;
onClick?: any;
btnColor: string;
btnMaxWidth: string;
btnTextColor: string;
Expand Down Expand Up @@ -30,7 +30,7 @@ const BottomButton = ({
type="submit"
onClick={() => {
{
onClick();
onClick && onClick();
}
}}
>
Expand Down
Loading
Loading