@@ -12,7 +12,8 @@ import NicknameCard from "@/components/archive-detail/NicknameCard";
1212import RegionText from "@/components/archive-detail/RegionText" ;
1313import SizeText from "@/components/archive-detail/SizeText" ;
1414import { useCreateChatRoom } from "@/hooks/useCreateChatRoom" ;
15- import { getArtworkDetail } from "@/services/artworks" ;
15+ import { ApiError } from "@/services/apiClient" ;
16+ import { getArtworkDetail , getMyArtworkDetail } from "@/services/artworks" ;
1617import { useAuthStore } from "@/stores/useAuthStore" ;
1718import { 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+
3237export 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
0 commit comments