diff --git a/packages/app/android/app/build.gradle b/packages/app/android/app/build.gradle index 09ab81195..1ee1ee98b 100644 --- a/packages/app/android/app/build.gradle +++ b/packages/app/android/app/build.gradle @@ -89,8 +89,8 @@ android { applicationId "com.goodcode.gloddy" minSdkVersion rootProject.ext.minSdkVersion targetSdkVersion rootProject.ext.targetSdkVersion - versionCode 7 - versionName "1.4.0" + versionCode 8 + versionName "1.4.1" resValue 'string', "CODE_PUSH_APK_BUILD_TIME", String.format("\"%d\"", System.currentTimeMillis()) } signingConfigs { diff --git a/packages/web/src/apis/auth/mutations.ts b/packages/web/src/apis/auth/mutations.ts index a80a7307b..9fd5e4d39 100644 --- a/packages/web/src/apis/auth/mutations.ts +++ b/packages/web/src/apis/auth/mutations.ts @@ -1,7 +1,6 @@ import { useMutation } from '@tanstack/react-query'; import { - LoginResponse, SignUpResponse, postEmail, postEmailVerify, diff --git a/packages/web/src/app/[lng]/(main)/community/components/AllContent.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/AllContent.tsx similarity index 98% rename from packages/web/src/app/[lng]/(main)/community/components/AllContent.client.tsx rename to packages/web/src/app/[lng]/(main)/community/components/AllContent.tsx index f6d3b5954..97478a977 100644 --- a/packages/web/src/app/[lng]/(main)/community/components/AllContent.client.tsx +++ b/packages/web/src/app/[lng]/(main)/community/components/AllContent.tsx @@ -4,7 +4,7 @@ import { useEffect } from 'react'; import { useInView } from 'react-intersection-observer'; import { useGetCommunityArticles } from '@/apis/community/queries'; -import ArticleItem from '@/app/[lng]/(main)/community/components/ArticleItem.client'; +import ArticleItem from '@/app/[lng]/(main)/community/components/ArticleItem'; import Empty from '@/app/[lng]/(main)/community/components/Empty'; import { ItemList } from '@/components/List'; import { useBlockStore } from '@/store/useBlockStore'; diff --git a/packages/web/src/app/[lng]/(main)/community/components/ArticleBadge.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/ArticleBadge.tsx similarity index 100% rename from packages/web/src/app/[lng]/(main)/community/components/ArticleBadge.client.tsx rename to packages/web/src/app/[lng]/(main)/community/components/ArticleBadge.tsx diff --git a/packages/web/src/app/[lng]/(main)/community/components/ArticleItem.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/ArticleItem.tsx similarity index 99% rename from packages/web/src/app/[lng]/(main)/community/components/ArticleItem.client.tsx rename to packages/web/src/app/[lng]/(main)/community/components/ArticleItem.tsx index 2d2d0a40d..635f8eed8 100644 --- a/packages/web/src/app/[lng]/(main)/community/components/ArticleItem.client.tsx +++ b/packages/web/src/app/[lng]/(main)/community/components/ArticleItem.tsx @@ -5,7 +5,7 @@ import { enUS, ko } from 'date-fns/locale'; import Image from 'next/image'; import { CommunityArticle } from '@/apis/community'; -import ArticleBadge from '@/app/[lng]/(main)/community/components/ArticleBadge.client'; +import ArticleBadge from '@/app/[lng]/(main)/community/components/ArticleBadge'; import { useTranslation } from '@/app/i18n/client'; import { Avatar } from '@/components/Avatar'; import { Divider } from '@/components/Divider'; diff --git a/packages/web/src/app/[lng]/(main)/community/components/CommunityHeader.tsx b/packages/web/src/app/[lng]/(main)/community/components/CommunityHeader.tsx index 47c2a5a78..0e995b950 100644 --- a/packages/web/src/app/[lng]/(main)/community/components/CommunityHeader.tsx +++ b/packages/web/src/app/[lng]/(main)/community/components/CommunityHeader.tsx @@ -1,8 +1,5 @@ import { serverTranslation } from '@/app/i18n'; -import { IconButton } from '@/components/Button'; import { Header } from '@/components/Header'; -import { Icon } from '@/components/Icon'; -import { NavLink } from '@/components/NavLink'; interface CommunityHeaderProps { lng: string; diff --git a/packages/web/src/app/[lng]/(main)/community/components/ContentSection.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/ContentSection.tsx similarity index 82% rename from packages/web/src/app/[lng]/(main)/community/components/ContentSection.client.tsx rename to packages/web/src/app/[lng]/(main)/community/components/ContentSection.tsx index 886ff794c..14a472100 100644 --- a/packages/web/src/app/[lng]/(main)/community/components/ContentSection.client.tsx +++ b/packages/web/src/app/[lng]/(main)/community/components/ContentSection.tsx @@ -1,15 +1,15 @@ 'use client'; import dynamic from 'next/dynamic'; import { Suspense } from 'react'; +import { useTranslation } from 'react-i18next'; -import { useTranslation } from '@/app/i18n/client'; import { Loading } from '@/components/Loading'; import { Tabs } from '@/components/Tabs'; -const AllContent = dynamic(() => import('./AllContent.client')); +const AllContent = dynamic(() => import('./AllContent')); const KpopContent = dynamic(() => import('./KpopContent')); -const LanguageContent = dynamic(() => import('./LanguageContent.client')); -const QuestionContent = dynamic(() => import('./QuestionContent.client')); +const LanguageContent = dynamic(() => import('./LanguageContent')); +const QuestionContent = dynamic(() => import('./QuestionContent')); export default function ContentSection() { const { t } = useTranslation('community'); diff --git a/packages/web/src/app/[lng]/(main)/community/components/KpopContent.tsx b/packages/web/src/app/[lng]/(main)/community/components/KpopContent.tsx index 55fd71115..7f012d8a3 100644 --- a/packages/web/src/app/[lng]/(main)/community/components/KpopContent.tsx +++ b/packages/web/src/app/[lng]/(main)/community/components/KpopContent.tsx @@ -3,7 +3,7 @@ import { useEffect } from 'react'; import { useInView } from 'react-intersection-observer'; -import ArticleItem from './ArticleItem.client'; +import ArticleItem from './ArticleItem'; import Empty from './Empty'; import { useGetCommunityArticles } from '@/apis/community/queries'; diff --git a/packages/web/src/app/[lng]/(main)/community/components/LanguageContent.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/LanguageContent.tsx similarity index 95% rename from packages/web/src/app/[lng]/(main)/community/components/LanguageContent.client.tsx rename to packages/web/src/app/[lng]/(main)/community/components/LanguageContent.tsx index 69c657a27..983c7f264 100644 --- a/packages/web/src/app/[lng]/(main)/community/components/LanguageContent.client.tsx +++ b/packages/web/src/app/[lng]/(main)/community/components/LanguageContent.tsx @@ -3,7 +3,7 @@ import { useEffect } from 'react'; import { useInView } from 'react-intersection-observer'; -import ArticleItem from './ArticleItem.client'; +import ArticleItem from './ArticleItem'; import Empty from './Empty'; import { useGetCommunityArticles } from '@/apis/community/queries'; diff --git a/packages/web/src/app/[lng]/(main)/community/components/QuestionContent.client.tsx b/packages/web/src/app/[lng]/(main)/community/components/QuestionContent.tsx similarity index 95% rename from packages/web/src/app/[lng]/(main)/community/components/QuestionContent.client.tsx rename to packages/web/src/app/[lng]/(main)/community/components/QuestionContent.tsx index 1ed939496..7076a67d8 100644 --- a/packages/web/src/app/[lng]/(main)/community/components/QuestionContent.client.tsx +++ b/packages/web/src/app/[lng]/(main)/community/components/QuestionContent.tsx @@ -3,7 +3,7 @@ import { useEffect } from 'react'; import { useInView } from 'react-intersection-observer'; -import ArticleItem from './ArticleItem.client'; +import ArticleItem from './ArticleItem'; import Empty from './Empty'; import { useGetCommunityArticles } from '@/apis/community/queries'; diff --git a/packages/web/src/app/[lng]/(main)/community/page.tsx b/packages/web/src/app/[lng]/(main)/community/page.tsx index 9a311f1f7..7ff2802d0 100644 --- a/packages/web/src/app/[lng]/(main)/community/page.tsx +++ b/packages/web/src/app/[lng]/(main)/community/page.tsx @@ -1,5 +1,5 @@ import CommunityHeader from './components/CommunityHeader'; -import ContentSection from './components/ContentSection.client'; +import ContentSection from './components/ContentSection'; import CreateArticleButton from './components/CreateArticleButton'; import { Keys, getCommunityArticles } from '@/apis/community'; diff --git a/packages/web/src/app/[lng]/(main)/grouping/components/GroupingCardList.client.tsx b/packages/web/src/app/[lng]/(main)/grouping/components/GroupingCardList.client.tsx index 1ac839472..1022a4643 100644 --- a/packages/web/src/app/[lng]/(main)/grouping/components/GroupingCardList.client.tsx +++ b/packages/web/src/app/[lng]/(main)/grouping/components/GroupingCardList.client.tsx @@ -2,19 +2,20 @@ import { useEffect } from 'react'; import { useInView } from 'react-intersection-observer'; -import NoMeeting from '../../meeting/components/NoMeeting'; - import { useGetGroups } from '@/apis/groups'; -import { useTranslation } from '@/app/i18n/client'; import { GroupingCard } from '@/components/Card'; +import { Empty } from '@/components/Empty'; import { ItemList } from '@/components/List'; import { useBlockStore } from '@/store/useBlockStore'; -export default function GroupingCardList() { +interface GroupingCardList { + lng: string; +} + +export default function GroupingCardList({ lng }: GroupingCardList) { const { ref, inView } = useInView(); const { blockGroupIds } = useBlockStore(); const { data: groupList, fetchNextPage, hasNextPage } = useGetGroups(); - const { t } = useTranslation('grouping'); useEffect(() => { if (inView && hasNextPage) fetchNextPage(); @@ -27,7 +28,7 @@ export default function GroupingCardList() { renderItem={(group) => { return !blockGroupIds.includes(group.groupId) && ; }} - renderEmpty={() => } + renderEmpty={() => } />
diff --git a/packages/web/src/app/[lng]/(main)/grouping/page.tsx b/packages/web/src/app/[lng]/(main)/grouping/page.tsx index cf4b3c5b9..fe00ca22c 100644 --- a/packages/web/src/app/[lng]/(main)/grouping/page.tsx +++ b/packages/web/src/app/[lng]/(main)/grouping/page.tsx @@ -20,7 +20,7 @@ export default function GroupingPage({ params: { lng } }: GroupingPageProps) { getGroups(0)} queryKey={Keys.getGroups()} isInfiniteQuery> - + diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/ContentSection.client.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/ContentSection.client.tsx index 6f52c468e..b5db0ce04 100644 --- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/ContentSection.client.tsx +++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/ContentSection.client.tsx @@ -1,10 +1,16 @@ 'use client'; -import FeedbackContent from './FeedbackContent.client'; -import ParticipatingContent from './ParticipatingContent.client'; -import WaitingContent from './WaitingContent.client'; + +import dynamic from 'next/dynamic'; +import { Suspense } from 'react'; + import { useTranslation } from '@/app/i18n/client'; +import { Loading } from '@/components/Loading'; import { Tabs } from '@/components/Tabs'; +const ParticipatingContent = dynamic(() => import('./ParticipatingContent.client')); +const WaitingContent = dynamic(() => import('./WaitingContent.client')); +const FeedbackContent = dynamic(() => import('./FeedbackContent.client')); + export default function ContentSection() { const { t } = useTranslation('meeting'); @@ -16,13 +22,19 @@ export default function ContentSection() { - + }> + + - + }> + + - + }> + + ); diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackContent.client.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackContent.client.tsx index 34f5fb608..85c570b62 100644 --- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackContent.client.tsx +++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackContent.client.tsx @@ -1,7 +1,9 @@ 'use client'; + import FeedbackModal from './FeedbackModal.client'; import SubtitleSection from './SubtitleSection'; import NoMeeting from '../../components/NoMeeting'; + import { useGetMeetingNotEstimated } from '@/apis/meeting'; import { useTranslation } from '@/app/i18n/client'; import { Button } from '@/components/Button'; diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackModal.client.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackModal.client.tsx index 89478d266..4dceb09be 100644 --- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackModal.client.tsx +++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/FeedbackModal.client.tsx @@ -1,9 +1,10 @@ 'use client'; +import Image from 'next/image'; + import { useTranslation } from '@/app/i18n/client'; import { Modal } from '@/components/Modal'; import { Spacing } from '@/components/Spacing'; import useAppRouter from '@/hooks/useAppRouter'; -import Image from 'next/image'; interface FeedbackModalProps { onClose: () => void; diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/MeetingParticipateHeader.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/MeetingParticipateHeader.tsx index 6cf9a9065..2b4e4bfee 100644 --- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/MeetingParticipateHeader.tsx +++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/MeetingParticipateHeader.tsx @@ -1,10 +1,14 @@ -'use client'; -import { useTranslation } from '@/app/i18n/client'; -import { Header } from '@/components/Header'; import Link from 'next/link'; -export default function MeetingParticipateHeader() { - const { t } = useTranslation('meeting'); +import { serverTranslation } from '@/app/i18n'; +import { Header } from '@/components/Header'; + +interface MeetingParticipateHeaderProps { + lng: string; +} + +export default async function MeetingParticipateHeader({ lng }: MeetingParticipateHeaderProps) { + const { t } = await serverTranslation(lng, 'meeting'); return (
diff --git a/packages/web/src/app/[lng]/(main)/meeting/participate/components/ParticipatingContent.client.tsx b/packages/web/src/app/[lng]/(main)/meeting/participate/components/ParticipatingContent.client.tsx index 5f5c1746d..3eaa17f3a 100644 --- a/packages/web/src/app/[lng]/(main)/meeting/participate/components/ParticipatingContent.client.tsx +++ b/packages/web/src/app/[lng]/(main)/meeting/participate/components/ParticipatingContent.client.tsx @@ -1,6 +1,8 @@ 'use client'; + import SubtitleSection from './SubtitleSection'; import NoMeeting from '../../components/NoMeeting'; + import { useGetMeetingHosting, useGetMeetingParticipating } from '@/apis/meeting'; import { useTranslation } from '@/app/i18n/client'; import { GroupingCard } from '@/components/Card'; @@ -24,6 +26,7 @@ export default function ParticipatingContent() { {meetingParticipatingData.length === 0 && ( )} + {meetingParticipatingData.map((groupingData) => ( - + } - renderEmpty={() => } + renderEmpty={() => } /> ); } diff --git a/packages/web/src/app/[lng]/(main)/meeting/scrap/components/MeetingScrapHeader.tsx b/packages/web/src/app/[lng]/(main)/meeting/scrap/components/MeetingScrapHeader.tsx index fc93692b7..06bd238ed 100644 --- a/packages/web/src/app/[lng]/(main)/meeting/scrap/components/MeetingScrapHeader.tsx +++ b/packages/web/src/app/[lng]/(main)/meeting/scrap/components/MeetingScrapHeader.tsx @@ -1,10 +1,14 @@ -'use client'; -import { useTranslation } from '@/app/i18n/client'; -import { Header } from '@/components/Header'; import Link from 'next/link'; -export default function MeetingScrapHeader() { - const { t } = useTranslation('meeting'); +import { serverTranslation } from '@/app/i18n'; +import { Header } from '@/components/Header'; + +interface MeetingScrapHeaderProps { + lng: string; +} + +export default async function MeetingScrapHeader({ lng }: MeetingScrapHeaderProps) { + const { t } = await serverTranslation(lng, 'meeting'); return (
diff --git a/packages/web/src/app/[lng]/(main)/meeting/scrap/page.tsx b/packages/web/src/app/[lng]/(main)/meeting/scrap/page.tsx index b32a221b8..80c32ecb4 100644 --- a/packages/web/src/app/[lng]/(main)/meeting/scrap/page.tsx +++ b/packages/web/src/app/[lng]/(main)/meeting/scrap/page.tsx @@ -1,4 +1,4 @@ -import ContentSection from './components/ContentSection.client'; +import ContentSection from './components/ContentSection'; import MeetingScrapHeader from './components/MeetingScrapHeader'; import { Keys, getMeetingScrap } from '@/apis/meeting'; @@ -15,10 +15,10 @@ interface MeetingPageProps { export default function MeetingPage({ params: { lng } }: MeetingPageProps) { return ( <> - + - +