diff --git a/src/application/hooks/api/search/index.ts b/src/application/hooks/api/search/index.ts index 0ffdbb8b..52b65722 100644 --- a/src/application/hooks/api/search/index.ts +++ b/src/application/hooks/api/search/index.ts @@ -2,8 +2,8 @@ import type { QueryClient, QueryFunctionContext } from "@tanstack/react-query"; import { useInfiniteQuery } from "@tanstack/react-query"; import { useEffect, useRef } from "react"; -import type { RecentSearch } from "@/application/hooks"; import { useLocalStorage } from "@/common/hooks"; +import type { RecentSearch } from "@/features/search/hooks"; import { api } from "@/infra/api"; import { useCoreInfiniteQuery } from "../core/useCoreInfiniteQuery"; diff --git a/src/application/hooks/domain/auth/index.ts b/src/application/hooks/domain/auth/index.ts deleted file mode 100644 index dabdde66..00000000 --- a/src/application/hooks/domain/auth/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./useAuth"; diff --git a/src/application/hooks/domain/channel/index.ts b/src/application/hooks/domain/channel/index.ts deleted file mode 100644 index 10749675..00000000 --- a/src/application/hooks/domain/channel/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./useChannelIO"; diff --git a/src/application/hooks/domain/collection/index.ts b/src/application/hooks/domain/collection/index.ts deleted file mode 100644 index ee32c2ca..00000000 --- a/src/application/hooks/domain/collection/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./useCollection"; diff --git a/src/application/hooks/domain/index.ts b/src/application/hooks/domain/index.ts deleted file mode 100644 index 670b7acb..00000000 --- a/src/application/hooks/domain/index.ts +++ /dev/null @@ -1,6 +0,0 @@ -export * from "./auth"; -export * from "./channel"; -export * from "./collection"; -export * from "./meme"; -export * from "./search"; -export * from "./share"; diff --git a/src/application/hooks/domain/meme/index.ts b/src/application/hooks/domain/meme/index.ts deleted file mode 100644 index ce59e3a4..00000000 --- a/src/application/hooks/domain/meme/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./useMoveMemeDetail"; diff --git a/src/application/hooks/index.ts b/src/application/hooks/index.ts index d68bbb1a..d158c576 100644 --- a/src/application/hooks/index.ts +++ b/src/application/hooks/index.ts @@ -1,2 +1 @@ export * from "./api"; -export * from "./domain"; diff --git a/src/common/components/Masonry/Masonry.stories.tsx b/src/common/components/Masonry/Masonry.stories.tsx index 25175a9d..ec7d9844 100644 --- a/src/common/components/Masonry/Masonry.stories.tsx +++ b/src/common/components/Masonry/Masonry.stories.tsx @@ -1,7 +1,7 @@ import type { ComponentMeta, ComponentStory } from "@storybook/react"; import React from "react"; -import { MemeItem } from "@/components/meme/MemeItem"; +import { MemeItem } from "@/features/common"; import { Masonry } from "./Masonry"; diff --git a/src/common/components/Modal/SignOutModal.tsx b/src/common/components/Modal/SignOutModal.tsx index d502972f..058b6cb3 100644 --- a/src/common/components/Modal/SignOutModal.tsx +++ b/src/common/components/Modal/SignOutModal.tsx @@ -1,8 +1,8 @@ import { useRouter } from "next/router"; -import { useAuth } from "@/application/hooks"; import { useToast } from "@/common/hooks"; import { PATH } from "@/common/utils"; +import { useAuth } from "@/features/common"; import { RandomImage } from "../RandomImge"; import { Modal } from "./Modal"; diff --git a/src/common/components/Navigation/SearchHeader/SearchHeader.tsx b/src/common/components/Navigation/SearchHeader/SearchHeader.tsx index 7b6e313a..3bdd3efa 100644 --- a/src/common/components/Navigation/SearchHeader/SearchHeader.tsx +++ b/src/common/components/Navigation/SearchHeader/SearchHeader.tsx @@ -3,8 +3,8 @@ import { CSSTransition } from "react-transition-group"; import { css } from "twin.macro"; import { useScrollDirection } from "@/common/hooks"; -import { SearchInput } from "@/components/search"; -import { TagCategory } from "@/components/tags"; +import { TagCategory } from "@/features/common"; +import { SearchInput } from "@/features/search/components"; import { BackButton } from "../BackButton"; diff --git a/src/common/components/Navigation/SideBar/LoginSideBarContent.tsx b/src/common/components/Navigation/SideBar/LoginSideBarContent.tsx index 62fe875c..a4a5a2eb 100644 --- a/src/common/components/Navigation/SideBar/LoginSideBarContent.tsx +++ b/src/common/components/Navigation/SideBar/LoginSideBarContent.tsx @@ -1,11 +1,11 @@ import Link from "next/link"; -import type { useAuth } from "@/application/hooks"; import { Icon } from "@/common/components/Icon"; import { SignOutModal } from "@/common/components/Modal"; import { Photo } from "@/common/components/Photo"; import { useModal } from "@/common/hooks"; import { channelUrl } from "@/common/utils"; +import type { useAuth } from "@/features/common"; type LoginSideBarContentProps = ReturnType; diff --git a/src/common/components/Navigation/SideBar/LogoutSideBarContent.tsx b/src/common/components/Navigation/SideBar/LogoutSideBarContent.tsx index 99105605..ca246dce 100644 --- a/src/common/components/Navigation/SideBar/LogoutSideBarContent.tsx +++ b/src/common/components/Navigation/SideBar/LogoutSideBarContent.tsx @@ -1,7 +1,7 @@ -import type { useAuth } from "@/application/hooks"; import { Icon } from "@/common/components/Icon"; import { Photo } from "@/common/components/Photo"; import { channelUrl } from "@/common/utils"; +import type { useAuth } from "@/features/common"; const defaultAvatarUrl = "/img/default-avatar.png"; const defaultName = "로그인하기"; diff --git a/src/common/components/Navigation/SideBar/SideBar.tsx b/src/common/components/Navigation/SideBar/SideBar.tsx index 9cbfb8fa..9678d1c6 100644 --- a/src/common/components/Navigation/SideBar/SideBar.tsx +++ b/src/common/components/Navigation/SideBar/SideBar.tsx @@ -1,6 +1,5 @@ -import { useAuth } from "@/application/hooks"; import { instagramUrl, twitterUrl } from "@/common/utils"; -import { useTagCategoryContext } from "@/components/tags"; +import { useAuth, useTagCategoryContext } from "@/features/common"; import { Drawer } from "../../Drawer"; import { Icon } from "../../Icon"; diff --git a/src/components/collect/Collection/index.ts b/src/components/collect/Collection/index.ts deleted file mode 100644 index cbb3f0f3..00000000 --- a/src/components/collect/Collection/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./Collection"; diff --git a/src/components/collect/SearchedCollection/index.ts b/src/components/collect/SearchedCollection/index.ts deleted file mode 100644 index 74f09e61..00000000 --- a/src/components/collect/SearchedCollection/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./SearchedCollection"; diff --git a/src/components/explore/EmptyMemesView/index.ts b/src/components/explore/EmptyMemesView/index.ts deleted file mode 100644 index d7d91c38..00000000 --- a/src/components/explore/EmptyMemesView/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./EmptyMemesView"; diff --git a/src/components/explore/MemesByTag/index.ts b/src/components/explore/MemesByTag/index.ts deleted file mode 100644 index 69c35de0..00000000 --- a/src/components/explore/MemesByTag/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./MemesByTag"; diff --git a/src/components/explore/Thumbnail/index.ts b/src/components/explore/Thumbnail/index.ts deleted file mode 100644 index d376b7af..00000000 --- a/src/components/explore/Thumbnail/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./Thumbnail"; diff --git a/src/components/explore/index.ts b/src/components/explore/index.ts deleted file mode 100644 index d415b828..00000000 --- a/src/components/explore/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./EmptyMemesView"; -export * from "./MemesByKeyword"; -export * from "./MemesByTag"; -export * from "./Thumbnail"; diff --git a/src/components/home/MemeListContainer/DropDown/index.ts b/src/components/home/MemeListContainer/DropDown/index.ts deleted file mode 100644 index 859f7da0..00000000 --- a/src/components/home/MemeListContainer/DropDown/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./MemeSortDropDown"; diff --git a/src/components/home/MemeListContainer/MemeList/UserFindMemeList.tsx b/src/components/home/MemeListContainer/MemeList/UserFindMemeList.tsx deleted file mode 100644 index 86082981..00000000 --- a/src/components/home/MemeListContainer/MemeList/UserFindMemeList.tsx +++ /dev/null @@ -1,24 +0,0 @@ -import { useGetUserFindMemes } from "@/application/hooks"; -import { InfiniteMemeList } from "@/components/meme"; - -interface Props { - userId: number | undefined; -} - -export const UserFindMemeList = ({ userId }: Props) => { - const { - data: memeList, - isFetchingNextPage, - fetchNextPage, - } = useGetUserFindMemes({ - userId: userId as number, - }); - - return ( - fetchNextPage({ cancelRefetch: false })} - /> - ); -}; diff --git a/src/components/home/MemeListContainer/MemeList/index.ts b/src/components/home/MemeListContainer/MemeList/index.ts deleted file mode 100644 index ed83a373..00000000 --- a/src/components/home/MemeListContainer/MemeList/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./CommonMemeList"; -export * from "./UserFindMemeList"; diff --git a/src/components/home/Skeleton/SkeletonMeme.tsx b/src/components/home/Skeleton/SkeletonMeme.tsx deleted file mode 100644 index f9a0d77f..00000000 --- a/src/components/home/Skeleton/SkeletonMeme.tsx +++ /dev/null @@ -1,43 +0,0 @@ -import { Skeleton } from "@/common/components/Skeleton"; - -import { SkeletonTagList } from "./SkeletonTagList"; - -export const SkeletonMeme = () => { - return ( -
- - -
- - -
- -
- ); -}; diff --git a/src/components/home/Skeleton/SkeletonTagList.tsx b/src/components/home/Skeleton/SkeletonTagList.tsx deleted file mode 100644 index f01af79e..00000000 --- a/src/components/home/Skeleton/SkeletonTagList.tsx +++ /dev/null @@ -1,17 +0,0 @@ -import { Skeleton } from "@/common/components/Skeleton"; - -export const SkeletonTagList = ({ count }: { count: number }) => { - return ( -
- {Array.from(Array(count).keys()).map((i) => ( - - ))} -
- ); -}; diff --git a/src/components/home/Skeleton/index.ts b/src/components/home/Skeleton/index.ts deleted file mode 100644 index 19129f4d..00000000 --- a/src/components/home/Skeleton/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./SkeletonMeme"; -export * from "./SkeletonTagList"; diff --git a/src/components/home/UserSharedMeme/SharedMemeItem.tsx b/src/components/home/UserSharedMeme/SharedMemeItem.tsx deleted file mode 100644 index 0c11a735..00000000 --- a/src/components/home/UserSharedMeme/SharedMemeItem.tsx +++ /dev/null @@ -1,38 +0,0 @@ -import Link from "next/link"; - -import { Icon } from "@/common/components/Icon"; -import { Photo } from "@/common/components/Photo"; -import { SSRSuspense } from "@/common/components/Suspense"; -import type { Meme } from "@/types"; - -import { SkeletonTagList } from "../Skeleton"; -import { SharedMemeTagList } from "./SharedMemeTagList"; - -interface Props { - meme: Meme; -} - -export const SharedMemeItem = ({ meme }: Props) => { - return ( -
  • - -
    - -
    -
    - {meme.name} - - - {meme.shareCount} - -
    - - }> - - -
  • - ); -}; diff --git a/src/components/home/UserSharedMeme/SharedMemeTagList.tsx b/src/components/home/UserSharedMeme/SharedMemeTagList.tsx deleted file mode 100644 index 1b939540..00000000 --- a/src/components/home/UserSharedMeme/SharedMemeTagList.tsx +++ /dev/null @@ -1,25 +0,0 @@ -import Link from "next/link"; - -import { useGetMemeTagsById } from "@/application/hooks"; -import { Chip } from "@/common/components/Chip"; -import { PATH } from "@/common/utils"; - -interface Props { - id: string; -} - -export const SharedMemeTagList = ({ id }: Props) => { - const { tags } = useGetMemeTagsById(id); - - return ( - - ); -}; diff --git a/src/components/home/UserSharedMeme/UserSharedMemeList.tsx b/src/components/home/UserSharedMeme/UserSharedMemeList.tsx deleted file mode 100644 index 86cd5b23..00000000 --- a/src/components/home/UserSharedMeme/UserSharedMemeList.tsx +++ /dev/null @@ -1,39 +0,0 @@ -import Link from "next/link"; -import { css } from "twin.macro"; - -import { useGetMemesByCollectionId } from "@/application/hooks"; -import { Icon } from "@/common/components/Icon"; - -import { SharedMemeItem } from "./SharedMemeItem"; - -interface Props { - name?: string; - sharedId?: number; -} -export const UserSharedMemeList = ({ name, sharedId }: Props) => { - const { data: memeList } = useGetMemesByCollectionId(sharedId as number); - if (!memeList.length) return null; - - return ( -
    - -
    - {`${name} 이(가) 공유했던 밈`} - -
    - -
      - {memeList.map((meme) => ( - - ))} -
    -
    - ); -}; diff --git a/src/components/home/UserSharedMeme/index.ts b/src/components/home/UserSharedMeme/index.ts deleted file mode 100644 index 70d508d6..00000000 --- a/src/components/home/UserSharedMeme/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./UserSharedMemeList"; diff --git a/src/components/meme/ActionSheet/index.ts b/src/components/meme/ActionSheet/index.ts deleted file mode 100644 index 9248829a..00000000 --- a/src/components/meme/ActionSheet/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./MemeActionSheet"; diff --git a/src/components/meme/InfiniteMemeList/index.ts b/src/components/meme/InfiniteMemeList/index.ts deleted file mode 100644 index 435c2149..00000000 --- a/src/components/meme/InfiniteMemeList/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./InfiniteMemeList"; diff --git a/src/components/meme/MemeInfo/Button/CollectionSaveButton.tsx b/src/components/meme/MemeInfo/Button/CollectionSaveButton.tsx deleted file mode 100644 index e4c7f308..00000000 --- a/src/components/meme/MemeInfo/Button/CollectionSaveButton.tsx +++ /dev/null @@ -1,31 +0,0 @@ -import { useAuth, useCollection } from "@/application/hooks"; -import { Button } from "@/common/components/Button"; -import { Icon } from "@/common/components/Icon"; - -interface Props { - id: string; -} - -export const CollectionSaveButton = ({ id }: Props) => { - const { validate, isLogin } = useAuth(); - const { isAdded, onUpdateCollection } = useCollection({ memeId: Number(id), isLogin }); - - return ( - - ); -}; diff --git a/src/components/meme/MemeInfo/Button/index.ts b/src/components/meme/MemeInfo/Button/index.ts deleted file mode 100644 index bc1b9427..00000000 --- a/src/components/meme/MemeInfo/Button/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./ClipboardCopyButton"; -export * from "./CollectionSaveButton"; -export * from "./KakaoShareButton"; -export * from "./NativeShareButton"; diff --git a/src/components/meme/MemeInfo/MemeCTAList.tsx b/src/components/meme/MemeInfo/MemeCTAList.tsx deleted file mode 100644 index 6dbe72fe..00000000 --- a/src/components/meme/MemeInfo/MemeCTAList.tsx +++ /dev/null @@ -1,35 +0,0 @@ -import { Suspense } from "react"; - -import { Button } from "@/common/components/Button"; -import { Icon } from "@/common/components/Icon"; -import { useOverlay } from "@/common/hooks"; -import { MemeShareModal } from "@/components/meme/MemeInfo/Modal"; - -import { CollectionSaveButton } from "./Button"; - -interface Props { - id: string; -} - -export const MemeCTAList = ({ id }: Props) => { - const overlay = useOverlay(); - - return ( -
    - - - -
    - ); -}; diff --git a/src/components/meme/MemeInfo/Skeleton/SkeletonMemeTagList.tsx b/src/components/meme/MemeInfo/Skeleton/SkeletonMemeTagList.tsx deleted file mode 100644 index 1163296c..00000000 --- a/src/components/meme/MemeInfo/Skeleton/SkeletonMemeTagList.tsx +++ /dev/null @@ -1,18 +0,0 @@ -import { Skeleton } from "@/common/components/Skeleton"; -import { SkeletonTagList } from "@/components/home/Skeleton"; - -export const SkeletonMemeTagList = () => { - return ( - <> - - - - ); -}; diff --git a/src/components/meme/MemeItem/index.ts b/src/components/meme/MemeItem/index.ts deleted file mode 100644 index 204b7d3d..00000000 --- a/src/components/meme/MemeItem/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./MemeItem"; diff --git a/src/components/meme/index.ts b/src/components/meme/index.ts deleted file mode 100644 index fc0951d3..00000000 --- a/src/components/meme/index.ts +++ /dev/null @@ -1,4 +0,0 @@ -export * from "./ActionSheet"; -export * from "./InfiniteMemeList"; -export * from "./MemeInfo"; -export * from "./MemeItem"; diff --git a/src/components/mypage/index.ts b/src/components/mypage/index.ts deleted file mode 100644 index 2e435930..00000000 --- a/src/components/mypage/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./SummarizedCollection"; diff --git a/src/components/search/SearchRecent/index.ts b/src/components/search/SearchRecent/index.ts deleted file mode 100644 index ec027fa2..00000000 --- a/src/components/search/SearchRecent/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./SearchRecent"; diff --git a/src/components/search/SearchResult/index.ts b/src/components/search/SearchResult/index.ts deleted file mode 100644 index 40ae39a1..00000000 --- a/src/components/search/SearchResult/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./SearchResultList"; diff --git a/src/components/search/index.ts b/src/components/search/index.ts deleted file mode 100644 index 53bccf20..00000000 --- a/src/components/search/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from "./SearchInput"; -export * from "./SearchItem"; -export * from "./SearchPopular"; -export * from "./SearchRecent"; -export * from "./SearchResult"; diff --git a/src/components/tags/TagFavoriteButton/index.ts b/src/components/tags/TagFavoriteButton/index.ts deleted file mode 100644 index 3858de9d..00000000 --- a/src/components/tags/TagFavoriteButton/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from "./TagBookmarkButton"; diff --git a/src/components/tags/index.ts b/src/components/tags/index.ts deleted file mode 100644 index 9bcc64e3..00000000 --- a/src/components/tags/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from "./TagCategory"; -export * from "./TagFavoriteButton"; diff --git a/src/components/collect/Collection/Collection.tsx b/src/features/collect/components/Collection.tsx similarity index 95% rename from src/components/collect/Collection/Collection.tsx rename to src/features/collect/components/Collection.tsx index 14b45a52..4c110a95 100644 --- a/src/components/collect/Collection/Collection.tsx +++ b/src/features/collect/components/Collection.tsx @@ -1,5 +1,5 @@ import { useGetMemesByCollectionId } from "@/application/hooks"; -import { InfiniteMemeList } from "@/components/meme"; +import { InfiniteMemeList } from "@/features/common"; interface Props { collectionId: number; diff --git a/src/components/collect/SearchedCollection/SearchedCollection.tsx b/src/features/collect/components/SearchedCollection.tsx similarity index 95% rename from src/components/collect/SearchedCollection/SearchedCollection.tsx rename to src/features/collect/components/SearchedCollection.tsx index 6b36b5f8..be17449d 100644 --- a/src/components/collect/SearchedCollection/SearchedCollection.tsx +++ b/src/features/collect/components/SearchedCollection.tsx @@ -1,5 +1,5 @@ import { useGetMemesFromCollectionByKeyword } from "@/application/hooks"; -import { InfiniteMemeList } from "@/components/meme"; +import { InfiniteMemeList } from "@/features/common"; interface Props { searchQuery: string; diff --git a/src/components/collect/index.ts b/src/features/collect/components/index.ts similarity index 100% rename from src/components/collect/index.ts rename to src/features/collect/components/index.ts diff --git a/src/components/explore/EmptyMemesView/EmptyMemesView.tsx b/src/features/common/components/EmptyMemesView.tsx similarity index 100% rename from src/components/explore/EmptyMemesView/EmptyMemesView.tsx rename to src/features/common/components/EmptyMemesView.tsx diff --git a/src/components/meme/InfiniteMemeList/InfiniteMemeList.tsx b/src/features/common/components/InfiniteMemeList.tsx similarity index 98% rename from src/components/meme/InfiniteMemeList/InfiniteMemeList.tsx rename to src/features/common/components/InfiniteMemeList.tsx index 82ae3dc5..ee336d9d 100644 --- a/src/components/meme/InfiniteMemeList/InfiniteMemeList.tsx +++ b/src/features/common/components/InfiniteMemeList.tsx @@ -8,7 +8,7 @@ import { QUERY_KEYS } from "@/application/hooks/api/meme/queryKey"; import { Masonry } from "@/common/components/Masonry"; import { renderMemeItemSkeletons } from "@/common/components/Skeleton"; import { useIntersect } from "@/common/hooks"; -import { MemeItem } from "@/components/meme/MemeItem"; +import { MemeItem } from "@/features/common"; import type { GetMemesResponse, Meme } from "@/types"; const skeletons = renderMemeItemSkeletons(4); diff --git a/src/components/meme/ActionSheet/MemeActionSheet.tsx b/src/features/common/components/MemeActionSheet.tsx similarity index 92% rename from src/components/meme/ActionSheet/MemeActionSheet.tsx rename to src/features/common/components/MemeActionSheet.tsx index 297c9277..c1080935 100644 --- a/src/components/meme/ActionSheet/MemeActionSheet.tsx +++ b/src/features/common/components/MemeActionSheet.tsx @@ -1,13 +1,14 @@ import { Suspense } from "react"; import tw from "twin.macro"; -import { useAuth, useCollection } from "@/application/hooks"; import { ActionSheet } from "@/common/components/ActionSheet"; import { useOverlay } from "@/common/hooks"; import { channelUrl } from "@/common/utils"; +import { useAuth } from "@/features/common"; +import { MemeShareModal } from "@/features/memes/components"; import type { Meme } from "@/types"; -import { MemeShareModal } from "../MemeInfo/Modal"; +import { useCollection } from "../hooks"; interface Props { meme: Meme; diff --git a/src/components/meme/MemeItem/MemeItem.tsx b/src/features/common/components/MemeItem.tsx similarity index 94% rename from src/components/meme/MemeItem/MemeItem.tsx rename to src/features/common/components/MemeItem.tsx index 5db5b14d..f06ffc3f 100644 --- a/src/components/meme/MemeItem/MemeItem.tsx +++ b/src/features/common/components/MemeItem.tsx @@ -1,14 +1,12 @@ import { memo } from "react"; -import { useMoveMemeDetail } from "@/application/hooks"; import { Icon } from "@/common/components/Icon"; import { Photo } from "@/common/components/Photo"; import { useOverlay } from "@/common/hooks"; import { isEncodingError } from "@/common/utils"; +import { MemeActionSheet, useMoveMemeDetail } from "@/features/common"; import type { Meme } from "@/types"; -import { MemeActionSheet } from "../ActionSheet"; - interface Props { meme: Meme; onClick?: (id: number) => void; diff --git a/src/components/tags/TagCategory/Category.stories.tsx b/src/features/common/components/TagCategory/Category.stories.tsx similarity index 100% rename from src/components/tags/TagCategory/Category.stories.tsx rename to src/features/common/components/TagCategory/Category.stories.tsx diff --git a/src/components/tags/TagCategory/CategoryContent.tsx b/src/features/common/components/TagCategory/CategoryContent.tsx similarity index 100% rename from src/components/tags/TagCategory/CategoryContent.tsx rename to src/features/common/components/TagCategory/CategoryContent.tsx diff --git a/src/components/tags/TagCategory/CategoryTitle.tsx b/src/features/common/components/TagCategory/CategoryTitle.tsx similarity index 100% rename from src/components/tags/TagCategory/CategoryTitle.tsx rename to src/features/common/components/TagCategory/CategoryTitle.tsx diff --git a/src/components/tags/TagCategory/FavoriteCategory.tsx b/src/features/common/components/TagCategory/FavoriteCategory.tsx similarity index 96% rename from src/components/tags/TagCategory/FavoriteCategory.tsx rename to src/features/common/components/TagCategory/FavoriteCategory.tsx index 1c1ae8c1..3c7bedf5 100644 --- a/src/components/tags/TagCategory/FavoriteCategory.tsx +++ b/src/features/common/components/TagCategory/FavoriteCategory.tsx @@ -1,11 +1,12 @@ import { Content, Header, Item, Trigger } from "@radix-ui/react-accordion"; import { useRouter } from "next/router"; -import { useAuth, useDeleteFavoriteTag, useGetFavoriteTags } from "@/application/hooks"; +import { useDeleteFavoriteTag, useGetFavoriteTags } from "@/application/hooks"; import { Icon } from "@/common/components/Icon"; import { Photo } from "@/common/components/Photo"; import { useToast } from "@/common/hooks"; import { PATH } from "@/common/utils"; +import { useAuth } from "@/features/common"; import { CategoryTitle } from "./CategoryTitle"; import { useTagCategoryContext } from "./context"; diff --git a/src/components/tags/TagCategory/SlotCategory.tsx b/src/features/common/components/TagCategory/SlotCategory.tsx similarity index 100% rename from src/components/tags/TagCategory/SlotCategory.tsx rename to src/features/common/components/TagCategory/SlotCategory.tsx diff --git a/src/components/tags/TagCategory/TagCategory.tsx b/src/features/common/components/TagCategory/TagCategory.tsx similarity index 100% rename from src/components/tags/TagCategory/TagCategory.tsx rename to src/features/common/components/TagCategory/TagCategory.tsx diff --git a/src/components/tags/TagCategory/context.tsx b/src/features/common/components/TagCategory/context.tsx similarity index 100% rename from src/components/tags/TagCategory/context.tsx rename to src/features/common/components/TagCategory/context.tsx diff --git a/src/components/tags/TagCategory/index.ts b/src/features/common/components/TagCategory/index.ts similarity index 100% rename from src/components/tags/TagCategory/index.ts rename to src/features/common/components/TagCategory/index.ts diff --git a/src/features/common/components/index.ts b/src/features/common/components/index.ts new file mode 100644 index 00000000..f58d37e7 --- /dev/null +++ b/src/features/common/components/index.ts @@ -0,0 +1,5 @@ +export * from "./EmptyMemesView"; +export * from "./InfiniteMemeList"; +export * from "./MemeActionSheet"; +export * from "./MemeItem"; +export * from "./TagCategory"; diff --git a/src/components/hocs/index.ts b/src/features/common/hocs/index.ts similarity index 100% rename from src/components/hocs/index.ts rename to src/features/common/hocs/index.ts diff --git a/src/components/hocs/withAuth/index.ts b/src/features/common/hocs/withAuth/index.ts similarity index 100% rename from src/components/hocs/withAuth/index.ts rename to src/features/common/hocs/withAuth/index.ts diff --git a/src/components/hocs/withAuth/withAuth.tsx b/src/features/common/hocs/withAuth/withAuth.tsx similarity index 94% rename from src/components/hocs/withAuth/withAuth.tsx rename to src/features/common/hocs/withAuth/withAuth.tsx index 09dad2d3..48e665b8 100644 --- a/src/components/hocs/withAuth/withAuth.tsx +++ b/src/features/common/hocs/withAuth/withAuth.tsx @@ -2,8 +2,8 @@ import { useRouter } from "next/router"; import type { ComponentType } from "react"; import { useEffect } from "react"; -import { useAuth } from "@/application/hooks"; import { useToast } from "@/common/hooks"; +import { useAuth } from "@/features/common"; export const withAuth = (WrappedComponent: ComponentType) => { const displayName = WrappedComponent.displayName || WrappedComponent.name || "Component"; diff --git a/src/features/common/hooks/index.ts b/src/features/common/hooks/index.ts new file mode 100644 index 00000000..3431fa9c --- /dev/null +++ b/src/features/common/hooks/index.ts @@ -0,0 +1,4 @@ +export * from "./useAuth"; +export * from "./useChannelIO"; +export * from "./useCollection"; +export * from "./useMoveMemeDetail"; diff --git a/src/application/hooks/domain/auth/useAuth.ts b/src/features/common/hooks/useAuth.ts similarity index 100% rename from src/application/hooks/domain/auth/useAuth.ts rename to src/features/common/hooks/useAuth.ts diff --git a/src/application/hooks/domain/channel/useChannelIO.ts b/src/features/common/hooks/useChannelIO.ts similarity index 100% rename from src/application/hooks/domain/channel/useChannelIO.ts rename to src/features/common/hooks/useChannelIO.ts diff --git a/src/application/hooks/domain/collection/useCollection.tsx b/src/features/common/hooks/useCollection.tsx similarity index 100% rename from src/application/hooks/domain/collection/useCollection.tsx rename to src/features/common/hooks/useCollection.tsx diff --git a/src/application/hooks/domain/meme/useMoveMemeDetail.ts b/src/features/common/hooks/useMoveMemeDetail.ts similarity index 100% rename from src/application/hooks/domain/meme/useMoveMemeDetail.ts rename to src/features/common/hooks/useMoveMemeDetail.ts diff --git a/src/features/common/index.ts b/src/features/common/index.ts new file mode 100644 index 00000000..67700710 --- /dev/null +++ b/src/features/common/index.ts @@ -0,0 +1,3 @@ +export * from "./components"; +export * from "./hocs"; +export * from "./hooks"; diff --git a/src/components/explore/MemesByKeyword/MemesByKeyword.tsx b/src/features/explore/keywords/components/MemesByKeyword.tsx similarity index 83% rename from src/components/explore/MemesByKeyword/MemesByKeyword.tsx rename to src/features/explore/keywords/components/MemesByKeyword.tsx index 23f1bfc1..ae6d9722 100644 --- a/src/components/explore/MemesByKeyword/MemesByKeyword.tsx +++ b/src/features/explore/keywords/components/MemesByKeyword.tsx @@ -1,7 +1,5 @@ import { useGetMemesByKeyword } from "@/application/hooks"; -import { InfiniteMemeList } from "@/components/meme"; - -import { EmptyMemesView } from "../EmptyMemesView"; +import { EmptyMemesView, InfiniteMemeList } from "@/features/common"; interface Props { searchQuery: string; diff --git a/src/components/explore/MemesByKeyword/index.tsx b/src/features/explore/keywords/components/index.ts similarity index 100% rename from src/components/explore/MemesByKeyword/index.tsx rename to src/features/explore/keywords/components/index.ts diff --git a/src/components/explore/MemesByTag/MemesByTag.tsx b/src/features/explore/tags/components/MemesByTag.tsx similarity index 82% rename from src/components/explore/MemesByTag/MemesByTag.tsx rename to src/features/explore/tags/components/MemesByTag.tsx index 29324cf9..d454ce35 100644 --- a/src/components/explore/MemesByTag/MemesByTag.tsx +++ b/src/features/explore/tags/components/MemesByTag.tsx @@ -1,7 +1,5 @@ import { useGetMemesByTag } from "@/application/hooks"; -import { InfiniteMemeList } from "@/components/meme"; - -import { EmptyMemesView } from "../EmptyMemesView"; +import { EmptyMemesView, InfiniteMemeList } from "@/features/common"; interface Props { searchQuery: string; diff --git a/src/components/tags/TagFavoriteButton/TagBookmarkButton.tsx b/src/features/explore/tags/components/TagBookmarkButton.tsx similarity index 94% rename from src/components/tags/TagFavoriteButton/TagBookmarkButton.tsx rename to src/features/explore/tags/components/TagBookmarkButton.tsx index af614468..34b581f6 100644 --- a/src/components/tags/TagFavoriteButton/TagBookmarkButton.tsx +++ b/src/features/explore/tags/components/TagBookmarkButton.tsx @@ -1,14 +1,8 @@ -import { - useAuth, - useDeleteFavoriteTag, - useGetTagInfo, - usePostFavoriteTag, -} from "@/application/hooks"; +import { useDeleteFavoriteTag, useGetTagInfo, usePostFavoriteTag } from "@/application/hooks"; import { Button } from "@/common/components/Button"; import { Icon } from "@/common/components/Icon"; import { useToast } from "@/common/hooks"; - -import { useTagCategoryContext } from "../TagCategory"; +import { useAuth, useTagCategoryContext } from "@/features/common"; interface Props { tagId: number; diff --git a/src/components/explore/Thumbnail/Thumbnail.tsx b/src/features/explore/tags/components/Thumbnail.tsx similarity index 100% rename from src/components/explore/Thumbnail/Thumbnail.tsx rename to src/features/explore/tags/components/Thumbnail.tsx diff --git a/src/features/explore/tags/components/index.ts b/src/features/explore/tags/components/index.ts new file mode 100644 index 00000000..a1e08c4e --- /dev/null +++ b/src/features/explore/tags/components/index.ts @@ -0,0 +1,3 @@ +export * from "./MemesByTag"; +export * from "./TagBookmarkButton"; +export * from "./Thumbnail"; diff --git a/src/components/home/MemeListContainer/MemeList/CommonMemeList.tsx b/src/features/home/components/MemeListContainer/CommonMemeList.tsx similarity index 81% rename from src/components/home/MemeListContainer/MemeList/CommonMemeList.tsx rename to src/features/home/components/MemeListContainer/CommonMemeList.tsx index 46bcaca1..5698790a 100644 --- a/src/components/home/MemeListContainer/MemeList/CommonMemeList.tsx +++ b/src/features/home/components/MemeListContainer/CommonMemeList.tsx @@ -1,7 +1,7 @@ import { useGetMemesBySort } from "@/application/hooks"; -import { InfiniteMemeList } from "@/components/meme"; +import { InfiniteMemeList } from "@/features/common"; -import type { MemeListType } from "../type"; +import type { MemeListType } from "./type"; interface Props { sortBy: MemeListType; diff --git a/src/components/home/MemeListContainer/MemeListContainer.tsx b/src/features/home/components/MemeListContainer/MemeListContainer.tsx similarity index 83% rename from src/components/home/MemeListContainer/MemeListContainer.tsx rename to src/features/home/components/MemeListContainer/MemeListContainer.tsx index d82de229..8cca537c 100644 --- a/src/components/home/MemeListContainer/MemeListContainer.tsx +++ b/src/features/home/components/MemeListContainer/MemeListContainer.tsx @@ -3,8 +3,8 @@ import { useState } from "react"; import { MemeListSkeleton } from "@/common/components/Skeleton"; import { SSRSuspense } from "@/common/components/Suspense"; -import { MemeSortDropDown } from "./DropDown"; -import { CommonMemeList } from "./MemeList"; +import { CommonMemeList } from "./CommonMemeList"; +import { MemeSortDropDown } from "./MemeSortDropDown"; import type { MemeListType } from "./type"; export const MemeListContainer = () => { diff --git a/src/components/home/MemeListContainer/DropDown/MemeSortDropDown.tsx b/src/features/home/components/MemeListContainer/MemeSortDropDown.tsx similarity index 98% rename from src/components/home/MemeListContainer/DropDown/MemeSortDropDown.tsx rename to src/features/home/components/MemeListContainer/MemeSortDropDown.tsx index 6d08b412..7b39d40d 100644 --- a/src/components/home/MemeListContainer/DropDown/MemeSortDropDown.tsx +++ b/src/features/home/components/MemeListContainer/MemeSortDropDown.tsx @@ -5,7 +5,7 @@ import { css } from "twin.macro"; import { DropDown } from "@/common/components/DropDown"; import { Icon } from "@/common/components/Icon"; -import type { MemeListType } from "../type"; +import type { MemeListType } from "./type"; interface Props { sortBy: MemeListType; diff --git a/src/components/home/MemeListContainer/index.ts b/src/features/home/components/MemeListContainer/index.ts similarity index 100% rename from src/components/home/MemeListContainer/index.ts rename to src/features/home/components/MemeListContainer/index.ts diff --git a/src/components/home/MemeListContainer/type.ts b/src/features/home/components/MemeListContainer/type.ts similarity index 100% rename from src/components/home/MemeListContainer/type.ts rename to src/features/home/components/MemeListContainer/type.ts diff --git a/src/components/home/index.ts b/src/features/home/components/index.ts similarity index 52% rename from src/components/home/index.ts rename to src/features/home/components/index.ts index 36a1e823..460b4644 100644 --- a/src/components/home/index.ts +++ b/src/features/home/components/index.ts @@ -1,2 +1 @@ export * from "./MemeListContainer"; -export * from "./UserSharedMeme"; diff --git a/src/features/memes/components/MemeCTAList.tsx b/src/features/memes/components/MemeCTAList.tsx new file mode 100644 index 00000000..dc92c863 --- /dev/null +++ b/src/features/memes/components/MemeCTAList.tsx @@ -0,0 +1,62 @@ +import { Suspense } from "react"; + +import { Button } from "@/common/components/Button"; +import { Icon } from "@/common/components/Icon"; +import { useOverlay } from "@/common/hooks"; +import { useAuth, useCollection } from "@/features/common"; + +import { MemeShareModal } from "./MemeShareModal"; + +interface MemeCTAListProps { + id: string; +} + +export const MemeCTAList = ({ id }: MemeCTAListProps) => { + const overlay = useOverlay(); + + return ( +
    + + + +
    + ); +}; + +interface CollectionSaveButtonProps { + id: string; +} +const CollectionSaveButton = ({ id }: CollectionSaveButtonProps) => { + const { validate, isLogin } = useAuth(); + const { isAdded, onUpdateCollection } = useCollection({ memeId: Number(id), isLogin }); + + return ( + + ); +}; diff --git a/src/components/meme/MemeInfo/MemeDetail.stories.tsx b/src/features/memes/components/MemeDetail/MemeDetail.stories.tsx similarity index 83% rename from src/components/meme/MemeInfo/MemeDetail.stories.tsx rename to src/features/memes/components/MemeDetail/MemeDetail.stories.tsx index 82c2dd44..ef3f62db 100644 --- a/src/components/meme/MemeInfo/MemeDetail.stories.tsx +++ b/src/features/memes/components/MemeDetail/MemeDetail.stories.tsx @@ -1,6 +1,6 @@ import type { ComponentMeta, ComponentStory } from "@storybook/react"; -import { MemeDetail } from "@/components/meme/MemeInfo"; +import { MemeDetail } from "./MemeDetail"; export default { title: "components/meme/MemeDetail", diff --git a/src/components/meme/MemeInfo/MemeDetail.tsx b/src/features/memes/components/MemeDetail/MemeDetail.tsx similarity index 95% rename from src/components/meme/MemeInfo/MemeDetail.tsx rename to src/features/memes/components/MemeDetail/MemeDetail.tsx index ebb8e43c..ad003591 100644 --- a/src/components/meme/MemeInfo/MemeDetail.tsx +++ b/src/features/memes/components/MemeDetail/MemeDetail.tsx @@ -3,7 +3,8 @@ import { css } from "twin.macro"; import { useMemeDetailById } from "@/application/hooks"; import { Photo } from "@/common/components/Photo"; import { SSRSuspense } from "@/common/components/Suspense"; -import { MemeExport } from "@/components/meme/MemeInfo/DropDown/MemeExport"; + +import { MemeExport } from "./MemeExport"; interface Props { id: string; diff --git a/src/components/meme/MemeInfo/DropDown/MemeExport.tsx b/src/features/memes/components/MemeDetail/MemeExport.tsx similarity index 93% rename from src/components/meme/MemeInfo/DropDown/MemeExport.tsx rename to src/features/memes/components/MemeDetail/MemeExport.tsx index 8621a182..c57dc6cb 100644 --- a/src/components/meme/MemeInfo/DropDown/MemeExport.tsx +++ b/src/features/memes/components/MemeDetail/MemeExport.tsx @@ -1,15 +1,11 @@ import tw from "twin.macro"; -import { - useAuth, - useCollection, - useMemeDetailById, - usePostMemeToSharedCollection, -} from "@/application/hooks"; +import { useMemeDetailById, usePostMemeToSharedCollection } from "@/application/hooks"; import { DropDown } from "@/common/components/DropDown"; import { Icon } from "@/common/components/Icon"; import { useToast } from "@/common/hooks"; import { DOMAIN, PATH } from "@/common/utils"; +import { useAuth, useCollection } from "@/features/common"; interface Props { id: string; diff --git a/src/features/memes/components/MemeDetail/index.ts b/src/features/memes/components/MemeDetail/index.ts new file mode 100644 index 00000000..7bfbabb2 --- /dev/null +++ b/src/features/memes/components/MemeDetail/index.ts @@ -0,0 +1 @@ +export * from "./MemeDetail"; diff --git a/src/components/meme/MemeInfo/Button/ClipboardCopyButton.tsx b/src/features/memes/components/MemeShareModal/ClipboardCopyButton.tsx similarity index 100% rename from src/components/meme/MemeInfo/Button/ClipboardCopyButton.tsx rename to src/features/memes/components/MemeShareModal/ClipboardCopyButton.tsx diff --git a/src/components/meme/MemeInfo/Button/KakaoShareButton.tsx b/src/features/memes/components/MemeShareModal/KakaoShareButton.tsx similarity index 81% rename from src/components/meme/MemeInfo/Button/KakaoShareButton.tsx rename to src/features/memes/components/MemeShareModal/KakaoShareButton.tsx index b5cf560d..d92e444b 100644 --- a/src/components/meme/MemeInfo/Button/KakaoShareButton.tsx +++ b/src/features/memes/components/MemeShareModal/KakaoShareButton.tsx @@ -1,8 +1,9 @@ -import type { KakaoShareOptions } from "@/application/hooks/domain/share"; -import { useKakaoShare } from "@/application/hooks/domain/share"; import { Button } from "@/common/components/Button"; import { Icon } from "@/common/components/Icon"; +import type { KakaoShareOptions } from "../../hooks"; +import { useKakaoShare } from "../../hooks"; + interface Props { resource: Omit; onSuccess?: () => void; diff --git a/src/components/meme/MemeInfo/Modal/MemeShareModal.tsx b/src/features/memes/components/MemeShareModal/MemeShareModal.tsx similarity index 90% rename from src/components/meme/MemeInfo/Modal/MemeShareModal.tsx rename to src/features/memes/components/MemeShareModal/MemeShareModal.tsx index 33af98c5..7891c2ca 100644 --- a/src/components/meme/MemeInfo/Modal/MemeShareModal.tsx +++ b/src/features/memes/components/MemeShareModal/MemeShareModal.tsx @@ -1,14 +1,14 @@ -import { useAuth, useMemeDetailById } from "@/application/hooks"; +import { useMemeDetailById } from "@/application/hooks"; import { usePostMemeToSharedCollection } from "@/application/hooks/api/collection"; import { Modal } from "@/common/components/Modal"; import { Photo } from "@/common/components/Photo"; import { useToast } from "@/common/hooks"; import { DOMAIN, PATH } from "@/common/utils"; -import { - ClipboardCopyButton, - KakaoShareButton, - NativeShareButton, -} from "@/components/meme/MemeInfo/Button"; +import { useAuth } from "@/features/common"; + +import { ClipboardCopyButton } from "./ClipboardCopyButton"; +import { KakaoShareButton } from "./KakaoShareButton"; +import { NativeShareButton } from "./NativeShareButton"; interface Props { id: string; diff --git a/src/components/meme/MemeInfo/Button/NativeShareButton.tsx b/src/features/memes/components/MemeShareModal/NativeShareButton.tsx similarity index 100% rename from src/components/meme/MemeInfo/Button/NativeShareButton.tsx rename to src/features/memes/components/MemeShareModal/NativeShareButton.tsx diff --git a/src/components/meme/MemeInfo/Modal/index.ts b/src/features/memes/components/MemeShareModal/index.ts similarity index 100% rename from src/components/meme/MemeInfo/Modal/index.ts rename to src/features/memes/components/MemeShareModal/index.ts diff --git a/src/components/meme/MemeInfo/MemeTagList.tsx b/src/features/memes/components/MemeTagList.tsx similarity index 100% rename from src/components/meme/MemeInfo/MemeTagList.tsx rename to src/features/memes/components/MemeTagList.tsx diff --git a/src/components/meme/MemeInfo/RelativeMemeList.tsx b/src/features/memes/components/RelativeMemeList.tsx similarity index 80% rename from src/components/meme/MemeInfo/RelativeMemeList.tsx rename to src/features/memes/components/RelativeMemeList.tsx index 4de95573..48522e9b 100644 --- a/src/components/meme/MemeInfo/RelativeMemeList.tsx +++ b/src/features/memes/components/RelativeMemeList.tsx @@ -1,5 +1,5 @@ -import { useAuth, useGetMemesBySort } from "@/application/hooks"; -import { InfiniteMemeList } from "@/components/meme"; +import { useGetMemesBySort } from "@/application/hooks"; +import { InfiniteMemeList, useAuth } from "@/features/common"; export const RelativeMemeList = () => { const { data: memeList, isFetchingNextPage, fetchNextPage } = useGetMemesBySort("popular"); diff --git a/src/components/meme/MemeInfo/Skeleton/SkeletonMemeDetail.tsx b/src/features/memes/components/Skeleton/SkeletonMemeDetail.tsx similarity index 93% rename from src/components/meme/MemeInfo/Skeleton/SkeletonMemeDetail.tsx rename to src/features/memes/components/Skeleton/SkeletonMemeDetail.tsx index 2efb23fb..dc156608 100644 --- a/src/components/meme/MemeInfo/Skeleton/SkeletonMemeDetail.tsx +++ b/src/features/memes/components/Skeleton/SkeletonMemeDetail.tsx @@ -1,5 +1,6 @@ import { Skeleton } from "@/common/components/Skeleton"; -import { SkeletonMemeTagList } from "@/components/meme"; + +import { SkeletonMemeTagList } from "./SkeletonMemeTagList"; export const SkeletonMemeDetail = () => { return ( diff --git a/src/features/memes/components/Skeleton/SkeletonMemeTagList.tsx b/src/features/memes/components/Skeleton/SkeletonMemeTagList.tsx new file mode 100644 index 00000000..4122f556 --- /dev/null +++ b/src/features/memes/components/Skeleton/SkeletonMemeTagList.tsx @@ -0,0 +1,27 @@ +import { Skeleton } from "@/common/components/Skeleton"; + +export const SkeletonMemeTagList = () => { + return ( + <> + +
    + {Array.from(Array(3).keys()).map((i) => ( + + ))} +
    + + ); +}; diff --git a/src/components/meme/MemeInfo/Skeleton/index.ts b/src/features/memes/components/Skeleton/index.ts similarity index 100% rename from src/components/meme/MemeInfo/Skeleton/index.ts rename to src/features/memes/components/Skeleton/index.ts diff --git a/src/components/meme/MemeInfo/index.ts b/src/features/memes/components/index.ts similarity index 82% rename from src/components/meme/MemeInfo/index.ts rename to src/features/memes/components/index.ts index 14c0cb61..d4cfabdf 100644 --- a/src/components/meme/MemeInfo/index.ts +++ b/src/features/memes/components/index.ts @@ -1,5 +1,6 @@ export * from "./MemeCTAList"; export * from "./MemeDetail"; +export * from "./MemeShareModal"; export * from "./MemeTagList"; export * from "./RelativeMemeList"; export * from "./Skeleton"; diff --git a/src/application/hooks/domain/share/index.ts b/src/features/memes/hooks/index.ts similarity index 100% rename from src/application/hooks/domain/share/index.ts rename to src/features/memes/hooks/index.ts diff --git a/src/application/hooks/domain/share/useKakaoShare.ts b/src/features/memes/hooks/useKakaoShare.ts similarity index 100% rename from src/application/hooks/domain/share/useKakaoShare.ts rename to src/features/memes/hooks/useKakaoShare.ts diff --git a/src/components/mypage/SummarizedCollection/SummarizedCollection.tsx b/src/features/mypage/components/SummarizedCollection.tsx similarity index 96% rename from src/components/mypage/SummarizedCollection/SummarizedCollection.tsx rename to src/features/mypage/components/SummarizedCollection.tsx index 88b5c77f..83b1916e 100644 --- a/src/components/mypage/SummarizedCollection/SummarizedCollection.tsx +++ b/src/features/mypage/components/SummarizedCollection.tsx @@ -1,6 +1,6 @@ import { useGetMemesByCollectionId } from "@/application/hooks"; import { Masonry } from "@/common/components/Masonry"; -import { MemeItem } from "@/components/meme/MemeItem"; +import { MemeItem } from "@/features/common"; interface Props { collectionId: number; diff --git a/src/components/mypage/SummarizedCollection/index.ts b/src/features/mypage/components/index.ts similarity index 100% rename from src/components/mypage/SummarizedCollection/index.ts rename to src/features/mypage/components/index.ts diff --git a/src/components/search/SearchInput/SearchInput.stories.tsx b/src/features/search/components/SearchInput/SearchInput.stories.tsx similarity index 100% rename from src/components/search/SearchInput/SearchInput.stories.tsx rename to src/features/search/components/SearchInput/SearchInput.stories.tsx diff --git a/src/components/search/SearchInput/SearchInput.tsx b/src/features/search/components/SearchInput/SearchInput.tsx similarity index 100% rename from src/components/search/SearchInput/SearchInput.tsx rename to src/features/search/components/SearchInput/SearchInput.tsx diff --git a/src/components/search/SearchInput/index.ts b/src/features/search/components/SearchInput/index.ts similarity index 100% rename from src/components/search/SearchInput/index.ts rename to src/features/search/components/SearchInput/index.ts diff --git a/src/components/search/SearchItem/SearchItem.tsx b/src/features/search/components/SearchItem/SearchItem.tsx similarity index 100% rename from src/components/search/SearchItem/SearchItem.tsx rename to src/features/search/components/SearchItem/SearchItem.tsx diff --git a/src/components/search/SearchItem/index.ts b/src/features/search/components/SearchItem/index.ts similarity index 100% rename from src/components/search/SearchItem/index.ts rename to src/features/search/components/SearchItem/index.ts diff --git a/src/components/search/SearchItem/searchItem.stories.tsx b/src/features/search/components/SearchItem/searchItem.stories.tsx similarity index 100% rename from src/components/search/SearchItem/searchItem.stories.tsx rename to src/features/search/components/SearchItem/searchItem.stories.tsx diff --git a/src/components/search/SearchPopular/SearchPopularItem.tsx b/src/features/search/components/SearchPopularList/SearchPopularItem.tsx similarity index 100% rename from src/components/search/SearchPopular/SearchPopularItem.tsx rename to src/features/search/components/SearchPopularList/SearchPopularItem.tsx diff --git a/src/components/search/SearchPopular/SearchPopularList.tsx b/src/features/search/components/SearchPopularList/SearchPopularList.tsx similarity index 94% rename from src/components/search/SearchPopular/SearchPopularList.tsx rename to src/features/search/components/SearchPopularList/SearchPopularList.tsx index 3016af7e..73b9ab04 100644 --- a/src/components/search/SearchPopular/SearchPopularList.tsx +++ b/src/features/search/components/SearchPopularList/SearchPopularList.tsx @@ -1,9 +1,9 @@ import Link from "next/link"; -import type { RecentSearch } from "@/application/hooks"; import { useGetPopularTags } from "@/application/hooks"; import { PATH } from "@/common/utils"; +import type { RecentSearch } from "../../hooks"; import { SearchPopularItem } from "./SearchPopularItem"; interface Props { diff --git a/src/components/search/SearchPopular/index.ts b/src/features/search/components/SearchPopularList/index.ts similarity index 100% rename from src/components/search/SearchPopular/index.ts rename to src/features/search/components/SearchPopularList/index.ts diff --git a/src/components/search/SearchRecent/SearchRecent.tsx b/src/features/search/components/SearchRecent.tsx similarity index 91% rename from src/components/search/SearchRecent/SearchRecent.tsx rename to src/features/search/components/SearchRecent.tsx index c037c98c..ff21f32e 100644 --- a/src/components/search/SearchRecent/SearchRecent.tsx +++ b/src/features/search/components/SearchRecent.tsx @@ -1,11 +1,11 @@ import { useRouter } from "next/router"; -import type { RecentSearch } from "@/application/hooks"; -import { isTagType } from "@/application/hooks"; import { Icon } from "@/common/components/Icon"; import { PATH } from "@/common/utils"; -import { SearchItem } from "../SearchItem"; +import type { RecentSearch } from "../hooks"; +import { isTagType } from "../hooks"; +import { SearchItem } from "./SearchItem"; interface Props { items: RecentSearch[]; diff --git a/src/components/search/SearchResult/SearchResultList.tsx b/src/features/search/components/SearchResultList.tsx similarity index 90% rename from src/components/search/SearchResult/SearchResultList.tsx rename to src/features/search/components/SearchResultList.tsx index c1a4e4c7..48df3b4f 100644 --- a/src/components/search/SearchResult/SearchResultList.tsx +++ b/src/features/search/components/SearchResultList.tsx @@ -1,10 +1,11 @@ import Link from "next/link"; -import type { RecentSearch } from "@/application/hooks"; import { useGetTagSearch } from "@/application/hooks"; import { Icon } from "@/common/components/Icon"; import { PATH } from "@/common/utils"; -import { SearchItem } from "@/components/search"; + +import type { RecentSearch } from "../hooks"; +import { SearchItem } from "./SearchItem"; interface Prop { value: string; diff --git a/src/components/search/Skeleton/SkeletonTagList.tsx b/src/features/search/components/Skeleton/SkeletonTagList.tsx similarity index 100% rename from src/components/search/Skeleton/SkeletonTagList.tsx rename to src/features/search/components/Skeleton/SkeletonTagList.tsx diff --git a/src/components/search/Skeleton/index.ts b/src/features/search/components/Skeleton/index.ts similarity index 100% rename from src/components/search/Skeleton/index.ts rename to src/features/search/components/Skeleton/index.ts diff --git a/src/features/search/components/index.ts b/src/features/search/components/index.ts new file mode 100644 index 00000000..b410eaed --- /dev/null +++ b/src/features/search/components/index.ts @@ -0,0 +1,6 @@ +export * from "./SearchInput"; +export * from "./SearchItem"; +export * from "./SearchPopularList"; +export * from "./SearchRecent"; +export * from "./SearchResultList"; +export * from "./Skeleton"; diff --git a/src/application/hooks/domain/search/index.ts b/src/features/search/hooks/index.ts similarity index 100% rename from src/application/hooks/domain/search/index.ts rename to src/features/search/hooks/index.ts diff --git a/src/application/hooks/domain/search/useRecentSearch/index.ts b/src/features/search/hooks/useRecentSearch/index.ts similarity index 100% rename from src/application/hooks/domain/search/useRecentSearch/index.ts rename to src/features/search/hooks/useRecentSearch/index.ts diff --git a/src/application/hooks/domain/search/useRecentSearch/types.ts b/src/features/search/hooks/useRecentSearch/types.ts similarity index 100% rename from src/application/hooks/domain/search/useRecentSearch/types.ts rename to src/features/search/hooks/useRecentSearch/types.ts diff --git a/src/application/hooks/domain/search/useRecentSearch/useRecentSearch.ts b/src/features/search/hooks/useRecentSearch/useRecentSearch.ts similarity index 100% rename from src/application/hooks/domain/search/useRecentSearch/useRecentSearch.ts rename to src/features/search/hooks/useRecentSearch/useRecentSearch.ts diff --git a/src/application/hooks/domain/search/useRecentSearch/utils.ts b/src/features/search/hooks/useRecentSearch/utils.ts similarity index 100% rename from src/application/hooks/domain/search/useRecentSearch/utils.ts rename to src/features/search/hooks/useRecentSearch/utils.ts diff --git a/src/components/share/SharedMemeList.tsx b/src/features/share/components/SharedMemeList.tsx similarity index 89% rename from src/components/share/SharedMemeList.tsx rename to src/features/share/components/SharedMemeList.tsx index 6ece3a2d..4e51c2e7 100644 --- a/src/components/share/SharedMemeList.tsx +++ b/src/features/share/components/SharedMemeList.tsx @@ -1,5 +1,5 @@ import { useGetMemesByCollectionId } from "@/application/hooks"; -import { InfiniteMemeList } from "@/components/meme"; +import { InfiniteMemeList } from "@/features/common"; interface Props { sharedId: number; diff --git a/src/components/share/index.ts b/src/features/share/components/index.ts similarity index 100% rename from src/components/share/index.ts rename to src/features/share/components/index.ts diff --git a/src/pages/_app.tsx b/src/pages/_app.tsx index b55da103..3a052ff9 100644 --- a/src/pages/_app.tsx +++ b/src/pages/_app.tsx @@ -12,7 +12,7 @@ import { SignUpModal, SignUpModalProvider } from "@/common/components/Modal"; import { ToastContainer, ToastProvider } from "@/common/components/Toast"; import { OverlayProvider, RouteTrackingProvider, useAnalytics } from "@/common/hooks"; import { GoogleTagManagerScript, GTagScript } from "@/common/libs"; -import { TagCategoryProvider } from "@/components/tags"; +import { TagCategoryProvider } from "@/features/common"; import type { DefaultPageProps } from "@/types"; if (process.env.NEXT_PUBLIC_API_MOCKING === "enabled") { diff --git a/src/pages/collect/index.tsx b/src/pages/collect/index.tsx index 0f1ea567..b1903d41 100644 --- a/src/pages/collect/index.tsx +++ b/src/pages/collect/index.tsx @@ -1,13 +1,12 @@ import { useDeferredValue } from "react"; -import { useAuth } from "@/application/hooks"; import { BackButtonNavigation } from "@/common/components/Navigation"; import { MemeListSkeleton } from "@/common/components/Skeleton"; import { SSRSuspense } from "@/common/components/Suspense"; import { useDebounce, useInput } from "@/common/hooks"; -import { Collection, SearchedCollection } from "@/components/collect"; -import { withAuth } from "@/components/hocs"; -import { SearchInput } from "@/components/search"; +import { Collection, SearchedCollection } from "@/features/collect/components"; +import { useAuth, withAuth } from "@/features/common"; +import { SearchInput } from "@/features/search/components"; const CollectPage = () => { const inputProps = useInput(); diff --git a/src/pages/explore/keywords/index.tsx b/src/pages/explore/keywords/index.tsx index a1264038..592f8711 100644 --- a/src/pages/explore/keywords/index.tsx +++ b/src/pages/explore/keywords/index.tsx @@ -7,7 +7,7 @@ import { PullToRefresh } from "@/common/components/PullToRefresh"; import { MemeListSkeleton } from "@/common/components/Skeleton"; import { SSRSuspense } from "@/common/components/Suspense"; import { DEFAULT_DESCRIPTION, SITE_NAME } from "@/common/utils"; -import { MemesByKeyword } from "@/components/explore"; +import { MemesByKeyword } from "@/features/explore/keywords/components"; interface Props { searchQuery: string; diff --git a/src/pages/explore/tags/[tagId].tsx b/src/pages/explore/tags/[tagId].tsx index d65794f4..88d386fb 100644 --- a/src/pages/explore/tags/[tagId].tsx +++ b/src/pages/explore/tags/[tagId].tsx @@ -6,8 +6,7 @@ import { ExplorePageNavigation } from "@/common/components/Navigation"; import { NextSeo } from "@/common/components/NextSeo"; import { PullToRefresh } from "@/common/components/PullToRefresh"; import { DEFAULT_DESCRIPTION, SITE_NAME } from "@/common/utils"; -import { MemesByTag, Thumbnail } from "@/components/explore"; -import { TagBookmarkButton } from "@/components/tags"; +import { MemesByTag, TagBookmarkButton, Thumbnail } from "@/features/explore/tags/components"; interface Props { searchQuery: string; diff --git a/src/pages/index.tsx b/src/pages/index.tsx index 679d7179..c8c0d1d4 100644 --- a/src/pages/index.tsx +++ b/src/pages/index.tsx @@ -5,7 +5,7 @@ import type { NextSeoProps } from "@/common/components/NextSeo"; import { NextSeo } from "@/common/components/NextSeo"; import { PullToRefresh } from "@/common/components/PullToRefresh"; import { DEFAULT_DESCRIPTION, SITE_NAME } from "@/common/utils"; -import { MemeListContainer } from "@/components/home"; +import { MemeListContainer } from "@/features/home/components"; const HomePage: NextPage = () => { return ( diff --git a/src/pages/memes/[id].tsx b/src/pages/memes/[id].tsx index 58c5250b..eb3e6172 100644 --- a/src/pages/memes/[id].tsx +++ b/src/pages/memes/[id].tsx @@ -2,12 +2,13 @@ import { dehydrate, QueryClient } from "@tanstack/react-query"; import type { GetStaticPaths, GetStaticProps, NextPage } from "next"; import { Suspense } from "react"; -import { fetchMemeDetailById, fetchMemeTagsById, useMoveMemeDetail } from "@/application/hooks"; +import { fetchMemeDetailById, fetchMemeTagsById } from "@/application/hooks"; import { ExplorePageNavigation } from "@/common/components/Navigation"; import { NextSeo } from "@/common/components/NextSeo"; import { MemeListSkeleton, Skeleton } from "@/common/components/Skeleton"; import { SSRSuspense } from "@/common/components/Suspense"; import { SITE_NAME } from "@/common/utils"; +import { useMoveMemeDetail } from "@/features/common"; import { MemeCTAList, MemeDetail, @@ -15,7 +16,7 @@ import { RelativeMemeList, SkeletonMemeDetail, SkeletonMemeTagList, -} from "@/components/meme"; +} from "@/features/memes/components"; import type { DefaultPageProps, Meme } from "@/types"; interface Props { diff --git a/src/pages/mypage/index.tsx b/src/pages/mypage/index.tsx index 99383d27..0877649b 100644 --- a/src/pages/mypage/index.tsx +++ b/src/pages/mypage/index.tsx @@ -1,14 +1,13 @@ import Link from "next/link"; import { css } from "twin.macro"; -import { useAuth, useChannelIO } from "@/application/hooks"; import { Icon } from "@/common/components/Icon"; import { MyPageNavigation } from "@/common/components/Navigation"; import { Photo } from "@/common/components/Photo"; import { MemeListSkeleton, Skeleton } from "@/common/components/Skeleton"; import { SSRSuspense } from "@/common/components/Suspense"; -import { withAuth } from "@/components/hocs"; -import { SummarizedCollection } from "@/components/mypage"; +import { useAuth, useChannelIO, withAuth } from "@/features/common"; +import { SummarizedCollection } from "@/features/mypage/components"; const MyPage = () => { const { isLoading, user } = useAuth(); diff --git a/src/pages/oauth2/redirect/index.tsx b/src/pages/oauth2/redirect/index.tsx index e6f75b0c..90cab596 100644 --- a/src/pages/oauth2/redirect/index.tsx +++ b/src/pages/oauth2/redirect/index.tsx @@ -1,7 +1,7 @@ import Router from "next/router"; import React, { useEffect } from "react"; -import { useAuth } from "@/application/hooks"; +import { useAuth } from "@/features/common"; const KaKaoRedirect = () => { const { login } = useAuth(); diff --git a/src/pages/search/index.tsx b/src/pages/search/index.tsx index dfe47f4d..3eebe1ae 100644 --- a/src/pages/search/index.tsx +++ b/src/pages/search/index.tsx @@ -2,7 +2,6 @@ import type { NextPage } from "next"; import { useRouter } from "next/router"; import { Suspense } from "react"; -import { useRecentSearch } from "@/application/hooks"; import { SearchPageNavigation } from "@/common/components/Navigation"; import type { NextSeoProps } from "@/common/components/NextSeo"; import { NextSeo } from "@/common/components/NextSeo"; @@ -14,8 +13,9 @@ import { SearchPopularList, SearchRecent, SearchResultList, -} from "@/components/search"; -import { SkeletonTagList } from "@/components/search/Skeleton"; + SkeletonTagList, +} from "@/features/search/components"; +import { useRecentSearch } from "@/features/search/hooks"; /** * FIX diff --git a/src/pages/setting/index.tsx b/src/pages/setting/index.tsx index a3e3aa6c..11aa2272 100644 --- a/src/pages/setting/index.tsx +++ b/src/pages/setting/index.tsx @@ -1,10 +1,9 @@ -import { useAuth, useChannelIO } from "@/application/hooks"; import { Button } from "@/common/components/Button"; import { SignOutModal } from "@/common/components/Modal"; import { BackButtonNavigation } from "@/common/components/Navigation"; import { Photo } from "@/common/components/Photo"; import { useModal } from "@/common/hooks"; -import { withAuth } from "@/components/hocs"; +import { useAuth, useChannelIO, withAuth } from "@/features/common"; const SettingPage = () => { const modalProps = useModal(); diff --git a/src/pages/share/index.tsx b/src/pages/share/index.tsx index c66c6cc6..fbd98830 100644 --- a/src/pages/share/index.tsx +++ b/src/pages/share/index.tsx @@ -1,11 +1,10 @@ import type { NextPage } from "next"; -import { useAuth } from "@/application/hooks"; import { BackButtonNavigation } from "@/common/components/Navigation"; import { MemeListSkeleton } from "@/common/components/Skeleton"; import { SSRSuspense } from "@/common/components/Suspense"; -import { withAuth } from "@/components/hocs"; -import { SharedMemeList } from "@/components/share"; +import { useAuth, withAuth } from "@/features/common"; +import { SharedMemeList } from "@/features/share/components"; const SharedHistoryPage: NextPage = () => { const { user } = useAuth();