diff --git a/src/api/activities.ts b/src/api/activities.ts new file mode 100644 index 00000000..a924a8d6 --- /dev/null +++ b/src/api/activities.ts @@ -0,0 +1,32 @@ +import type { + GetActivitiesByUsernameRequest, + GetActivityDetailRequest, + Activity, + ActivityDetail, +} from 'types/activity'; +import type { SuccessResponse } from 'types/response'; +import { API_PATH } from 'constants/services'; +import axios from 'lib/axios'; + +export const getActivitiesByUsername = async ({ + username, +}: GetActivitiesByUsernameRequest) => { + const { + data: { data }, + } = await axios.get>( + `${API_PATH.activities.index}/${username}`, + ); + return data; +}; + +export const getActivityDetail = async ({ + username, + dateString, +}: GetActivityDetailRequest) => { + const { + data: { data }, + } = await axios.get>( + `${API_PATH.activities.index}/${username}/${dateString}`, + ); + return data; +}; diff --git a/src/api/heatmap.ts b/src/api/heatmap.ts deleted file mode 100644 index 13b2ce39..00000000 --- a/src/api/heatmap.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { GetHeatmapByUsernameRequest, HeatmapCell } from 'types/heatmap'; -import type { SuccessResponse } from 'types/response'; -import { API_PATH } from 'constants/services'; -import axios from 'lib/axios'; - -export const getHeatmapByUsername = async ({ - username, -}: GetHeatmapByUsernameRequest) => { - const { - data: { data }, - } = await axios.get>( - `${API_PATH.heatmap.index}/${username}`, - ); - return data; -}; diff --git a/src/api/index.ts b/src/api/index.ts index 7f9d25a9..2ef4e59a 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -6,4 +6,4 @@ export * from './comments'; export * from './favorite'; export * from './bookmark'; export * from './profile'; -export * from './heatmap'; +export * from './activities'; diff --git a/src/components/account/CompleteFindPassword.tsx b/src/components/account/CompleteFindPassword.tsx index 1aff3016..80f751ed 100644 --- a/src/components/account/CompleteFindPassword.tsx +++ b/src/components/account/CompleteFindPassword.tsx @@ -1,6 +1,5 @@ import styled from '@emotion/styled'; import Image from 'next/image'; -import React from 'react'; export const CompleteFindPassword = () => { return ( diff --git a/src/components/account/RegisterInformation.tsx b/src/components/account/RegisterInformation.tsx index e0a97ec0..e7d3c58e 100644 --- a/src/components/account/RegisterInformation.tsx +++ b/src/components/account/RegisterInformation.tsx @@ -1,6 +1,5 @@ import styled from '@emotion/styled'; import { isAxiosError } from 'axios'; -import React from 'react'; import { useFormContext } from 'react-hook-form'; import type { RegisterStep, RegisterForm } from 'types/register'; import type { ErrorResponse } from 'types/response'; diff --git a/src/components/diary/ActivityDiariesContainer.tsx b/src/components/diary/ActivityDiariesContainer.tsx new file mode 100644 index 00000000..d610bd0a --- /dev/null +++ b/src/components/diary/ActivityDiariesContainer.tsx @@ -0,0 +1,42 @@ +import styled from '@emotion/styled'; +import Diary from './Diary'; +import type { DiaryDetail } from 'types/diary'; +import { ScreenReaderOnly } from 'styles'; + +interface ActivityDiariesContainerProps { + title: string; + diariesData: DiaryDetail[]; + empty: JSX.Element; +} + +export const ActivityDiariesContainer = ({ + title, + diariesData, + empty, +}: ActivityDiariesContainerProps) => { + const isEmptyDiaries = diariesData.length === 0; + + if (isEmptyDiaries) return empty; + + return ( +
+ {title} + + {diariesData.map((diary) => { + const { id } = diary; + return ; + })} + +
+ ); +}; + +const Title = styled.h2` + ${ScreenReaderOnly} +`; + +const List = styled.ul` + display: grid; + gap: 6px; + background-color: ${({ theme }) => theme.colors.gray_06}; +`; diff --git a/src/components/diary/EmptyActivitiesDiary.tsx b/src/components/diary/EmptyActivitiesDiary.tsx new file mode 100644 index 00000000..b3f173e2 --- /dev/null +++ b/src/components/diary/EmptyActivitiesDiary.tsx @@ -0,0 +1,40 @@ +import styled from '@emotion/styled'; +import { useRouter } from 'next/router'; +import { Button } from 'components/common'; +import { PAGE_PATH } from 'constants/common'; + +export const EmptyActivitiesDiary = () => { + const router = useRouter(); + + const handleGoToWriteDiary = () => { + void router.push(PAGE_PATH.diary); + }; + + return ( + + +

일기가 없습니다.

+

오늘 일기를 작성해보세요.

+
+