Skip to content
Merged
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
60 changes: 48 additions & 12 deletions frontend/src/apis/generated/refit-api.schemas.ts
Original file line number Diff line number Diff line change
Expand Up @@ -931,15 +931,24 @@ export type SignUpParams = {
}

export type GetMyScrapFoldersParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type SearchMyQnaSetParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type SearchInterviewsParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type PublishTokenParams = {
Expand All @@ -952,30 +961,48 @@ export type PublishTokenByUserIdParams = {
}

export type GetQnaSetsInScrapFolderParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type GetScrapFoldersContainingQnaSetParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type GetMyFrequentQnaSetCategoriesParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type GetMyFrequentQnaSetCategoryQuestionsParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type GetFrequentQuestionsParams = {
industryIds?: number[]
jobCategoryIds?: number[]
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type GetMyInterviewDraftsParams = {
interviewReviewStatus: GetMyInterviewDraftsInterviewReviewStatus
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type GetMyInterviewDraftsInterviewReviewStatus =
Expand All @@ -989,15 +1016,24 @@ export const GetMyInterviewDraftsInterviewReviewStatus = {
} as const

export type GetMyDifficultQnaSetsParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type GetUpcomingInterviewsParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type GetDebriefIncompletedInterviewsParams = {
pageable: Pageable
pageable?: Pageable
page?: number
size?: number
sort?: string[]
}

export type GetDashboardCalendarInterviewsParams = {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { INTERVIEW_TYPE_LABEL } from '@/constants/interviews'
import { ContainerWithoutHeader } from '@/designs/components'
import { formatDateTime } from '@/features/_common/utils'
import { formatDateTime } from '@/features/_common/utils/date'
import type { LabelValueType } from '@/types/global'
import type { InterviewInfoType } from '@/types/interview'

Expand Down
10 changes: 9 additions & 1 deletion frontend/src/features/_common/utils/date.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
export default function formatDateTime(dateString: string): string {
export function formatDateTime(dateString: string): string {
return new Date(dateString).toLocaleString('ko-KR', {
year: 'numeric',
month: 'long',
Expand All @@ -8,3 +8,11 @@ export default function formatDateTime(dateString: string): string {
hour12: false,
})
}

export function formatDate(dateString: string): string {
return new Date(dateString).toLocaleDateString('ko-KR', {
year: 'numeric',
month: 'long',
day: 'numeric',
})
}
1 change: 0 additions & 1 deletion frontend/src/features/_common/utils/index.ts

This file was deleted.

This file was deleted.

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,32 @@
import { useState } from 'react'
import { SearchBar, SearchResultBar } from '@/features/dashboard/my-interviews/components/filter'
import FrequentQuestionsSection from '@/features/dashboard/my-interviews/components/questions/frequent/FrequentQuestionsSection'
import QuestionFilterControls from '@/features/dashboard/my-interviews/components/questions/list/filter/QuestionFilterControls'
import QuestionListSection from '@/features/dashboard/my-interviews/components/questions/list/QuestionListSection'
import { EMPTY_QUESTION_FILTER } from '@/features/dashboard/my-interviews/constants/constants'
import type { QuestionFilter } from '@/types/interview'

export default function QuestionsTab() {
const [filter, setFilter] = useState<QuestionFilter>(EMPTY_QUESTION_FILTER)
const isSearching = filter.keyword.length > 0

return (
<>
<div className="absolute top-0 right-0">
<SearchBar keyword={filter.keyword} onSearch={(keyword) => setFilter((prev) => ({ ...prev, keyword }))} />
</div>
{!isSearching && <FrequentQuestionsSection />}
<section className="flex flex-col gap-3">
<div className="flex items-center justify-between">
{isSearching ? (
<SearchResultBar query={filter.keyword} onClose={() => setFilter((prev) => ({ ...prev, keyword: '' }))} />
) : (
<h2 className="title-s-bold">내가 복기 완료한 질문과 답변</h2>
)}
<QuestionFilterControls filter={filter} onChange={setFilter} />
</div>
<QuestionListSection filter={filter} />
</section>
</>
)
}
Loading