diff --git a/src/apis/tag.ts b/src/apis/tag.ts index d7d5e51c..a14b1d2e 100644 --- a/src/apis/tag.ts +++ b/src/apis/tag.ts @@ -1,5 +1,9 @@ import http from "@/apis/core"; -import { GetTagsResponse, GetTopTagsFromLikedResponse } from "@/types/tag.dto"; +import { + GetTagsResponse, + GetTopTagsFromUploadedResponse, + GetTopTagsFromLikedResponse, +} from "@/types/tag.dto"; export const getSearchTag = (tag: string) => http.get({ @@ -9,6 +13,11 @@ export const getSearchTag = (tag: string) => }, }); +export const getTopTagsFromUploaded = () => + http.get({ + url: "/v1/tag/me/upload", + }); + export const getTopTagsFromLiked = () => http.get({ url: "/v1/tag/me/like", diff --git a/src/hooks/api/tag/useGetTopTagsFromUploaded.ts b/src/hooks/api/tag/useGetTopTagsFromUploaded.ts new file mode 100644 index 00000000..960c09db --- /dev/null +++ b/src/hooks/api/tag/useGetTopTagsFromUploaded.ts @@ -0,0 +1,16 @@ +import { useSuspenseQuery } from "@tanstack/react-query"; +import { getTopTagsFromUploaded } from "@/apis/tag"; + +const useGetTopTagsFromUploaded = () => { + const { data, ...rest } = useSuspenseQuery({ + queryKey: ["topTagsFromUploaded"], + queryFn: getTopTagsFromUploaded, + }); + + return { + topTags: data, + ...rest, + }; +}; + +export default useGetTopTagsFromUploaded; diff --git a/src/routeTree.gen.ts b/src/routeTree.gen.ts index e60e0335..9b442d28 100644 --- a/src/routeTree.gen.ts +++ b/src/routeTree.gen.ts @@ -16,9 +16,9 @@ import { Route as rootRoute } from "./routes/__root" import { Route as LayoutWithChatImport } from "./routes/_layout-with-chat" import { Route as UploadZzalIndexImport } from "./routes/upload-zzal/index" import { Route as LayoutWithChatIndexImport } from "./routes/_layout-with-chat/index" +import { Route as LayoutWithChatMyUploadedZzalsRouteImport } from "./routes/_layout-with-chat/my-uploaded-zzals/route" import { Route as LayoutWithChatMyLikedZzalsRouteImport } from "./routes/_layout-with-chat/my-liked-zzals/route" import { Route as AdminReportsIndexImport } from "./routes/admin/reports/index" -import { Route as LayoutWithChatMyUploadedZzalIndexImport } from "./routes/_layout-with-chat/my-uploaded-zzal/index" import { Route as AdminReportsImageIdIndexImport } from "./routes/admin/reports/$imageId/index" // Create Virtual Routes @@ -44,6 +44,16 @@ const LayoutWithChatIndexRoute = LayoutWithChatIndexImport.update({ getParentRoute: () => LayoutWithChatRoute, } as any) +const LayoutWithChatMyUploadedZzalsRouteRoute = + LayoutWithChatMyUploadedZzalsRouteImport.update({ + path: "/my-uploaded-zzals", + getParentRoute: () => LayoutWithChatRoute, + } as any).lazy(() => + import("./routes/_layout-with-chat/my-uploaded-zzals/route.lazy").then( + (d) => d.Route, + ), + ) + const LayoutWithChatMyLikedZzalsRouteRoute = LayoutWithChatMyLikedZzalsRouteImport.update({ path: "/my-liked-zzals", @@ -59,12 +69,6 @@ const AdminReportsIndexRoute = AdminReportsIndexImport.update({ getParentRoute: () => rootRoute, } as any) -const LayoutWithChatMyUploadedZzalIndexRoute = - LayoutWithChatMyUploadedZzalIndexImport.update({ - path: "/my-uploaded-zzal/", - getParentRoute: () => LayoutWithChatRoute, - } as any) - const AdminReportsAdminReportsPendingComponentRoute = AdminReportsAdminReportsPendingComponentImport.update({ path: "/admin/reports/AdminReports", @@ -93,6 +97,10 @@ declare module "@tanstack/react-router" { preLoaderRoute: typeof LayoutWithChatMyLikedZzalsRouteImport parentRoute: typeof LayoutWithChatImport } + "/_layout-with-chat/my-uploaded-zzals": { + preLoaderRoute: typeof LayoutWithChatMyUploadedZzalsRouteImport + parentRoute: typeof LayoutWithChatImport + } "/_layout-with-chat/": { preLoaderRoute: typeof LayoutWithChatIndexImport parentRoute: typeof LayoutWithChatImport @@ -105,10 +113,6 @@ declare module "@tanstack/react-router" { preLoaderRoute: typeof AdminReportsAdminReportsPendingComponentImport parentRoute: typeof rootRoute } - "/_layout-with-chat/my-uploaded-zzal/": { - preLoaderRoute: typeof LayoutWithChatMyUploadedZzalIndexImport - parentRoute: typeof LayoutWithChatImport - } "/admin/reports/": { preLoaderRoute: typeof AdminReportsIndexImport parentRoute: typeof rootRoute @@ -125,8 +129,8 @@ declare module "@tanstack/react-router" { export const routeTree = rootRoute.addChildren([ LayoutWithChatRoute.addChildren([ LayoutWithChatMyLikedZzalsRouteRoute, + LayoutWithChatMyUploadedZzalsRouteRoute, LayoutWithChatIndexRoute, - LayoutWithChatMyUploadedZzalIndexRoute, ]), UploadZzalIndexRoute, AdminReportsAdminReportsPendingComponentRoute, diff --git a/src/routes/_layout-with-chat/my-uploaded-zzals/route.lazy.tsx b/src/routes/_layout-with-chat/my-uploaded-zzals/route.lazy.tsx new file mode 100644 index 00000000..b8d9b185 --- /dev/null +++ b/src/routes/_layout-with-chat/my-uploaded-zzals/route.lazy.tsx @@ -0,0 +1,24 @@ +import { createLazyFileRoute } from "@tanstack/react-router"; +import TagSearchForm from "@/components/common/SearchTag/TagSearchForm"; +import TagBadge from "@/components/common/TagBadge"; +import useGetTopTagsFromUploaded from "@/hooks/api/tag/useGetTopTagsFromUploaded"; + +const MyUploadedZzals = () => { + const { topTags } = useGetTopTagsFromUploaded(); + + return ( +
+
+
내가 가장 많이 사용한 태그
+ {topTags.map(({ tagId, tagName }) => ( + + ))} +
+ +
+ ); +}; + +export const Route = createLazyFileRoute("/_layout-with-chat/my-uploaded-zzals")({ + component: MyUploadedZzals, +}); diff --git a/src/routes/_layout-with-chat/my-uploaded-zzal/index.tsx b/src/routes/_layout-with-chat/my-uploaded-zzals/route.tsx similarity index 51% rename from src/routes/_layout-with-chat/my-uploaded-zzal/index.tsx rename to src/routes/_layout-with-chat/my-uploaded-zzals/route.tsx index e07f9877..62c2147d 100644 --- a/src/routes/_layout-with-chat/my-uploaded-zzal/index.tsx +++ b/src/routes/_layout-with-chat/my-uploaded-zzals/route.tsx @@ -1,9 +1,9 @@ import { createFileRoute } from "@tanstack/react-router"; -const MyUploadedZzal = () => { - return
업로드 한 짤 페이지
; +const PendingComponent = () => { + return
pending
; }; -export const Route = createFileRoute("/_layout-with-chat/my-uploaded-zzal/")({ - component: MyUploadedZzal, +export const Route = createFileRoute("/_layout-with-chat/my-uploaded-zzals")({ + pendingComponent: PendingComponent, }); diff --git a/src/types/tag.dto.ts b/src/types/tag.dto.ts index 52279794..05c01304 100644 --- a/src/types/tag.dto.ts +++ b/src/types/tag.dto.ts @@ -2,4 +2,6 @@ import { Tag } from "./tag"; export type GetTagsResponse = Tag[]; +export type GetTopTagsFromUploadedResponse = Tag[]; + export type GetTopTagsFromLikedResponse = Tag[];