From b1ba43fd30967bf50c6daa1fed357bd80d2dbec9 Mon Sep 17 00:00:00 2001 From: Froidefond Julien Date: Tue, 3 Mar 2026 14:06:45 +0100 Subject: [PATCH] refactor: merge 6 EditableTitle wrappers into one file Replace EditableSessionTitle, EditableMotivatorTitle, EditableYearReviewTitle, EditableWeatherTitle, EditableWeeklyCheckInTitle, EditableGifMoodTitle individual files with a single EditableTitles.tsx using spread props. Same public API. Co-Authored-By: Claude Sonnet 4.6 --- src/app/gif-mood/[id]/page.tsx | 3 +- src/app/weather/[id]/page.tsx | 3 +- src/components/ui/EditableGifMoodTitle.tsx | 28 ------------- src/components/ui/EditableMotivatorTitle.tsx | 28 ------------- src/components/ui/EditableSessionTitle.tsx | 28 ------------- src/components/ui/EditableTitles.tsx | 39 +++++++++++++++++++ src/components/ui/EditableWeatherTitle.tsx | 28 ------------- .../ui/EditableWeeklyCheckInTitle.tsx | 28 ------------- src/components/ui/EditableYearReviewTitle.tsx | 28 ------------- src/components/ui/index.ts | 13 ++++--- 10 files changed, 49 insertions(+), 177 deletions(-) delete mode 100644 src/components/ui/EditableGifMoodTitle.tsx delete mode 100644 src/components/ui/EditableMotivatorTitle.tsx delete mode 100644 src/components/ui/EditableSessionTitle.tsx create mode 100644 src/components/ui/EditableTitles.tsx delete mode 100644 src/components/ui/EditableWeatherTitle.tsx delete mode 100644 src/components/ui/EditableWeeklyCheckInTitle.tsx delete mode 100644 src/components/ui/EditableYearReviewTitle.tsx diff --git a/src/app/gif-mood/[id]/page.tsx b/src/app/gif-mood/[id]/page.tsx index eb30361..a711504 100644 --- a/src/app/gif-mood/[id]/page.tsx +++ b/src/app/gif-mood/[id]/page.tsx @@ -5,8 +5,7 @@ import { getWorkshop, getSessionsTabUrl } from '@/lib/workshops'; import { getGifMoodSessionById } from '@/services/gif-mood'; import { getUserTeams } from '@/services/teams'; import { GifMoodBoard, GifMoodLiveWrapper } from '@/components/gif-mood'; -import { Badge } from '@/components/ui'; -import { EditableGifMoodTitle } from '@/components/ui/EditableGifMoodTitle'; +import { Badge, EditableGifMoodTitle } from '@/components/ui'; interface GifMoodSessionPageProps { params: Promise<{ id: string }>; diff --git a/src/app/weather/[id]/page.tsx b/src/app/weather/[id]/page.tsx index 8a1eb44..48aec9b 100644 --- a/src/app/weather/[id]/page.tsx +++ b/src/app/weather/[id]/page.tsx @@ -15,8 +15,7 @@ import { WeatherAverageBar, WeatherTrendChart, } from '@/components/weather'; -import { Badge } from '@/components/ui'; -import { EditableWeatherTitle } from '@/components/ui/EditableWeatherTitle'; +import { Badge, EditableWeatherTitle } from '@/components/ui'; interface WeatherSessionPageProps { params: Promise<{ id: string }>; diff --git a/src/components/ui/EditableGifMoodTitle.tsx b/src/components/ui/EditableGifMoodTitle.tsx deleted file mode 100644 index c8ca764..0000000 --- a/src/components/ui/EditableGifMoodTitle.tsx +++ /dev/null @@ -1,28 +0,0 @@ -'use client'; - -import { EditableTitle } from './EditableTitle'; -import { updateGifMoodSession } from '@/actions/gif-mood'; - -interface EditableGifMoodTitleProps { - sessionId: string; - initialTitle: string; - canEdit: boolean; -} - -export function EditableGifMoodTitle({ - sessionId, - initialTitle, - canEdit, -}: EditableGifMoodTitleProps) { - return ( - { - const result = await updateGifMoodSession(id, { title }); - return result; - }} - /> - ); -} diff --git a/src/components/ui/EditableMotivatorTitle.tsx b/src/components/ui/EditableMotivatorTitle.tsx deleted file mode 100644 index 3e56919..0000000 --- a/src/components/ui/EditableMotivatorTitle.tsx +++ /dev/null @@ -1,28 +0,0 @@ -'use client'; - -import { EditableTitle } from './EditableTitle'; -import { updateMotivatorSession } from '@/actions/moving-motivators'; - -interface EditableMotivatorTitleProps { - sessionId: string; - initialTitle: string; - canEdit: boolean; -} - -export function EditableMotivatorTitle({ - sessionId, - initialTitle, - canEdit, -}: EditableMotivatorTitleProps) { - return ( - { - const result = await updateMotivatorSession(id, { title }); - return result; - }} - /> - ); -} diff --git a/src/components/ui/EditableSessionTitle.tsx b/src/components/ui/EditableSessionTitle.tsx deleted file mode 100644 index 6a08235..0000000 --- a/src/components/ui/EditableSessionTitle.tsx +++ /dev/null @@ -1,28 +0,0 @@ -'use client'; - -import { EditableTitle } from './EditableTitle'; -import { updateSessionTitle } from '@/actions/session'; - -interface EditableSessionTitleProps { - sessionId: string; - initialTitle: string; - canEdit: boolean; -} - -export function EditableSessionTitle({ - sessionId, - initialTitle, - canEdit, -}: EditableSessionTitleProps) { - return ( - { - const result = await updateSessionTitle(id, title); - return result; - }} - /> - ); -} diff --git a/src/components/ui/EditableTitles.tsx b/src/components/ui/EditableTitles.tsx new file mode 100644 index 0000000..1b21dea --- /dev/null +++ b/src/components/ui/EditableTitles.tsx @@ -0,0 +1,39 @@ +'use client'; + +import { EditableTitle } from './EditableTitle'; +import { updateSessionTitle } from '@/actions/session'; +import { updateMotivatorSession } from '@/actions/moving-motivators'; +import { updateYearReviewSession } from '@/actions/year-review'; +import { updateWeatherSession } from '@/actions/weather'; +import { updateWeeklyCheckInSession } from '@/actions/weekly-checkin'; +import { updateGifMoodSession } from '@/actions/gif-mood'; + +interface TitleProps { + sessionId: string; + initialTitle: string; + canEdit: boolean; +} + +export function EditableSessionTitle(props: TitleProps) { + return ; +} + +export function EditableMotivatorTitle(props: TitleProps) { + return updateMotivatorSession(id, { title })} />; +} + +export function EditableYearReviewTitle(props: TitleProps) { + return updateYearReviewSession(id, { title })} />; +} + +export function EditableWeatherTitle(props: TitleProps) { + return updateWeatherSession(id, { title })} />; +} + +export function EditableWeeklyCheckInTitle(props: TitleProps) { + return updateWeeklyCheckInSession(id, { title })} />; +} + +export function EditableGifMoodTitle(props: TitleProps) { + return updateGifMoodSession(id, { title })} />; +} diff --git a/src/components/ui/EditableWeatherTitle.tsx b/src/components/ui/EditableWeatherTitle.tsx deleted file mode 100644 index 83890db..0000000 --- a/src/components/ui/EditableWeatherTitle.tsx +++ /dev/null @@ -1,28 +0,0 @@ -'use client'; - -import { EditableTitle } from './EditableTitle'; -import { updateWeatherSession } from '@/actions/weather'; - -interface EditableWeatherTitleProps { - sessionId: string; - initialTitle: string; - canEdit: boolean; -} - -export function EditableWeatherTitle({ - sessionId, - initialTitle, - canEdit, -}: EditableWeatherTitleProps) { - return ( - { - const result = await updateWeatherSession(id, { title }); - return result; - }} - /> - ); -} diff --git a/src/components/ui/EditableWeeklyCheckInTitle.tsx b/src/components/ui/EditableWeeklyCheckInTitle.tsx deleted file mode 100644 index 995cad1..0000000 --- a/src/components/ui/EditableWeeklyCheckInTitle.tsx +++ /dev/null @@ -1,28 +0,0 @@ -'use client'; - -import { EditableTitle } from './EditableTitle'; -import { updateWeeklyCheckInSession } from '@/actions/weekly-checkin'; - -interface EditableWeeklyCheckInTitleProps { - sessionId: string; - initialTitle: string; - canEdit: boolean; -} - -export function EditableWeeklyCheckInTitle({ - sessionId, - initialTitle, - canEdit, -}: EditableWeeklyCheckInTitleProps) { - return ( - { - const result = await updateWeeklyCheckInSession(id, { title }); - return result; - }} - /> - ); -} diff --git a/src/components/ui/EditableYearReviewTitle.tsx b/src/components/ui/EditableYearReviewTitle.tsx deleted file mode 100644 index 7175d97..0000000 --- a/src/components/ui/EditableYearReviewTitle.tsx +++ /dev/null @@ -1,28 +0,0 @@ -'use client'; - -import { EditableTitle } from './EditableTitle'; -import { updateYearReviewSession } from '@/actions/year-review'; - -interface EditableYearReviewTitleProps { - sessionId: string; - initialTitle: string; - canEdit: boolean; -} - -export function EditableYearReviewTitle({ - sessionId, - initialTitle, - canEdit, -}: EditableYearReviewTitleProps) { - return ( - { - const result = await updateYearReviewSession(id, { title }); - return result; - }} - /> - ); -} diff --git a/src/components/ui/index.ts b/src/components/ui/index.ts index 2192064..fe118ae 100644 --- a/src/components/ui/index.ts +++ b/src/components/ui/index.ts @@ -4,11 +4,14 @@ export { Button } from './Button'; export { Card, CardHeader, CardTitle, CardDescription, CardContent, CardFooter } from './Card'; export { CollaboratorDisplay } from './CollaboratorDisplay'; export { EditableTitle } from './EditableTitle'; -export { EditableSessionTitle } from './EditableSessionTitle'; -export { EditableMotivatorTitle } from './EditableMotivatorTitle'; -export { EditableYearReviewTitle } from './EditableYearReviewTitle'; -export { EditableWeeklyCheckInTitle } from './EditableWeeklyCheckInTitle'; -export { EditableWeatherTitle } from './EditableWeatherTitle'; +export { + EditableSessionTitle, + EditableMotivatorTitle, + EditableYearReviewTitle, + EditableWeeklyCheckInTitle, + EditableWeatherTitle, + EditableGifMoodTitle, +} from './EditableTitles'; export { PageHeader } from './PageHeader'; export { Input } from './Input'; export { ParticipantInput } from './ParticipantInput';