Skip to content

Commit 26e0502

Browse files
authored
fix: 대학 상세 링크를 홈대학 슬러그로 매핑 (#454)
1 parent 7dfe96e commit 26e0502

3 files changed

Lines changed: 27 additions & 6 deletions

File tree

apps/web/src/app/(home)/_ui/PopularUniversitySection/_ui/PopularUniversityCard.tsx

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
import Link from "next/link";
22
import Image from "@/components/ui/FallbackImage";
3+
import { getHomeUniversitySlugByName } from "@/constants/university";
34
import type { ListUniversity } from "@/types/university";
45
import { convertImageUrl } from "@/utils/fileUtils";
56

@@ -18,8 +19,13 @@ const PopularUniversityCard = ({
1819
fetchPriority = "low",
1920
quality = 60, // 기본값을 60으로 낮춤
2021
}: PopularUniversityCardProps) => {
22+
const homeUniversitySlug = getHomeUniversitySlugByName(university.homeUniversityName);
23+
const universityDetailHref = homeUniversitySlug
24+
? `/university/${homeUniversitySlug}/${university.id}`
25+
: "/university";
26+
2127
return (
22-
<Link key={university.id} href={`/university/${university.id}`}>
28+
<Link key={university.id} href={universityDetailHref}>
2329
<div className="relative w-[153px]">
2430
<div className="relative h-[120px] w-[153px] overflow-hidden rounded-lg bg-k-700">
2531
<Image

apps/web/src/components/ui/UniverSityCard/index.tsx

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
import Link from "next/link";
22
import Image from "@/components/ui/FallbackImage";
33
import CheveronRightFilled from "@/components/ui/icon/ChevronRightFilled";
4+
import { getHomeUniversitySlugByName } from "@/constants/university";
45
import type { ListUniversity } from "@/types/university";
56
import { convertImageUrl } from "@/utils/fileUtils";
67
import shortenLanguageTestName from "@/utils/universityUtils";
@@ -17,12 +18,16 @@ const UniversityCard = ({ university, showCapacity = true, linkPrefix = "/univer
1718
? `${university.koreanName}(${university.term})`
1819
: university.koreanName;
1920

21+
const mappedHomeUniversitySlug = getHomeUniversitySlugByName(university.homeUniversityName);
22+
const hasExplicitPrefix = linkPrefix !== "/university";
23+
const universityDetailHref = mappedHomeUniversitySlug
24+
? `/university/${mappedHomeUniversitySlug}/${university.id}`
25+
: hasExplicitPrefix
26+
? `${linkPrefix}/${university.id}`
27+
: "/university";
28+
2029
return (
21-
<Link
22-
className="block"
23-
href={`${linkPrefix}/${university.id}`}
24-
aria-labelledby={`university-name-${university.id}`}
25-
>
30+
<Link className="block" href={universityDetailHref} aria-labelledby={`university-name-${university.id}`}>
2631
<div className="relative h-[91px] w-full overflow-hidden rounded-lg border border-solid border-k-100 hover:-translate-y-0.5 hover:shadow-md hover:shadow-black/10">
2732
<div className="flex justify-between px-5 py-3.5">
2833
<div className="flex gap-[23.5px]">

apps/web/src/constants/university.ts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,16 @@ export const isMatchedHomeUniversityName = (
9898
return normalizedLeft !== undefined && normalizedRight !== undefined && normalizedLeft === normalizedRight;
9999
};
100100

101+
export const getHomeUniversitySlugByName = (value: string | null | undefined): HomeUniversitySlug | undefined => {
102+
const normalizedUniversityName = normalizeHomeUniversityName(value);
103+
104+
if (!normalizedUniversityName) {
105+
return undefined;
106+
}
107+
108+
return HOME_UNIVERSITY_TO_SLUG_MAP[normalizedUniversityName];
109+
};
110+
101111
/**
102112
* 유효한 홈 대학교 슬러그 목록
103113
*/

0 commit comments

Comments
 (0)