From b8d509647d2dd73c77c5a4ab0d4837a119ea479e Mon Sep 17 00:00:00 2001 From: Paul Hovley Date: Thu, 31 Oct 2024 14:40:47 -0600 Subject: [PATCH 1/5] Add state differences for report page --- packages/app/src/api/platformServer/keys.ts | 4 + .../weeklyReport.platformApi.ts | 17 ++ packages/app/src/assets/agi_2048.png | Bin 0 -> 144695 bytes .../app/src/components/Home/DateHeader.tsx | 1 + .../Home/Extensions/ExtensionsWidget.tsx | 5 +- .../src/components/PerformanceReviewFax.tsx | 24 +- .../WeeklyReports/AiReportHeader.tsx | 88 +++++++ .../WeeklyReports/BigBrotherReview.tsx | 69 ++++++ .../WeeklyReports/DeepWorkScore.tsx | 5 +- .../components/WeeklyReports/GrowthScore.tsx | 2 +- .../components/WeeklyReports/ProjectScore.tsx | 2 +- .../components/WeeklyReports/ReportsPage.tsx | 219 ++++++++++++------ .../components/common/WeeklyReportDialog.tsx | 11 +- packages/app/src/config/theme.ts | 27 ++- packages/app/src/hooks/useSelectedDate.ts | 20 +- .../server/src/common/scheduleTask.service.ts | 54 +++-- 16 files changed, 441 insertions(+), 107 deletions(-) create mode 100644 packages/app/src/api/platformServer/weeklyReport.platformApi.ts create mode 100644 packages/app/src/assets/agi_2048.png create mode 100644 packages/app/src/components/WeeklyReports/AiReportHeader.tsx create mode 100644 packages/app/src/components/WeeklyReports/BigBrotherReview.tsx diff --git a/packages/app/src/api/platformServer/keys.ts b/packages/app/src/api/platformServer/keys.ts index 0e1b559..3329c6a 100644 --- a/packages/app/src/api/platformServer/keys.ts +++ b/packages/app/src/api/platformServer/keys.ts @@ -2,3 +2,7 @@ export const gamemakerKeys = { gameSettings: (id: string) => ['gameSettings', id] as const, aiWeeklyReports: ['aiWeeklyReports'] as const, } + +export const weeklyReportKeys = { + aiWeeklyReports: (date: string) => ['aiWeeklyReports', date] as const, +} diff --git a/packages/app/src/api/platformServer/weeklyReport.platformApi.ts b/packages/app/src/api/platformServer/weeklyReport.platformApi.ts new file mode 100644 index 0000000..ff73619 --- /dev/null +++ b/packages/app/src/api/platformServer/weeklyReport.platformApi.ts @@ -0,0 +1,17 @@ +import { platformApiRequest } from '../request' + +import { PLATFORM_API_URL, useBetterQuery } from '..' +import { weeklyReportKeys } from './keys' + +export const useGetAiWeeklyReport = (startOfWeek: string, email?: string) => { + const queryFn = () => + platformApiRequest({ + url: `${PLATFORM_API_URL}/ai-weekly-report?email=${email}&startOfWeek=${startOfWeek}`, + method: 'GET', + }) + return useBetterQuery({ + queryKey: weeklyReportKeys.aiWeeklyReports(startOfWeek), + queryFn, + enabled: !!email, + }) +} diff --git a/packages/app/src/assets/agi_2048.png b/packages/app/src/assets/agi_2048.png new file mode 100644 index 0000000000000000000000000000000000000000..7b16a26ef580cf70068a82ababb0226c621db1e6 GIT binary patch literal 144695 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%0AXz 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 { const today = dayjs().startOf(period === 'week' ? 'isoWeek' : period) + const [anchorEl, setAnchorEl] = useState(null) const open = Boolean(anchorEl) const navigate = useNavigate() diff --git a/packages/app/src/components/Home/Extensions/ExtensionsWidget.tsx b/packages/app/src/components/Home/Extensions/ExtensionsWidget.tsx index 342cacf..675874a 100644 --- a/packages/app/src/components/Home/Extensions/ExtensionsWidget.tsx +++ b/packages/app/src/components/Home/Extensions/ExtensionsWidget.tsx @@ -101,7 +101,10 @@ export const ExtensionsWidget = () => { {extensionCardData.map((extension) => ( - + ))} diff --git a/packages/app/src/components/PerformanceReviewFax.tsx b/packages/app/src/components/PerformanceReviewFax.tsx index 374481b..fb54b76 100644 --- a/packages/app/src/components/PerformanceReviewFax.tsx +++ b/packages/app/src/components/PerformanceReviewFax.tsx @@ -1,4 +1,4 @@ -import { Box, Divider, Stack } from '@mui/material' +import { Box, Divider, Stack, Typography } from '@mui/material' import { BossImage } from './common/Icons/BossImage' interface Props { @@ -7,24 +7,32 @@ interface Props { export const PerformanceReviewFax = ({ performanceReview }: Props) => { return ( - + - + -
+            
               From: Timothy Brother
-            
-
Subject: Comments on Your Week
+ + + Subject: Comments on Your Week +
-
+      
         {performanceReview}
-      
+
) } diff --git a/packages/app/src/components/WeeklyReports/AiReportHeader.tsx b/packages/app/src/components/WeeklyReports/AiReportHeader.tsx new file mode 100644 index 0000000..6510693 --- /dev/null +++ b/packages/app/src/components/WeeklyReports/AiReportHeader.tsx @@ -0,0 +1,88 @@ +import { Box, Stack, Typography } from '@mui/material' +import { CodeClimbersLoadingButton } from '../common/CodeClimbersLoadingButton' +import { BossImage } from '../common/Icons/BossImage' +import { CodeClimbersIconButton } from '../common/CodeClimbersIconButton' +import CloseIcon from '@mui/icons-material/Close' +import { WeeklyReportDialog } from '../common/WeeklyReportDialog' +import { useGetCurrentUser } from '../../api/browser/user.api' +import { useState } from 'react' + +export const AiReportHeader = (props: { + showCloseButton?: boolean + aiButton: { + text: string + onClick?: () => void + disabled?: boolean + } + openWeeklyReportModal?: boolean +}) => { + const { data: user } = useGetCurrentUser() + const [isWeeklyReportModalOpen, setIsWeeklyReportModalOpen] = useState(false) + + return ( + + + + + + + From: Timothy Brother + + + Subject: Comments on Your Week + + + + { + if (props.openWeeklyReportModal) { + setIsWeeklyReportModalOpen(true) + } + props.aiButton.onClick?.() + }} + > + {props.aiButton.text} + + + {props.showCloseButton && ( + + + + + + )} + {user && isWeeklyReportModalOpen && ( + setIsWeeklyReportModalOpen(false)} + /> + )} + + ) +} diff --git a/packages/app/src/components/WeeklyReports/BigBrotherReview.tsx b/packages/app/src/components/WeeklyReports/BigBrotherReview.tsx new file mode 100644 index 0000000..01b4df2 --- /dev/null +++ b/packages/app/src/components/WeeklyReports/BigBrotherReview.tsx @@ -0,0 +1,69 @@ +import { Box } from '@mui/material' +import { useGetCurrentUser } from '../../api/browser/user.api' +import { useGetLocalServerWeeklyReport } from '../../api/localServer/report.localapi' +import { useGetAiWeeklyReport } from '../../api/platformServer/weeklyReport.platformApi' +import { useSelectedWeekDate } from '../../hooks/useSelectedDate' +import { PerformanceReviewFax } from '../PerformanceReviewFax' +import { AiReportHeader } from './AiReportHeader' + +export const BigBrotherReview = () => { + const { selectedDate, isCurrentWeek } = useSelectedWeekDate() + + const { data: user } = useGetCurrentUser() + const { data: weeklyScores, isPending } = + useGetLocalServerWeeklyReport(selectedDate) + const { data: aiWeeklyReport } = useGetAiWeeklyReport( + selectedDate.toISOString(), + user?.email, + ) + + if (isPending || !weeklyScores) { + return
Loading
+ } + const reportOff = user?.weeklyReportType !== 'ai' + const reportMissing = !aiWeeklyReport + + const getReviewContent = () => { + if (reportOff) { + return ( + + ) + } + + if (isCurrentWeek()) { + return ( + + ) + } + + if (reportMissing) { + return ( + { + console.log('Generate Big Brother Report') + }, + }} + /> + ) + } + + return + } + + return ( + + {getReviewContent()} + + ) +} diff --git a/packages/app/src/components/WeeklyReports/DeepWorkScore.tsx b/packages/app/src/components/WeeklyReports/DeepWorkScore.tsx index 86b9376..6b10c6d 100644 --- a/packages/app/src/components/WeeklyReports/DeepWorkScore.tsx +++ b/packages/app/src/components/WeeklyReports/DeepWorkScore.tsx @@ -28,6 +28,7 @@ export const DeepWorkScore = ({ deepWorkScore }: Props) => { }, ] + const hasNoDeepWork = data.length === 0 || data[0].data.length === 0 return ( { sx={{ display: 'flex', flexDirection: 'column', - height: '225px', + height: '250px', }} > - {data.length > 0 ? ( + {!hasNoDeepWork ? ( <> {formatMinutes(deepWorkScore.actual)} avg 5 highest days diff --git a/packages/app/src/components/WeeklyReports/GrowthScore.tsx b/packages/app/src/components/WeeklyReports/GrowthScore.tsx index a37ed45..764ec6b 100644 --- a/packages/app/src/components/WeeklyReports/GrowthScore.tsx +++ b/packages/app/src/components/WeeklyReports/GrowthScore.tsx @@ -37,7 +37,7 @@ export const GrowthScore = ({ growthScore }: Props) => { padding: '20px 30px', display: 'flex', flexDirection: 'column', - height: '225px', + height: '250px', }} > {data.length > 0 ? ( diff --git a/packages/app/src/components/WeeklyReports/ProjectScore.tsx b/packages/app/src/components/WeeklyReports/ProjectScore.tsx index 9092235..e56985e 100644 --- a/packages/app/src/components/WeeklyReports/ProjectScore.tsx +++ b/packages/app/src/components/WeeklyReports/ProjectScore.tsx @@ -40,7 +40,7 @@ export const ProjectScore = ({ projectScore }: Props) => { padding: '20px 30px', display: 'flex', flexDirection: 'column', - height: '225px', + height: '250px', }} > {data.length > 0 ? ( diff --git a/packages/app/src/components/WeeklyReports/ReportsPage.tsx b/packages/app/src/components/WeeklyReports/ReportsPage.tsx index 0d07a7b..1988623 100644 --- a/packages/app/src/components/WeeklyReports/ReportsPage.tsx +++ b/packages/app/src/components/WeeklyReports/ReportsPage.tsx @@ -1,7 +1,5 @@ -import dayjs from 'dayjs' import { Box, Divider, Stack, Typography } from '@mui/material' import { DateHeader } from '../Home/DateHeader' -import { useState } from 'react' import { ProjectScore } from './ProjectScore' import { GrowthScore } from './GrowthScore' import { DeepWorkScore } from './DeepWorkScore' @@ -10,16 +8,25 @@ import { Logo } from '../common/Logo/Logo' import InfoOutlinedIcon from '@mui/icons-material/InfoOutlined' import { useGetLocalServerWeeklyReport } from '../../api/localServer/report.localapi' import { CodeClimbersLink } from '../common/CodeClimbersLink' +import { useSelectedWeekDate } from '../../hooks/useSelectedDate' +import { BigBrotherReview } from './BigBrotherReview' +import agi2024 from '../../assets/agi_2048.png' +import { posthog } from 'posthog-js' +import { useGetCurrentUser } from '../../api/browser/user.api' export const ReportsPage = () => { - const [selectedDate, setSelectedDate] = useState( - dayjs().subtract(1, 'week').startOf('isoWeek'), - ) + const { selectedDate, setSelectedDate } = useSelectedWeekDate() + const { data: weeklyScores, isPending } = useGetLocalServerWeeklyReport(selectedDate) - if (isPending || !weeklyScores) { + + const { data: user } = useGetCurrentUser() + + if (isPending || !weeklyScores || !user) { return
Loading
} + + const reportOff = user?.weeklyReportType !== 'ai' return ( { period={'week'} title="Reports" /> - - + theme.palette.background.paper, - p: 4, + display: 'flex', + gap: 2, + flexDirection: { + xs: 'column', + lg: 'row', + maxWidth: '1200px', + width: '100%', + }, + alignItems: { + xs: 'center', + lg: 'flex-start', + }, + justifyContent: 'center', }} > - - - - - - {weeklyScores.totalScore.score}/10 - - + + theme.palette.background.paper, + p: 4, + }} + > + + + + + + {weeklyScores.totalScore.score}/10 + + theme.palette.text.secondary, + textAlign: 'center', + height: 'auto', + }} + > + {' '} + theme.palette.text.secondary, + textDecoration: 'none', + }} + > + Overall Score + + + + + + + + + + + + {!reportOff && ( + + theme.palette.text.secondary, - textAlign: 'center', - height: 'auto', + position: 'absolute', + top: 0, + left: 0, + width: '100%', + height: '100%', + display: 'flex', + flexDirection: 'column', + justifyContent: 'space-between', + p: 6, + border: '1px solid transparent', + '&:hover': { + cursor: 'pointer', + border: (theme) => + `1px solid ${theme.palette.primary.main}`, + }, + }} + onClick={() => { + window.open( + 'https://codeclimbers.io/blog/big-brother', + '_blank', + ) + posthog.capture('weekly_report_agi_2048_clicked') }} > - {' '} - theme.palette.text.secondary, - textDecoration: 'none', - }} - > - Overall Score - - - + The Year is 2048 +
After AGI nothing was the same
+
+ +
+ )} + + theme.palette.text.primary }} + > + Submit Feedback + +  on this report -
- - - - -
- +
+
) } diff --git a/packages/app/src/components/common/WeeklyReportDialog.tsx b/packages/app/src/components/common/WeeklyReportDialog.tsx index 90067cb..7e5e5b1 100644 --- a/packages/app/src/components/common/WeeklyReportDialog.tsx +++ b/packages/app/src/components/common/WeeklyReportDialog.tsx @@ -20,6 +20,7 @@ import { } from '../../api/browser/user.api' import { CodeClimbersLink } from './CodeClimbersLink' import { setFeatureEnabled } from '../../services/feature.service' +import { BossImage } from './Icons/BossImage' interface ReportOption { type: CodeClimbers.WeeklyReportType @@ -28,11 +29,11 @@ interface ReportOption { } const ReportOptions: ReportOption[] = [ - // { - // type: 'ai', - // img: () => , - // name: 'Big Brother Edition', - // }, + { + type: 'ai', + img: () => , + name: 'Big Brother Edition', + }, { type: 'standard', img: () => , diff --git a/packages/app/src/config/theme.ts b/packages/app/src/config/theme.ts index 20c6551..14cc119 100644 --- a/packages/app/src/config/theme.ts +++ b/packages/app/src/config/theme.ts @@ -1,6 +1,5 @@ import '@mui/lab/themeAugmentation' import { ThemeOptions, createTheme } from '@mui/material' -import { TypographyOptions } from '@mui/material/styles/createTypography' export interface GraphColors { blue: string @@ -30,9 +29,21 @@ declare module '@mui/material/styles' { interface TypeText { actionDown?: string } + interface TypographyVariants { + monospace: React.CSSProperties + body3: React.CSSProperties + } + + interface TypographyVariantsOptions { + monospace?: React.CSSProperties + body3?: React.CSSProperties + } } -interface ExtendedTypographyOptions extends TypographyOptions { - body3: React.CSSProperties +declare module '@mui/material/Typography' { + interface TypographyPropsVariantOverrides { + monospace: true + body3: true + } } const typography = { @@ -63,7 +74,7 @@ const typography = { }, h5: { fontFamily: 'Roboto', - textTransform: 'uppercase', + textTransform: 'uppercase' as const, fontSize: '14px', lineHeight: '120%', fontWeight: 500, @@ -89,7 +100,13 @@ const typography = { lineHeight: '16px', fontWeight: 400, }, -} as ExtendedTypographyOptions + monospace: { + fontFamily: 'monospace', + fontSize: '12px', + lineHeight: '16px', + fontWeight: 400, + }, +} const lightGraphColors: GraphColors = { blue: '#3892F3', diff --git a/packages/app/src/hooks/useSelectedDate.ts b/packages/app/src/hooks/useSelectedDate.ts index 90bb5e3..e473f67 100644 --- a/packages/app/src/hooks/useSelectedDate.ts +++ b/packages/app/src/hooks/useSelectedDate.ts @@ -14,4 +14,22 @@ const useSelectedDate = () => { return { selectedDate, setSelectedDate } } -export { useSelectedDate } +const weekAppStore = create<{ + selectedDate: dayjs.Dayjs + setSelectedDate: (date: dayjs.Dayjs) => void + isCurrentWeek: () => boolean +}>((set, get) => ({ + selectedDate: dayjs().startOf('week').subtract(1, 'week').add(1, 'day'), + setSelectedDate: (date) => set({ selectedDate: date }), + isCurrentWeek: () => { + const state = get() + return state.selectedDate.isSame(dayjs().startOf('isoWeek'), 'week') + }, +})) + +const useSelectedWeekDate = () => { + const { selectedDate, setSelectedDate, isCurrentWeek } = weekAppStore() + return { selectedDate, setSelectedDate, isCurrentWeek } +} + +export { useSelectedDate, useSelectedWeekDate } diff --git a/packages/server/src/common/scheduleTask.service.ts b/packages/server/src/common/scheduleTask.service.ts index c8efead..f59ff61 100644 --- a/packages/server/src/common/scheduleTask.service.ts +++ b/packages/server/src/common/scheduleTask.service.ts @@ -35,25 +35,49 @@ export class ScheduledTaskService { } private async sendWeeklyReport() { - const startOfWeek = dayjs().subtract(1, 'week').startOf('isoWeek') + const startOfWeek = dayjs() + .startOf('week') + .subtract(1, 'week') + .add(1, 'day') const scores = await this.reportService.getWeeklyScores(startOfWeek) const user = await this.userService.getCurrentUser() + if (user.weeklyReportType === 'none') return - try { - const response = await axios.post(`${platformUrl}/weekly-report`, { - email: user.email, - weeklyReport: scores, - startOfWeek: startOfWeek.toISOString(), - }) - - Logger.log(`Weekly report sent successfully for user ${user.email}`) - Logger.log(`Response status: ${response.status}`) - } catch (error) { - Logger.error( - `Error sending weekly report for user ${user.email}:`, - error.message, - ) + if (user.weeklyReportType === 'ai') { + try { + const response = await axios.post(`${platformUrl}/ai-weekly-report`, { + email: user.email, + weeklyReport: scores, + startOfWeek: startOfWeek.toISOString(), + }) + + Logger.log(`Weekly report sent successfully for user ${user.email}`) + Logger.log(`Response status: ${response.status}`) + } catch (error) { + Logger.error( + `Error sending weekly report for user ${user.email}:`, + error.message, + ) + } + } + + if (user.weeklyReportType === 'standard') { + try { + const response = await axios.post(`${platformUrl}/weekly-report`, { + email: user.email, + weeklyReport: scores, + startOfWeek: startOfWeek.toISOString(), + }) + + Logger.log(`Weekly report sent successfully for user ${user.email}`) + Logger.log(`Response status: ${response.status}`) + } catch (error) { + Logger.error( + `Error sending weekly report for user ${user.email}:`, + error.message, + ) + } } Logger.log(scores.totalScore) From 12806405dc2e2b33d5bb9b55fcd1687f7dca49dc Mon Sep 17 00:00:00 2001 From: Paul Hovley Date: Thu, 31 Oct 2024 19:03:44 -0600 Subject: [PATCH 2/5] Additional states for managing ai report --- .../weeklyReport.platformApi.ts | 26 ++++++ .../WeeklyReports/AiReportHeader.tsx | 92 ++++++++++++++----- .../WeeklyReports/BigBrotherReview.tsx | 39 ++++++-- .../components/WeeklyReports/ReportsPage.tsx | 7 +- .../WeeklyReports/WeeklyBarGraph.tsx | 2 +- packages/app/src/hooks/useSelectedDate.ts | 10 +- 6 files changed, 143 insertions(+), 33 deletions(-) diff --git a/packages/app/src/api/platformServer/weeklyReport.platformApi.ts b/packages/app/src/api/platformServer/weeklyReport.platformApi.ts index ff73619..e0d78db 100644 --- a/packages/app/src/api/platformServer/weeklyReport.platformApi.ts +++ b/packages/app/src/api/platformServer/weeklyReport.platformApi.ts @@ -2,6 +2,7 @@ import { platformApiRequest } from '../request' import { PLATFORM_API_URL, useBetterQuery } from '..' import { weeklyReportKeys } from './keys' +import { useMutation, useQueryClient } from '@tanstack/react-query' export const useGetAiWeeklyReport = (startOfWeek: string, email?: string) => { const queryFn = () => @@ -15,3 +16,28 @@ export const useGetAiWeeklyReport = (startOfWeek: string, email?: string) => { enabled: !!email, }) } + +export const useGenerateAiWeeklyReport = () => { + const queryClient = useQueryClient() + let startOfWeek: string + const mutationFn = (body: { + email: string + startOfWeek: string + weeklyReport: CodeClimbers.WeeklyScores + }) => { + startOfWeek = body.startOfWeek + return platformApiRequest({ + url: `${PLATFORM_API_URL}/ai-weekly-report`, + method: 'POST', + body, + }) + } + return useMutation({ + mutationFn, + onSuccess: () => { + queryClient.invalidateQueries({ + queryKey: weeklyReportKeys.aiWeeklyReports(startOfWeek), + }) + }, + }) +} diff --git a/packages/app/src/components/WeeklyReports/AiReportHeader.tsx b/packages/app/src/components/WeeklyReports/AiReportHeader.tsx index 6510693..f3eb614 100644 --- a/packages/app/src/components/WeeklyReports/AiReportHeader.tsx +++ b/packages/app/src/components/WeeklyReports/AiReportHeader.tsx @@ -1,11 +1,40 @@ import { Box, Stack, Typography } from '@mui/material' -import { CodeClimbersLoadingButton } from '../common/CodeClimbersLoadingButton' import { BossImage } from '../common/Icons/BossImage' import { CodeClimbersIconButton } from '../common/CodeClimbersIconButton' import CloseIcon from '@mui/icons-material/Close' import { WeeklyReportDialog } from '../common/WeeklyReportDialog' import { useGetCurrentUser } from '../../api/browser/user.api' -import { useState } from 'react' +import { useEffect, useState } from 'react' +import { CodeClimbersButton } from '../common/CodeClimbersButton' + +const getLoadingTexts = (): string => { + return 'Contacting your manager... Choosing excuses... Engaging passive-aggressive behavior... Attempting to sabotage your career... Synergizing with your peers... Scheduling a meeting... Reviewing vieled threats... ' +} + +const useLoadingText = (loading?: boolean) => { + const [loadingTextIndex, setLoadingTextIndex] = useState(0) + + const [loadingText, setLoadingText] = useState('') + + useEffect(() => { + if (!loading) { + return + } + const interval = setInterval(() => { + const index = + loadingTextIndex > getLoadingTexts().length ? 0 : loadingTextIndex + setLoadingText((prevText) => prevText + getLoadingTexts()[index]) + setLoadingTextIndex((prevIndex) => { + const newIndex = prevIndex + 1 + return newIndex >= getLoadingTexts().length ? 0 : newIndex + }) + }, 100) + return () => clearInterval(interval) + }, [loadingTextIndex, loadingText, loading]) + return { + loadingText, + } +} export const AiReportHeader = (props: { showCloseButton?: boolean @@ -13,11 +42,13 @@ export const AiReportHeader = (props: { text: string onClick?: () => void disabled?: boolean + loading?: boolean } openWeeklyReportModal?: boolean }) => { const { data: user } = useGetCurrentUser() const [isWeeklyReportModalOpen, setIsWeeklyReportModalOpen] = useState(false) + const { loadingText } = useLoadingText(props.aiButton.loading) return ( - { - if (props.openWeeklyReportModal) { - setIsWeeklyReportModalOpen(true) - } - props.aiButton.onClick?.() - }} - > - {props.aiButton.text} - + {props.aiButton.loading ? ( + + {loadingText} + + ) : ( + { + if (props.openWeeklyReportModal) { + setIsWeeklyReportModalOpen(true) + } + props.aiButton.onClick?.() + }} + > + {props.aiButton.text} + + )} {props.showCloseButton && ( diff --git a/packages/app/src/components/WeeklyReports/BigBrotherReview.tsx b/packages/app/src/components/WeeklyReports/BigBrotherReview.tsx index 01b4df2..e8801f3 100644 --- a/packages/app/src/components/WeeklyReports/BigBrotherReview.tsx +++ b/packages/app/src/components/WeeklyReports/BigBrotherReview.tsx @@ -1,21 +1,25 @@ import { Box } from '@mui/material' import { useGetCurrentUser } from '../../api/browser/user.api' import { useGetLocalServerWeeklyReport } from '../../api/localServer/report.localapi' -import { useGetAiWeeklyReport } from '../../api/platformServer/weeklyReport.platformApi' +import { + useGenerateAiWeeklyReport, + useGetAiWeeklyReport, +} from '../../api/platformServer/weeklyReport.platformApi' import { useSelectedWeekDate } from '../../hooks/useSelectedDate' import { PerformanceReviewFax } from '../PerformanceReviewFax' import { AiReportHeader } from './AiReportHeader' export const BigBrotherReview = () => { - const { selectedDate, isCurrentWeek } = useSelectedWeekDate() + const { selectedDate, isCurrentWeek, isMonthAgo } = useSelectedWeekDate() const { data: user } = useGetCurrentUser() const { data: weeklyScores, isPending } = useGetLocalServerWeeklyReport(selectedDate) - const { data: aiWeeklyReport } = useGetAiWeeklyReport( - selectedDate.toISOString(), - user?.email, - ) + + const { data: aiWeeklyReport, isPending: isLoadingAiWeeklyReport } = + useGetAiWeeklyReport(selectedDate.toISOString(), user?.email) + const { mutate: generateAiWeeklyReport, isPending: isGeneratingReport } = + useGenerateAiWeeklyReport() if (isPending || !weeklyScores) { return
Loading
@@ -24,6 +28,11 @@ export const BigBrotherReview = () => { const reportMissing = !aiWeeklyReport const getReviewContent = () => { + if (isLoadingAiWeeklyReport) { + return ( + + ) + } if (reportOff) { return ( { ) } + if (isMonthAgo()) { + return ( + + ) + } + if (reportMissing) { return ( { - console.log('Generate Big Brother Report') + generateAiWeeklyReport({ + email: user?.email, + startOfWeek: selectedDate.toISOString(), + weeklyReport: weeklyScores, + }) }, + loading: isGeneratingReport, }} /> ) diff --git a/packages/app/src/components/WeeklyReports/ReportsPage.tsx b/packages/app/src/components/WeeklyReports/ReportsPage.tsx index 1988623..0bf1530 100644 --- a/packages/app/src/components/WeeklyReports/ReportsPage.tsx +++ b/packages/app/src/components/WeeklyReports/ReportsPage.tsx @@ -13,6 +13,7 @@ import { BigBrotherReview } from './BigBrotherReview' import agi2024 from '../../assets/agi_2048.png' import { posthog } from 'posthog-js' import { useGetCurrentUser } from '../../api/browser/user.api' +import { LoadingScreen } from '../LoadingScreen' export const ReportsPage = () => { const { selectedDate, setSelectedDate } = useSelectedWeekDate() @@ -23,7 +24,11 @@ export const ReportsPage = () => { const { data: user } = useGetCurrentUser() if (isPending || !weeklyScores || !user) { - return
Loading
+ return + } + + if (!weeklyScores || !user) { + return
No weekly scores or no user found
} const reportOff = user?.weeklyReportType !== 'ai' diff --git a/packages/app/src/components/WeeklyReports/WeeklyBarGraph.tsx b/packages/app/src/components/WeeklyReports/WeeklyBarGraph.tsx index ca94938..0259930 100644 --- a/packages/app/src/components/WeeklyReports/WeeklyBarGraph.tsx +++ b/packages/app/src/components/WeeklyReports/WeeklyBarGraph.tsx @@ -15,7 +15,7 @@ export const WeeklyBarGraph = (props: Props) => { const length = record.name.length return { ...record, - name: length > 13 ? `${record.name.slice(0, 12)}..` : record.name, + name: length > 11 ? `${record.name.slice(0, 10)}..` : record.name, } }) diff --git a/packages/app/src/hooks/useSelectedDate.ts b/packages/app/src/hooks/useSelectedDate.ts index e473f67..a59edfe 100644 --- a/packages/app/src/hooks/useSelectedDate.ts +++ b/packages/app/src/hooks/useSelectedDate.ts @@ -18,6 +18,7 @@ const weekAppStore = create<{ selectedDate: dayjs.Dayjs setSelectedDate: (date: dayjs.Dayjs) => void isCurrentWeek: () => boolean + isMonthAgo: () => boolean }>((set, get) => ({ selectedDate: dayjs().startOf('week').subtract(1, 'week').add(1, 'day'), setSelectedDate: (date) => set({ selectedDate: date }), @@ -25,11 +26,16 @@ const weekAppStore = create<{ const state = get() return state.selectedDate.isSame(dayjs().startOf('isoWeek'), 'week') }, + isMonthAgo: () => { + const state = get() + return state.selectedDate.isBefore(dayjs().subtract(1, 'month'), 'day') + }, })) const useSelectedWeekDate = () => { - const { selectedDate, setSelectedDate, isCurrentWeek } = weekAppStore() - return { selectedDate, setSelectedDate, isCurrentWeek } + const { selectedDate, setSelectedDate, isCurrentWeek, isMonthAgo } = + weekAppStore() + return { selectedDate, setSelectedDate, isCurrentWeek, isMonthAgo } } export { useSelectedDate, useSelectedWeekDate } From a8e9962798ef58928b532615075ba6f5f8baf129 Mon Sep 17 00:00:00 2001 From: Paul Hovley Date: Fri, 1 Nov 2024 12:25:45 -0600 Subject: [PATCH 3/5] theme updates for hey sport message --- .../app/src/components/Home/Time/Time.tsx | 88 ++++++++++++++++--- .../src/components/PerformanceReviewFax.tsx | 8 +- packages/app/src/config/theme.ts | 10 +++ 3 files changed, 92 insertions(+), 14 deletions(-) diff --git a/packages/app/src/components/Home/Time/Time.tsx b/packages/app/src/components/Home/Time/Time.tsx index bb50ce9..0336db7 100644 --- a/packages/app/src/components/Home/Time/Time.tsx +++ b/packages/app/src/components/Home/Time/Time.tsx @@ -3,38 +3,100 @@ import Grid2 from '@mui/material/Unstable_Grid2/Grid2' import { Dayjs } from 'dayjs' import { BossImage } from '../../common/Icons/BossImage' -import { useState } from 'react' +import { useEffect, useRef, useState } from 'react' import { WeeklyReportDialog } from '../../common/WeeklyReportDialog' import { NotificationIcon } from '../../common/Icons/NotificationIcon' import { DeepWork } from '../DeepWork' import { CategoryChart } from './CategoryChart' import { useGetCurrentUser } from '../../../api/browser/user.api' +import { useBrowserStorage } from '../../../hooks/useBrowserStorage' type Props = { selectedDate: Dayjs } export const Time = ({ selectedDate }: Props) => { const [isWeeklyReportModalOpen, setIsWeeklyReportModalOpen] = useState(false) + const iconRef = useRef(null) const { data: user } = useGetCurrentUser() + const [dismissedInfo, setDismissedInfo] = useBrowserStorage({ + key: 'weekly-report-dismissed', + value: { + dismissed: false, + dismissedAt: null as number | null, + }, + }) + const [iconPosition, setIconPosition] = useState(null) + const updateIconPosition = () => { + if (!iconRef.current) return + const newPosition = iconRef.current.getBoundingClientRect() + setIconPosition(newPosition) + } + useEffect(() => { + updateIconPosition() + // Add resize event listener + window.addEventListener('resize', updateIconPosition) + // Cleanup + return () => { + window.removeEventListener('resize', updateIconPosition) + } + }, [iconRef]) const WeeklyReportSettings = () => { - const showNotificationIcon = user?.weeklyReportType === '' && !user?.email + const showNotification = + (user?.weeklyReportType === '' && !user?.email) || + !dismissedInfo?.dismissed return ( { setIsWeeklyReportModalOpen(true) + setDismissedInfo({ dismissed: true, dismissedAt: Date.now() }) }} > - {showNotificationIcon && ( - + {showNotification && ( + <> + + theme.palette.background.inverted, + '&::after': { + content: '""', + position: 'absolute', + bottom: -6, + right: 10, + width: 0, + height: 0, + borderLeft: '6px solid transparent', + borderRight: '6px solid transparent', + borderTop: (theme) => + `6px solid ${theme.palette.background.inverted}`, + }, + }} + > + theme.palette.text.inverted }} + > + Hey sport! + + + )} ) diff --git a/packages/app/src/components/PerformanceReviewFax.tsx b/packages/app/src/components/PerformanceReviewFax.tsx index fb54b76..cc145ab 100644 --- a/packages/app/src/components/PerformanceReviewFax.tsx +++ b/packages/app/src/components/PerformanceReviewFax.tsx @@ -7,7 +7,13 @@ interface Props { export const PerformanceReviewFax = ({ performanceReview }: Props) => { return ( - + theme.palette.background.fax, + color: (theme) => theme.palette.text.fax, + p: 6, + }} + > diff --git a/packages/app/src/config/theme.ts b/packages/app/src/config/theme.ts index 14cc119..4edb669 100644 --- a/packages/app/src/config/theme.ts +++ b/packages/app/src/config/theme.ts @@ -25,9 +25,13 @@ declare module '@mui/material/styles' { paper_raised: string medium: string border: string + fax: string + inverted: string } interface TypeText { actionDown?: string + fax?: string + inverted?: string } interface TypographyVariants { monospace: React.CSSProperties @@ -142,14 +146,18 @@ const darkOptions: ThemeOptions = { default: '#1D1D1D', paper: BASE_THEME_GREYS[900], paper_raised: '#323232', + fax: '#FAF7F7', medium: '#3F3F3F', border: '#707070', + inverted: '#F8F8F8', }, primary: { main: '#72B7F9', }, text: { actionDown: '#AEDBFE', + fax: '#222222', + inverted: '#222222', }, graphColors: darkGraphColors, // Much better readability in dark modes and accessibility @@ -189,12 +197,14 @@ const lightOptions: ThemeOptions = { default: '#F5F5F5', paper: '#F8F8F8', paper_raised: '#E6E6E6', + inverted: '#323232', }, graphColors: lightGraphColors, text: { primary: '#222222', //default secondary: '#000000', //strong disabled: '#464646', //weak + inverted: '#FAF7F7', }, }, typography, From e680bb805635bf5eb78a3bf5ffbdbd74210a0700 Mon Sep 17 00:00:00 2001 From: Paul Hovley Date: Fri, 1 Nov 2024 12:39:37 -0600 Subject: [PATCH 4/5] Better weekly report validation --- .../components/common/WeeklyReportDialog.tsx | 45 ++++++++++++++++--- 1 file changed, 39 insertions(+), 6 deletions(-) diff --git a/packages/app/src/components/common/WeeklyReportDialog.tsx b/packages/app/src/components/common/WeeklyReportDialog.tsx index 7e5e5b1..aed6d4d 100644 --- a/packages/app/src/components/common/WeeklyReportDialog.tsx +++ b/packages/app/src/components/common/WeeklyReportDialog.tsx @@ -113,9 +113,17 @@ export const WeeklyReportDialog = ({ const [reportOption, setReportOption] = useState(user.weeklyReportType) const [email, setEmail] = useState(user.email || '') + const [emailError, setEmailError] = useState('') const handleOptionClick = (option: CodeClimbers.WeeklyReportType) => { setReportOption(option) + if (!user.id) return + updateUserSettings({ + user_id: user.id, + settings: { + weekly_report_type: option, + }, + }) } const handleSave = () => { @@ -135,7 +143,31 @@ export const WeeklyReportDialog = ({ setFeatureEnabled('weekly-report', reportOption) handleClose() } - const hasNotSelectedItems = reportOption === '' || !email + const validateEmail = (email: string) => { + const emailRegex = /^[^\s@]+@[^\s@]+\.[^\s@]+$/ + return emailRegex.test(email) + } + + const handleEmailChange = (e: React.ChangeEvent) => { + const newEmail = e.target.value + setEmail(newEmail) + if (newEmail && !validateEmail(newEmail)) { + setEmailError('Please enter a valid email address') + } else { + setEmailError('') + } + } + + let errorMessage = + 'Choose an option for a weekly email report of your coding stats.' + const emailInvalid = + (reportOption === 'standard' || reportOption === 'ai') && + (!email || !!emailError) + + if (emailInvalid) { + errorMessage = 'Enter an email to be sent your weekly report.' + } + const isInvalid = reportOption === '' || emailInvalid return ( - {hasNotSelectedItems ? ( + {isInvalid ? ( - - Choose an option for a weekly email report of your coding stats. - + {errorMessage} ) : ( setEmail(e.target.value)} + onChange={handleEmailChange} fullWidth + error={!!emailError} + helperText={emailError} inputProps={{ 'data-lpignore': 'true', 'data-form-type': 'other', @@ -225,6 +257,7 @@ export const WeeklyReportDialog = ({ onClick={handleSave} variant="contained" sx={{ ml: 0 }} + disabled={isInvalid} > Save From c0b587ba23ec40b8b0667c370ba2d33ac0fe04cb Mon Sep 17 00:00:00 2001 From: Paul Hovley Date: Fri, 1 Nov 2024 14:25:01 -0600 Subject: [PATCH 5/5] updating themes to make light mode better --- packages/app/src/components/ContributorsPage.tsx | 7 ++++++- packages/app/src/components/PerformanceReviewFax.tsx | 4 ++-- .../src/components/WeeklyReports/AiReportHeader.tsx | 4 ++-- packages/app/src/components/common/SimpleInfoCard.tsx | 5 ++++- packages/app/src/config/theme.ts | 10 +++------- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/packages/app/src/components/ContributorsPage.tsx b/packages/app/src/components/ContributorsPage.tsx index 9cc6f80..ae518fa 100644 --- a/packages/app/src/components/ContributorsPage.tsx +++ b/packages/app/src/components/ContributorsPage.tsx @@ -3,8 +3,10 @@ import { SimpleInfoCard, SimpleInfoCardProps } from './common/SimpleInfoCard' import Grid2 from '@mui/material/Unstable_Grid2' import { getContributors } from '../services/contributors.service' import { PlainHeader } from './common/PlainHeader' +import { useTheme } from '@mui/material/styles' export const ContributorsPage = () => { + const theme = useTheme() const contributors = getContributors() const contributorCardData: SimpleInfoCardProps[] = contributors.map( (contributor) => ({ @@ -25,7 +27,10 @@ export const ContributorsPage = () => { {contributorCardData.map((contributor) => ( - + ))} diff --git a/packages/app/src/components/PerformanceReviewFax.tsx b/packages/app/src/components/PerformanceReviewFax.tsx index cc145ab..ddf86f0 100644 --- a/packages/app/src/components/PerformanceReviewFax.tsx +++ b/packages/app/src/components/PerformanceReviewFax.tsx @@ -9,8 +9,8 @@ export const PerformanceReviewFax = ({ performanceReview }: Props) => { return ( theme.palette.background.fax, - color: (theme) => theme.palette.text.fax, + backgroundColor: (theme) => theme.palette.common.white, + color: (theme) => theme.palette.common.black, p: 6, }} > diff --git a/packages/app/src/components/WeeklyReports/AiReportHeader.tsx b/packages/app/src/components/WeeklyReports/AiReportHeader.tsx index f3eb614..dc2c75c 100644 --- a/packages/app/src/components/WeeklyReports/AiReportHeader.tsx +++ b/packages/app/src/components/WeeklyReports/AiReportHeader.tsx @@ -54,8 +54,8 @@ export const AiReportHeader = (props: { theme.palette.common.white, + color: (theme) => theme.palette.common.black, justifyContent: 'center', p: 4, }} diff --git a/packages/app/src/components/common/SimpleInfoCard.tsx b/packages/app/src/components/common/SimpleInfoCard.tsx index 043527d..ad1fbc1 100644 --- a/packages/app/src/components/common/SimpleInfoCard.tsx +++ b/packages/app/src/components/common/SimpleInfoCard.tsx @@ -10,6 +10,7 @@ export interface SimpleInfoCardProps { subTitle: string callout: string href?: string + backgroundColor?: string } export const SimpleInfoCard = ({ subjectUrl, @@ -17,6 +18,7 @@ export const SimpleInfoCard = ({ subTitle, callout, href, + backgroundColor, }: SimpleInfoCardProps) => { const isGithubUrl = subjectUrl?.includes('github.com') return ( @@ -37,7 +39,8 @@ export const SimpleInfoCard = ({ sx={{ border: '1px solid', borderColor: 'transparent', - backgroundColor: (theme) => theme.palette.background.paper_raised, + backgroundColor: (theme) => + backgroundColor || theme.palette.background.paper_raised, '&:hover': { borderColor: (theme) => theme.palette.primary.main, }, diff --git a/packages/app/src/config/theme.ts b/packages/app/src/config/theme.ts index 4edb669..4541ef8 100644 --- a/packages/app/src/config/theme.ts +++ b/packages/app/src/config/theme.ts @@ -25,12 +25,10 @@ declare module '@mui/material/styles' { paper_raised: string medium: string border: string - fax: string inverted: string } interface TypeText { actionDown?: string - fax?: string inverted?: string } interface TypographyVariants { @@ -146,7 +144,6 @@ const darkOptions: ThemeOptions = { default: '#1D1D1D', paper: BASE_THEME_GREYS[900], paper_raised: '#323232', - fax: '#FAF7F7', medium: '#3F3F3F', border: '#707070', inverted: '#F8F8F8', @@ -156,7 +153,6 @@ const darkOptions: ThemeOptions = { }, text: { actionDown: '#AEDBFE', - fax: '#222222', inverted: '#222222', }, graphColors: darkGraphColors, @@ -194,9 +190,9 @@ const lightOptions: ThemeOptions = { main: '#769E68', }, background: { - default: '#F5F5F5', - paper: '#F8F8F8', - paper_raised: '#E6E6E6', + default: '#F6F7F8', + paper: '#FFFFFF', + paper_raised: '#F6F7F8', inverted: '#323232', }, graphColors: lightGraphColors,