Skip to content

Commit cde8f19

Browse files
authored
Merge pull request #77 from JECT-Study/hotfix/74-Various-fixes
fix: support private owned feed detail access
2 parents cff0097 + 05dfcec commit cde8f19

3 files changed

Lines changed: 36 additions & 8 deletions

File tree

src/app/art/[id]/page.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,8 @@ import NicknameCard from "@/components/archive-detail/NicknameCard";
1212
import RegionText from "@/components/archive-detail/RegionText";
1313
import SizeText from "@/components/archive-detail/SizeText";
1414
import { useCreateChatRoom } from "@/hooks/useCreateChatRoom";
15-
import { getArtworkDetail } from "@/services/artworks";
15+
import { ApiError } from "@/services/apiClient";
16+
import { getArtworkDetail, getMyArtworkDetail } from "@/services/artworks";
1617
import { useAuthStore } from "@/stores/useAuthStore";
1718
import { normalizeImageUrl } from "@/utils/normalizeImageUrl";
1819

@@ -29,6 +30,10 @@ function getErrorMessage(error: unknown) {
2930
return error instanceof Error ? error.message : "전시 문의를 시작하지 못했습니다.";
3031
}
3132

33+
function isArtworkNotFound(error: unknown) {
34+
return error instanceof ApiError && error.code === "ARTWORK_NOT_FOUND";
35+
}
36+
3237
export default function ArtDetailPage() {
3338
const router = useRouter();
3439
const params = useParams<{ id: string }>();
@@ -38,8 +43,17 @@ export default function ArtDetailPage() {
3843
const [inquiryErrorMessage, setInquiryErrorMessage] = useState<string | null>(null);
3944

4045
const query = useQuery({
41-
queryKey: ["artwork-detail", artworkId],
42-
queryFn: ({ signal }) => getArtworkDetail(artworkId, signal),
46+
queryKey: ["artwork-detail", artworkId, Boolean(accessToken)],
47+
queryFn: async ({ signal }) => {
48+
try {
49+
return await getArtworkDetail(artworkId, signal);
50+
} catch (error) {
51+
if (accessToken && isArtworkNotFound(error)) {
52+
return getMyArtworkDetail(artworkId, signal);
53+
}
54+
throw error;
55+
}
56+
},
4357
enabled: Boolean(artworkId),
4458
});
4559

src/app/mypage/feed/page.tsx

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -115,14 +115,14 @@ function FeedCard({
115115
<button
116116
type="button"
117117
onClick={onEdit}
118-
className="hover:bg-bg-primary-darker text-body-2 text-text-primary-brand h-10 w-full px-4 text-left font-medium"
118+
className="text-body-2 text-text-primary hover:bg-object-primary-light hover:text-text-primary-brand focus-visible:bg-object-primary-light focus-visible:text-text-primary-brand active:bg-object-primary-light h-10 w-full cursor-pointer px-4 text-left font-medium transition-colors outline-none"
119119
>
120120
수정
121121
</button>
122122
<button
123123
type="button"
124124
onClick={onDelete}
125-
className="hover:bg-bg-primary-darker text-body-2 text-text-primary h-10 w-full px-4 text-left font-medium"
125+
className="text-body-2 text-text-primary hover:bg-error-light hover:text-error-default focus-visible:bg-error-light focus-visible:text-error-default active:bg-error-light h-10 w-full cursor-pointer px-4 text-left font-medium transition-colors outline-none"
126126
>
127127
삭제
128128
</button>

src/app/space/[id]/page.tsx

Lines changed: 17 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,8 @@ import ImageSwiper from "@/components/archive-detail/ImageSwiper";
1111
import NicknameCard from "@/components/archive-detail/NicknameCard";
1212
import SizeText from "@/components/archive-detail/SizeText";
1313
import { useCreateChatRoom } from "@/hooks/useCreateChatRoom";
14-
import { getSpaceDetail } from "@/services/spaces";
14+
import { ApiError } from "@/services/apiClient";
15+
import { getMySpaceDetail, getSpaceDetail } from "@/services/spaces";
1516
import { useAuthStore } from "@/stores/useAuthStore";
1617
import { normalizeImageUrl } from "@/utils/normalizeImageUrl";
1718

@@ -23,6 +24,10 @@ function getErrorMessage(error: unknown) {
2324
return error instanceof Error ? error.message : "전시 문의를 시작하지 못했습니다.";
2425
}
2526

27+
function isSpaceNotFound(error: unknown) {
28+
return error instanceof ApiError && error.code === "SPACE_NOT_FOUND";
29+
}
30+
2631
export default function SpaceDetailPage() {
2732
const router = useRouter();
2833
const params = useParams<{ id: string }>();
@@ -32,8 +37,17 @@ export default function SpaceDetailPage() {
3237
const [inquiryErrorMessage, setInquiryErrorMessage] = useState<string | null>(null);
3338

3439
const query = useQuery({
35-
queryKey: ["space-detail", spaceId],
36-
queryFn: ({ signal }) => getSpaceDetail(spaceId, signal),
40+
queryKey: ["space-detail", spaceId, Boolean(accessToken)],
41+
queryFn: async ({ signal }) => {
42+
try {
43+
return await getSpaceDetail(spaceId, signal);
44+
} catch (error) {
45+
if (accessToken && isSpaceNotFound(error)) {
46+
return getMySpaceDetail(spaceId, signal);
47+
}
48+
throw error;
49+
}
50+
},
3751
enabled: Boolean(spaceId),
3852
});
3953

0 commit comments

Comments
 (0)