From b9e006a8248b15044c2d3c35e91b09a9fcf2f589 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Wed, 22 Jan 2025 12:30:39 +0300 Subject: [PATCH 1/9] Fix Promise Tracker UI --- apps/promisetracker/package.json | 1 + .../Hero/ProfileChart/ProfileDetails.js | 1 + apps/promisetracker/src/pages/_app.page.js | 3 +- apps/promisetracker/src/theme/index.js | 2 +- pnpm-lock.yaml | 732 ++++++------------ pnpm-workspace.yaml | 1 + 6 files changed, 252 insertions(+), 488 deletions(-) diff --git a/apps/promisetracker/package.json b/apps/promisetracker/package.json index e6264638c..bea88a107 100644 --- a/apps/promisetracker/package.json +++ b/apps/promisetracker/package.json @@ -31,6 +31,7 @@ "@mui/material": "catalog:mui-styles", "@mui/styles": "catalog:mui-styles", "@mui/utils": "catalog:mui-styles", + "@mui/private-theming": "catalog:mui-styles", "@sentry/nextjs": "catalog:", "clsx": "catalog:", "date-fns": "catalog:", diff --git a/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js b/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js index e3a90432d..c3a0597a2 100644 --- a/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js +++ b/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js @@ -170,6 +170,7 @@ function ProfileDetails({ disableFocusRipple aria-label="Share" size="small" + component="span" className={classes.iconButton} > Date: Thu, 23 Jan 2025 12:47:50 +0300 Subject: [PATCH 2/9] fix: use Readable stream for response body in gsheets function --- apps/promisetracker/src/lib/gsheets/index.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/promisetracker/src/lib/gsheets/index.js b/apps/promisetracker/src/lib/gsheets/index.js index 77f695646..53e0844b1 100644 --- a/apps/promisetracker/src/lib/gsheets/index.js +++ b/apps/promisetracker/src/lib/gsheets/index.js @@ -1,3 +1,5 @@ +import { Readable } from "stream"; + import { camelCase, merge } from "lodash"; import papa from "papaparse"; @@ -73,7 +75,8 @@ function gsheets(server) { const response = await fetch( `${SPREADSHEETS_URL}d/${spreadsheetId}/export?format=csv&gid=${sheetId}`, ); - return papaPromise(response.body, options); + const nodeStream = Readable.from(response.body); + return papaPromise(nodeStream, options); } async function fetchSitesNavigationsSheet() { From c6e165725f39cfcbd44812b0b1b31da65aa6490f Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Tue, 28 Jan 2025 11:46:16 +0300 Subject: [PATCH 3/9] fix: update dependencies and improve configuration settings --- apps/promisetracker/next.config.js | 2 +- .../Hero/ProfileChart/ProfileDetails.js | 1 - pnpm-lock.yaml | 125 +++++++----------- pnpm-workspace.yaml | 2 +- 4 files changed, 48 insertions(+), 82 deletions(-) diff --git a/apps/promisetracker/next.config.js b/apps/promisetracker/next.config.js index c9aabf113..8eb545f81 100644 --- a/apps/promisetracker/next.config.js +++ b/apps/promisetracker/next.config.js @@ -8,7 +8,7 @@ const outputFileTracingRoot = PROJECT_ROOT : undefined; const moduleExports = { - experimental: { + experimental: outputFileTracingRoot && { outputFileTracingRoot, }, i18n: { diff --git a/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js b/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js index c3a0597a2..e3a90432d 100644 --- a/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js +++ b/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js @@ -170,7 +170,6 @@ function ProfileDetails({ disableFocusRipple aria-label="Share" size="small" - component="span" className={classes.iconButton} > =17.0.2' tiny-warning: '>=1.0.3' - formik-mui@5.0.0-alpha.1: - resolution: {integrity: sha512-sHzrQwAWdVuKOdI0Xe1kCzXSjKXr50Jcot+szLc64SPw06J4DqwXN3GNxbhvfyEBGJBIL36e+cSSbm2i++tqqg==} + formik-mui@4.0.0: + resolution: {integrity: sha512-1IzYE83t/Hz05XMQuqs3i/yL7vteqCtjwJDXPBKtomzbif96OrTB2dFk26XEBJaB6ogmtKcxLogrtex3pbOp2A==} peerDependencies: - '@mui/material': '>5.6.0' + '@emotion/react': '>=11.4.1' + '@emotion/styled': '>=11.3.0' + '@mui/material': '>=5.0.0' formik: '>=2.2.9' react: '>=17.0.2' tiny-warning: '>=1.0.3' @@ -20873,34 +20875,34 @@ snapshots: '@webassemblyjs/ast': 1.12.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))))(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15)))': - dependencies: - webpack: 5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15)) - webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))) - '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1))(webpack@5.96.1)': dependencies: webpack: 5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))(webpack-cli@4.10.0) webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1) - '@webpack-cli/info@1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))))': + '@webpack-cli/configtest@1.2.0(webpack-cli@4.10.0)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15)))': dependencies: - envinfo: 7.14.0 + webpack: 5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15)) webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))) - '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': + '@webpack-cli/info@1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1))': dependencies: envinfo: 7.14.0 webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1) - '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))))': + '@webpack-cli/info@1.5.0(webpack-cli@4.10.0)': dependencies: + envinfo: 7.14.0 webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))) - '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': + '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1))': dependencies: webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1) + '@webpack-cli/serve@1.7.0(webpack-cli@4.10.0)': + dependencies: + webpack-cli: 4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))) + '@wry/caches@1.0.1': dependencies: tslib: 2.8.1 @@ -23103,7 +23105,7 @@ snapshots: dependencies: debug: 3.2.7 enhanced-resolve: 0.9.1 - eslint-plugin-import: 2.31.0(eslint-import-resolver-webpack@0.13.9)(eslint@9.18.0(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.18.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint-import-resolver-webpack@0.13.9)(eslint@9.18.0(jiti@1.21.6)) find-root: 1.1.0 hasown: 2.0.2 interpret: 1.4.0 @@ -23120,7 +23122,7 @@ snapshots: dependencies: debug: 3.2.7 enhanced-resolve: 0.9.1 - eslint-plugin-import: 2.31.0(eslint-import-resolver-webpack@0.13.9)(eslint@9.18.0(jiti@1.21.6)) + eslint-plugin-import: 2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.18.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint-import-resolver-webpack@0.13.9)(eslint@9.18.0(jiti@1.21.6)) find-root: 1.1.0 hasown: 2.0.2 interpret: 1.4.0 @@ -23162,7 +23164,7 @@ snapshots: eslint: 9.18.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-webpack@0.13.9)(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@1.21.6)) - eslint-import-resolver-webpack: 0.13.9(eslint-plugin-import@2.31.0)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))) + eslint-import-resolver-webpack: 0.13.9(eslint-plugin-import@2.31.0)(webpack@5.96.1) transitivePeerDependencies: - supports-color @@ -23185,7 +23187,7 @@ snapshots: eslint: 9.18.0(jiti@1.21.6) eslint-import-resolver-node: 0.3.9 eslint-import-resolver-typescript: 3.6.3(@typescript-eslint/parser@8.20.0(eslint@9.18.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-webpack@0.13.9)(eslint-plugin-import@2.31.0)(eslint@9.18.0(jiti@1.21.6)) - eslint-import-resolver-webpack: 0.13.9(eslint-plugin-import@2.31.0)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))) + eslint-import-resolver-webpack: 0.13.9(eslint-plugin-import@2.31.0)(webpack@5.96.1) transitivePeerDependencies: - supports-color @@ -23200,16 +23202,6 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-module-utils@2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.9)(eslint@9.18.0(jiti@1.21.6)): - dependencies: - debug: 3.2.7 - optionalDependencies: - eslint: 9.18.0(jiti@1.21.6) - eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-webpack: 0.13.9(eslint-plugin-import@2.31.0)(webpack@5.96.1) - transitivePeerDependencies: - - supports-color - eslint-plugin-import@2.31.0(@typescript-eslint/parser@8.12.2(eslint@9.18.0(jiti@1.21.6))(typescript@5.6.3))(eslint-import-resolver-typescript@3.6.3)(eslint-import-resolver-webpack@0.13.9)(eslint@9.18.0(jiti@1.21.6)): dependencies: '@rtsao/scc': 1.1.0 @@ -23324,33 +23316,6 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-plugin-import@2.31.0(eslint-import-resolver-webpack@0.13.9)(eslint@9.18.0(jiti@1.21.6)): - dependencies: - '@rtsao/scc': 1.1.0 - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 - debug: 3.2.7 - doctrine: 2.1.0 - eslint: 9.18.0(jiti@1.21.6) - eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.12.0(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-webpack@0.13.9)(eslint@9.18.0(jiti@1.21.6)) - hasown: 2.0.2 - is-core-module: 2.15.1 - is-glob: 4.0.3 - minimatch: 3.1.2 - object.fromentries: 2.0.8 - object.groupby: 1.0.3 - object.values: 1.2.0 - semver: 6.3.1 - string.prototype.trimend: 1.0.8 - tsconfig-paths: 3.15.0 - transitivePeerDependencies: - - eslint-import-resolver-typescript - - eslint-import-resolver-webpack - - supports-color - eslint-plugin-jest-dom@5.4.0(@testing-library/dom@10.4.0)(eslint@9.18.0(jiti@1.21.6)): dependencies: '@babel/runtime': 7.26.0 @@ -24040,8 +24005,10 @@ snapshots: react: 18.3.1 tiny-warning: 1.0.3 - formik-mui@5.0.0-alpha.1(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(formik@2.4.6(react@18.3.1))(react@18.3.1)(tiny-warning@1.0.3): + formik-mui@4.0.0(@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@mui/material@5.16.7(@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1))(formik@2.4.6(react@18.3.1))(react@18.3.1)(tiny-warning@1.0.3): dependencies: + '@emotion/react': 11.13.3(@types/react@18.3.12)(react@18.3.1) + '@emotion/styled': 11.13.0(@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1) '@mui/material': 5.16.7(@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1))(@emotion/styled@11.13.0(@emotion/react@11.13.3(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react@18.3.1))(@types/react@18.3.12)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) formik: 2.4.6(react@18.3.1) react: 18.3.1 @@ -30809,9 +30776,9 @@ snapshots: webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))): dependencies: '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))))(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))) - '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15)))) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15)))) + '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0)(webpack@5.96.1(@swc/core@1.8.0(@swc/helpers@0.5.15))) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0) colorette: 2.0.20 commander: 7.2.0 cross-spawn: 7.0.3 @@ -30828,8 +30795,8 @@ snapshots: dependencies: '@discoveryjs/json-ext': 0.5.7 '@webpack-cli/configtest': 1.2.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1))(webpack@5.96.1) - '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0) - '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0) + '@webpack-cli/info': 1.5.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1)) + '@webpack-cli/serve': 1.7.0(webpack-cli@4.10.0(webpack-bundle-analyzer@4.10.2)(webpack@5.96.1)) colorette: 2.0.20 commander: 7.2.0 cross-spawn: 7.0.3 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 25a1f2d72..9faa412f6 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -119,7 +119,7 @@ catalog: fast-equals: ^5.0.1 form-data: ^4.0.0 formik: ^2.4.6 - formik-mui: ^5.0.0-alpha.1 + formik-mui: ^4.0.0 formik-mui-lab: ^1.0.0 googleapis: ^133.0.0 graphql: ^15.9.0 From 3f1947afaee88286aa91dc7c1323a3f0ae3db744 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Tue, 28 Jan 2025 17:24:24 +0300 Subject: [PATCH 4/9] feat: add Promise Tracker service to Docker setup --- Dockerfile | 76 ++++++++++++++++++++++++++++++++++++++++++++++ Makefile | 3 ++ docker-compose.yml | 16 ++++++++++ 3 files changed, 95 insertions(+) diff --git a/Dockerfile b/Dockerfile index de9deae4f..ad0b60e9c 100644 --- a/Dockerfile +++ b/Dockerfile @@ -913,3 +913,79 @@ USER nextjs # server.js is created by next build from the standalone output # https://nextjs.org/docs/pages/api-reference/next-config-js/output CMD ["node", "apps/vpnmanager/server.js"] + +# ============================================================================ +# Promise Tracker +# ============================================================================ + +# +# promisetracker-desp: image with all pesayetu dependencies +# ----------------------------------------------------- + +FROM base-deps AS promisetracker-deps + +COPY apps/promisetracker/package.json ./apps/promisetracker/package.json + +# Use virtual store: https://pnpm.io/cli/fetch#usage-scenario +RUN pnpm --filter "./apps/promisetracker" install --offline --frozen-lockfile + +# +# promisetracker-builder: image that uses deps to build shippable output +# ------------------------------------------------------------------ + +FROM base-builder AS promisetracker-builder + +ARG NEXT_TELEMETRY_DISABLED \ + # Next.js / Payload (build time) + PORT \ + # Next.js (runtime) + NEXT_PUBLIC_APP_NAME="Promise Tracker" \ + NEXT_PUBLIC_APP_URL \ + NEXT_PUBLIC_SENTRY_DSN \ + NEXT_PUBLIC_SEO_DISABLED \ + NEXT_PUBLIC_GOOGLE_ANALYTICS \ + # Sentry (build time) + SENTRY_AUTH_TOKEN \ + SENTRY_ENVIRONMENT \ + SENTRY_ORG \ + SENTRY_PROJECT + +# This is in app-builder instead of base-builder just incase app-deps adds deps +COPY --from=promisetracker-deps /workspace/node_modules ./node_modules + +COPY --from=promisetracker-deps /workspace/apps/promisetracker/node_modules ./apps/promisetracker/node_modules + +COPY apps/promisetracker ./apps/promisetracker + +RUN --mount=type=secret,id=sentry_auth_token,env=SENTRY_AUTH_TOKEN \ + pnpm --filter "./apps/promisetracker" build + +# +# promisetracker-runner: final deployable image +# ----------------------------------------- + +FROM base-runner AS promisetracker-runner + +ARG API_SECRET_KEY +RUN set -ex \ + # Create nextjs cache dir w/ correct permissions + && mkdir -p ./apps/promisetracker/.next \ + && chown nextjs:nodejs ./apps/promisetracker/.next + +# PNPM +# symlink some dependencies +COPY --from=promisetracker-builder --chown=nextjs:nodejs /workspace/node_modules ./node_modules + +# Next.js +# Public assets +COPY --from=promisetracker-builder --chown=nextjs:nodejs /workspace/apps/promisetracker/public ./apps/promisetracker/public + +# Automatically leverage output traces to reduce image size +# https://nextjs.org/docs/advanced-features/output-file-tracing +COPY --from=promisetracker-builder --chown=nextjs:nodejs /workspace/apps/promisetracker/.next/standalone ./apps/promisetracker +COPY --from=promisetracker-builder --chown=nextjs:nodejs /workspace/apps/promisetracker/.next/static ./apps/promisetracker/.next/static +USER nextjs + +# server.js is created by next build from the standalone output +# https://nextjs.org/docs/pages/api-reference/next-config-js/output +CMD ["node", "apps/promisetracker/server.js"] \ No newline at end of file diff --git a/Makefile b/Makefile index ecdbd18f5..0c4f1b364 100644 --- a/Makefile +++ b/Makefile @@ -39,3 +39,6 @@ techlabblog: vpnmanager: $(COMPOSE_BUILD_ENV) $(COMPOSE) --env-file apps/vpnmanager/.env.local up vpnmanager --build +promisetracker: + $(COMPOSE_BUILD_ENV) $(COMPOSE) --env-file apps/promisetracker/.env.local up promisetracker --build + diff --git a/docker-compose.yml b/docker-compose.yml index ec3bc9ee7..f58bcd730 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -206,6 +206,22 @@ services: - ${VPN_MANAGER_PORT:-3000}:3000 volumes: - ./db_data:/apps/vpnmanager/data + + promisetracker: + build: + secrets: + - sentry_auth_token + context: . + target: promisetracker-runner + args: + - SENTRY_ORG + - SENTRY_PROJECT + - SENTRY_DSN + - API_SECRET_KEY + environment: + NODE_ENV: ${NODE_ENV:-production} + ports: + - ${PROMISE_TRACKER_PORT:-3000}:3000 secrets: sentry_auth_token: environment: SENTRY_AUTH_TOKEN From a0d83f8b81f8a15eeaa971c8b39d288feb19bbd0 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Tue, 28 Jan 2025 17:41:40 +0300 Subject: [PATCH 5/9] fix: handle empty resources and improve FAQ data mapping --- apps/promisetracker/src/lib/wp/index.js | 18 ++++++++++-------- apps/promisetracker/src/pages/faq.page.js | 7 ++++--- 2 files changed, 14 insertions(+), 11 deletions(-) diff --git a/apps/promisetracker/src/lib/wp/index.js b/apps/promisetracker/src/lib/wp/index.js index 782e981c5..96e383fb3 100644 --- a/apps/promisetracker/src/lib/wp/index.js +++ b/apps/promisetracker/src/lib/wp/index.js @@ -181,7 +181,7 @@ function wp(site) { }); const resource = resources[0]; if (isEmpty(resource)) { - return undefined; + return null; } /* eslint no-underscore-dangle: off */ @@ -349,13 +349,15 @@ function wp(site) { pageWithPosts = page; } const posts = - pageWithPosts?.posts?.map((post) => ({ - image: post.thumbnail_image, - description: post.content.replace(/(<([^>]+)>)/gi, ""), - date: formatDate(post.date), - slug: post.slug, - title: post.title, - })) || null; + pageWithPosts?.posts + ?.filter((post) => !!post) + ?.map((post) => ({ + image: post.thumbnail_image, + description: post.content.replace(/(<([^>]+)>)/gi, ""), + date: formatDate(post.date), + slug: post.slug, + title: post.title, + })) || null; return posts; })(); }, diff --git a/apps/promisetracker/src/pages/faq.page.js b/apps/promisetracker/src/pages/faq.page.js index ed162e337..b7e8cbce4 100644 --- a/apps/promisetracker/src/pages/faq.page.js +++ b/apps/promisetracker/src/pages/faq.page.js @@ -85,9 +85,10 @@ export async function getStaticProps({ locale }) { const backend = backendFn(); const site = await backend.sites().current; const page = await wp().pages({ slug: "faq", locale }).first; - const faqs = page.faqs - .reduce((arr, e) => arr.concat(e.questions_answers), []) - .map((faq) => ({ title: faq.question, summary: faq.answer })); + const faqs = + page?.faqs + ?.reduce((arr, e) => arr.concat(e.questions_answers), []) + ?.map((faq) => ({ title: faq.question, summary: faq.answer })) ?? []; const languageAlternates = _.languageAlternates("/faq"); return { From d7fcc6a963d72df5f71b2057d0de953934c0adfa Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Thu, 30 Jan 2025 13:23:27 +0300 Subject: [PATCH 6/9] - Removed default props for promisetracker ui - Added instrumentation.js for promisetracker. - Fixed a few styling issues with promisetracker --- apps/promisetracker/instrumentation.js | 7 ++ .../src/components/AboutPage/Partners.js | 4 -- .../components/AboutPage/PromiseCriteria.js | 5 -- .../src/components/AboutPage/index.js | 13 ---- .../src/components/ActNow/index.js | 6 -- .../src/components/ActNowCard/BaseContent.js | 6 -- .../src/components/ActNowCard/ConnectCard.js | 12 +--- .../src/components/ActNowCard/FollowCard.js | 12 +--- .../src/components/ActNowCard/PetitionCard.js | 20 ++---- .../src/components/ActNowCard/ShareCard.js | 11 +--- .../src/components/ActNowCard/index.js | 18 ++---- .../src/components/ActNowPage/LoggedIn.js | 8 --- .../src/components/ActNowPage/index.js | 9 --- .../src/components/ActNowSummary/index.js | 5 -- .../src/components/ActionDialog/index.js | 9 --- .../src/components/Article/PublicationInfo.js | 7 -- .../src/components/Article/Share.js | 51 +-------------- .../src/components/Article/index.js | 64 +++++++++---------- .../src/components/ArticleCard/index.js | 6 -- .../src/components/ContentPage/Section.js | 8 --- .../src/components/ContentPage/index.js | 15 +---- .../src/components/CtAButton/index.js | 4 -- .../src/components/DataSource/index.js | 6 -- .../src/components/Dataset/index.js | 4 -- .../src/components/ErrorPage/index.js | 9 --- .../src/components/FAQ/Accordion.js | 11 ++-- .../src/components/FAQ/index.js | 4 -- .../src/components/FactCheckCard/index.js | 6 -- .../src/components/Footer/Copyright.js | 12 ++-- .../src/components/Footer/index.js | 8 --- .../src/components/Form/Input.js | 7 +- .../src/components/Form/Label.js | 7 +- .../src/components/FormDialog/Form.js | 24 ------- .../components/FormDialog/FormTextField.js | 8 --- .../src/components/FormDialog/UpdateDialog.js | 17 +---- .../src/components/FormDialog/UpdateForm.js | 23 +------ .../src/components/FormDialog/index.js | 9 --- .../promisetracker/src/components/H1/index.js | 4 -- .../Hero/ProfileChart/DesktopChart/index.js | 4 -- .../ProfileChart/DesktopInfoStatusPopover.js | 9 --- .../MobileChart/MobileSvgChart.js | 2 +- .../ProfileChart/MobileChart/ProgressChart.js | 2 +- .../Hero/ProfileChart/MobileChart/index.js | 4 -- .../ProfileChart/MobileInfoStatusPopover.js | 5 -- .../Hero/ProfileChart/ProfileDetails.js | 8 +-- .../Hero/ProfileChart/RectChart/index.js | 24 ++----- .../src/components/Hero/index.js | 7 -- .../IndividualRegistrationDialog/index.js | 10 +-- .../IndividualRegistrationForm/Form.js | 9 --- .../IndividualRegistrationForm/index.js | 9 +-- .../src/components/KeyPromises/KeyPromise.js | 9 --- .../src/components/KeyPromises/index.js | 7 -- .../src/components/LatestArticles/index.js | 7 -- .../src/components/LatestPromises/index.js | 7 -- .../src/components/LoginForm/Form.js | 9 --- .../src/components/LoginForm/index.js | 7 +- .../src/components/LoginPage/index.js | 4 -- .../DesktopNavigation/MenuButton.js | 7 -- .../DesktopNavigation/NavigationButton.js | 15 +---- .../DesktopNavigation/PageNavigation.js | 5 -- .../Navigation/DesktopNavigation/index.js | 4 -- .../MobileNavigation/NavigationList.js | 5 -- .../Navigation/MobileNavigation/index.js | 4 -- .../src/components/Navigation/index.js | 4 -- .../src/components/Newsletter/index.js | 14 +--- .../src/components/Page/Base.js | 6 -- .../src/components/Page/index.js | 4 -- .../src/components/Partners/index.js | 8 +-- .../src/components/Petition/index.js | 4 -- .../src/components/PetitionCard/index.js | 12 ---- .../src/components/Petitions/index.js | 4 -- .../src/components/PickPromise/index.js | 9 --- .../src/components/PostCard/index.js | 9 --- .../src/components/PostCardGrid/index.js | 8 --- .../components/Promise/AuthorAtribution.js | 17 ++--- .../src/components/Promise/Narative.js | 6 -- .../components/Promise/RelatedFactChecks.js | 5 -- .../src/components/Promise/index.js | 15 +---- .../src/components/PromiseCard/index.js | 6 -- .../src/components/PromiseChart/index.js | 6 -- .../src/components/PromiseStatus/index.js | 6 -- .../src/components/PromiseStatusList/index.js | 4 -- .../PromiseTimeline/PromiseStatus.js | 6 +- .../PromiseTimeline/TimelineEvent.js | 17 ++--- .../src/components/PromiseTimeline/index.js | 9 +-- .../Promises/Filter/FilterButton.js | 7 -- .../src/components/Promises/Filter/index.js | 8 --- .../src/components/Promises/Sort.js | 4 -- .../src/components/Promises/index.js | 14 +--- .../components/RegistrationDialog/index.js | 8 --- apps/promisetracker/src/components/Search.js | 14 ++-- .../src/components/Share/index.js | 8 --- .../src/components/SignPetition/index.js | 5 -- .../src/components/SuggestPromise/index.js | 2 - .../src/components/Tabs/TabPanel.js | 7 -- .../src/components/Tabs/index.js | 6 -- apps/promisetracker/src/pages/_app.page.js | 7 -- .../pages/analysis/articles/[slug].page.js | 10 --- .../src/pages/analysis/articles/index.page.js | 10 --- .../src/pages/analysis/fact-checks.page.js | 10 --- .../pages/analysis/petitions/[slug].page.js | 11 ---- .../pages/analysis/petitions/index.page.js | 10 --- .../src/pages/analysis/resources.page.js | 7 -- apps/promisetracker/src/pages/faq.page.js | 8 --- apps/promisetracker/src/pages/index.page.js | 16 ----- apps/promisetracker/src/pages/join.page.js | 8 --- apps/promisetracker/src/pages/login.page.js | 4 -- .../src/pages/promises/[...slug].page.js | 10 --- .../src/pages/promises/index.page.js | 13 ---- .../src/pages/resources.page.js | 8 --- .../src/pages/subscribe.page.js | 8 --- apps/promisetracker/turbo.json | 9 +++ 112 files changed, 123 insertions(+), 930 deletions(-) create mode 100644 apps/promisetracker/instrumentation.js create mode 100644 apps/promisetracker/turbo.json diff --git a/apps/promisetracker/instrumentation.js b/apps/promisetracker/instrumentation.js new file mode 100644 index 000000000..2779f0be2 --- /dev/null +++ b/apps/promisetracker/instrumentation.js @@ -0,0 +1,7 @@ +// Next.js requires this to be exported as register https://nextjs.org/docs/app/building-your-application/optimizing/instrumentation +// eslint-disable-next-line import/prefer-default-export +export async function register() { + if (process.env.NEXT_RUNTIME === "nodejs") { + await import("./sentry.server.config"); + } +} diff --git a/apps/promisetracker/src/components/AboutPage/Partners.js b/apps/promisetracker/src/components/AboutPage/Partners.js index c044e1b84..e5d6e417b 100644 --- a/apps/promisetracker/src/components/AboutPage/Partners.js +++ b/apps/promisetracker/src/components/AboutPage/Partners.js @@ -59,8 +59,4 @@ Partners.propTypes = { items: PropTypes.arrayOf(PropTypes.shape({})), }; -Partners.defaultProps = { - items: undefined, -}; - export default Partners; diff --git a/apps/promisetracker/src/components/AboutPage/PromiseCriteria.js b/apps/promisetracker/src/components/AboutPage/PromiseCriteria.js index 0fd1aaff8..8f0cd9cda 100644 --- a/apps/promisetracker/src/components/AboutPage/PromiseCriteria.js +++ b/apps/promisetracker/src/components/AboutPage/PromiseCriteria.js @@ -36,9 +36,4 @@ PromiseCriteria.propTypes = { items: PropTypes.arrayOf(PropTypes.shape({})), }; -PromiseCriteria.defaultProps = { - items: undefined, - title: undefined, -}; - export default PromiseCriteria; diff --git a/apps/promisetracker/src/components/AboutPage/index.js b/apps/promisetracker/src/components/AboutPage/index.js index 968bc08cb..48b7d4f39 100644 --- a/apps/promisetracker/src/components/AboutPage/index.js +++ b/apps/promisetracker/src/components/AboutPage/index.js @@ -127,17 +127,4 @@ AboutPage.propTypes = { title: PropTypes.string, }; -AboutPage.defaultProps = { - actNow: undefined, - actNowEnabled: undefined, - content: undefined, - criteria: undefined, - description: undefined, - featuredImage: undefined, - footer: undefined, - navigation: undefined, - partners: undefined, - title: undefined, -}; - export default AboutPage; diff --git a/apps/promisetracker/src/components/ActNow/index.js b/apps/promisetracker/src/components/ActNow/index.js index 6b98083fa..94eac6241 100644 --- a/apps/promisetracker/src/components/ActNow/index.js +++ b/apps/promisetracker/src/components/ActNow/index.js @@ -161,10 +161,4 @@ ActNow.propTypes = { title: PropTypes.string, }; -ActNow.defaultProps = { - actionLabel: undefined, - description: undefined, - title: undefined, -}; - export default ActNow; diff --git a/apps/promisetracker/src/components/ActNowCard/BaseContent.js b/apps/promisetracker/src/components/ActNowCard/BaseContent.js index 7f8188587..9533ae006 100644 --- a/apps/promisetracker/src/components/ActNowCard/BaseContent.js +++ b/apps/promisetracker/src/components/ActNowCard/BaseContent.js @@ -43,10 +43,4 @@ BaseCard.propTypes = { children: PropTypes.node, }; -BaseCard.defaultProps = { - onCloseCard: undefined, - description: undefined, - children: undefined, -}; - export default BaseCard; diff --git a/apps/promisetracker/src/components/ActNowCard/ConnectCard.js b/apps/promisetracker/src/components/ActNowCard/ConnectCard.js index 69c9fc6eb..3bb026be8 100644 --- a/apps/promisetracker/src/components/ActNowCard/ConnectCard.js +++ b/apps/promisetracker/src/components/ActNowCard/ConnectCard.js @@ -7,7 +7,7 @@ import useStyles from "./useStyles"; import CtAButton from "@/promisetracker/components/CtAButton"; -function ConnectCard({ closeCard, promiseActNow }) { +function ConnectCard({ closeCard, promiseActNow = { connect: {} } }) { const { connect: { connect_title: connectTitle, @@ -49,14 +49,4 @@ ConnectCard.propTypes = { }), }; -ConnectCard.defaultProps = { - promiseActNow: PropTypes.shape({ - connect: { - connectTitle: null, - connectDescription: null, - connectButton: null, - }, - }), -}; - export default ConnectCard; diff --git a/apps/promisetracker/src/components/ActNowCard/FollowCard.js b/apps/promisetracker/src/components/ActNowCard/FollowCard.js index a1e4932c9..72a12e361 100644 --- a/apps/promisetracker/src/components/ActNowCard/FollowCard.js +++ b/apps/promisetracker/src/components/ActNowCard/FollowCard.js @@ -7,7 +7,7 @@ import useStyles from "./useStyles"; import CtAButton from "@/promisetracker/components/CtAButton"; -function FollowCard({ closeCard, promiseActNow }) { +function FollowCard({ closeCard, promiseActNow = { follow: {} } }) { const classes = useStyles(); const { @@ -58,14 +58,4 @@ FollowCard.propTypes = { }), }; -FollowCard.defaultProps = { - promiseActNow: PropTypes.shape({ - follow: { - followTitle: null, - followDescription: null, - followButton: null, - }, - }), -}; - export default FollowCard; diff --git a/apps/promisetracker/src/components/ActNowCard/PetitionCard.js b/apps/promisetracker/src/components/ActNowCard/PetitionCard.js index b52fc9d82..2818b8cf8 100644 --- a/apps/promisetracker/src/components/ActNowCard/PetitionCard.js +++ b/apps/promisetracker/src/components/ActNowCard/PetitionCard.js @@ -2,7 +2,7 @@ import { Grid, Snackbar } from "@mui/material"; import Alert from "@mui/material/Alert"; import Router from "next/router"; import { useSession } from "next-auth/react"; -import PropTypes, { string } from "prop-types"; +import PropTypes from "prop-types"; import React, { useState } from "react"; import BaseContent from "./BaseContent"; @@ -11,7 +11,11 @@ import useStyles from "./useStyles"; import CtAButton from "@/promisetracker/components/CtAButton"; import FormDialog from "@/promisetracker/components/FormDialog"; -function PetitionCard({ closeCard, promiseActNow, ...props }) { +function PetitionCard({ + closeCard, + promiseActNow = { petition: { petitionTitle: "", petitionDescription: "" } }, + ...props +}) { const { petition: { petition_title: petitionTitle, @@ -104,16 +108,4 @@ PetitionCard.propTypes = { }), }; -PetitionCard.defaultProps = { - petitionJoin: null, - petitionStart: null, - petitionTitle: string, - promiseActNow: PropTypes.shape({ - petition: { - petitionTitle: null, - petitionDescription: null, - }, - }), -}; - export default PetitionCard; diff --git a/apps/promisetracker/src/components/ActNowCard/ShareCard.js b/apps/promisetracker/src/components/ActNowCard/ShareCard.js index 443736a40..8fa948f32 100644 --- a/apps/promisetracker/src/components/ActNowCard/ShareCard.js +++ b/apps/promisetracker/src/components/ActNowCard/ShareCard.js @@ -10,7 +10,7 @@ import React from "react"; import BaseContent from "./BaseContent"; import useStyles from "./useStyles"; -function ShareCard({ closeCard, promiseActNow }) { +function ShareCard({ closeCard, promiseActNow = { share: {} } }) { const classes = useStyles(); const { @@ -58,13 +58,4 @@ ShareCard.propTypes = { }), }; -ShareCard.defaultProps = { - promiseActNow: PropTypes.shape({ - share: { - shareTitle: null, - shareDescription: null, - }, - }), -}; - export default ShareCard; diff --git a/apps/promisetracker/src/components/ActNowCard/index.js b/apps/promisetracker/src/components/ActNowCard/index.js index 40a026816..ec81434f5 100644 --- a/apps/promisetracker/src/components/ActNowCard/index.js +++ b/apps/promisetracker/src/components/ActNowCard/index.js @@ -17,7 +17,10 @@ import useStyles from "./useStyles"; import UpdateFormDialog from "@/promisetracker/components/FormDialog/UpdateDialog"; -function ActNowButtonCard({ promise_act_now: promiseActNow, ...props }) { +function ActNowButtonCard({ + promise_act_now: promiseActNow = { act_now: {} }, + ...props +}) { const { act_now: { act_now_title: actNowTitle, @@ -162,17 +165,4 @@ ActNowButtonCard.propTypes = { }), }; -ActNowButtonCard.defaultProps = { - promise_act_now: PropTypes.shape({ - act_now: { - act_now_title: null, - connect_label: null, - petition_label: null, - follow_label: null, - update_label: null, - share_label: null, - }, - }), -}; - export default ActNowButtonCard; diff --git a/apps/promisetracker/src/components/ActNowPage/LoggedIn.js b/apps/promisetracker/src/components/ActNowPage/LoggedIn.js index a0e32ba00..1fc720674 100644 --- a/apps/promisetracker/src/components/ActNowPage/LoggedIn.js +++ b/apps/promisetracker/src/components/ActNowPage/LoggedIn.js @@ -104,12 +104,4 @@ ActNowLoggedInPage.propTypes = { title: PropTypes.string, }; -ActNowLoggedInPage.defaultProps = { - footer: undefined, - navigation: undefined, - ownedPetitions: undefined, - signedPetitions: undefined, - title: undefined, -}; - export default ActNowLoggedInPage; diff --git a/apps/promisetracker/src/components/ActNowPage/index.js b/apps/promisetracker/src/components/ActNowPage/index.js index 8e497eeb2..69ff54369 100644 --- a/apps/promisetracker/src/components/ActNowPage/index.js +++ b/apps/promisetracker/src/components/ActNowPage/index.js @@ -232,13 +232,4 @@ ActNow.propTypes = { title: PropTypes.string, }; -ActNow.defaultProps = { - actNow: null, - description: null, - footer: null, - navigation: null, - petitions: null, - title: null, -}; - export default ActNow; diff --git a/apps/promisetracker/src/components/ActNowSummary/index.js b/apps/promisetracker/src/components/ActNowSummary/index.js index ecca56f37..a53e77956 100644 --- a/apps/promisetracker/src/components/ActNowSummary/index.js +++ b/apps/promisetracker/src/components/ActNowSummary/index.js @@ -62,9 +62,4 @@ ActNowSummary.propTypes = { }), }; -ActNowSummary.defaultProps = { - summary: undefined, - titles: undefined, -}; - export default ActNowSummary; diff --git a/apps/promisetracker/src/components/ActionDialog/index.js b/apps/promisetracker/src/components/ActionDialog/index.js index dc22d82b7..c034f39a4 100644 --- a/apps/promisetracker/src/components/ActionDialog/index.js +++ b/apps/promisetracker/src/components/ActionDialog/index.js @@ -89,13 +89,4 @@ ActionDialog.propTypes = { title: PropTypes.string, }; -ActionDialog.defaultProps = { - children: undefined, - description: undefined, - name: undefined, - onClose: undefined, - open: undefined, - title: undefined, -}; - export default ActionDialog; diff --git a/apps/promisetracker/src/components/Article/PublicationInfo.js b/apps/promisetracker/src/components/Article/PublicationInfo.js index 3e2d33823..b7886f057 100644 --- a/apps/promisetracker/src/components/Article/PublicationInfo.js +++ b/apps/promisetracker/src/components/Article/PublicationInfo.js @@ -55,11 +55,4 @@ PublicationInfo.propTypes = { readTime: PropTypes.string, }; -PublicationInfo.defaultProps = { - classes: undefined, - author: undefined, - date: undefined, - readTime: undefined, -}; - export default PublicationInfo; diff --git a/apps/promisetracker/src/components/Article/Share.js b/apps/promisetracker/src/components/Article/Share.js index 4916f6a02..4076fa5e0 100644 --- a/apps/promisetracker/src/components/Article/Share.js +++ b/apps/promisetracker/src/components/Article/Share.js @@ -4,13 +4,6 @@ import Image from "next/image"; import PropTypes from "prop-types"; import React from "react"; -import download from "@/promisetracker/assets/share-download.svg?url"; -import embed from "@/promisetracker/assets/share-embed.svg?url"; -import facebook from "@/promisetracker/assets/share-facebook.svg?url"; -import instagram from "@/promisetracker/assets/share-instagram.svg?url"; -import sharelink from "@/promisetracker/assets/share-link.svg?url"; -import twitter from "@/promisetracker/assets/share-twitter.svg?url"; - const useStyles = makeStyles(({ palette }) => ({ root: { alignItems: "center", @@ -32,7 +25,7 @@ const useStyles = makeStyles(({ palette }) => ({ }, }, })); -function Share({ platforms, ...props }) { +function Share({ platforms = [], ...props }) { const classes = useStyles(props); return (
@@ -61,46 +54,4 @@ Share.propTypes = { platforms: PropTypes.arrayOf(PropTypes.shape({})), }; -Share.defaultProps = { - classes: undefined, - platforms: [ - { - image: { - url: sharelink, - alt: "", - }, - }, - { - image: { - url: embed, - alt: "", - }, - }, - { - image: { - url: download, - alt: "", - }, - }, - { - image: { - url: instagram, - alt: "", - }, - }, - { - image: { - url: twitter, - alt: "", - }, - }, - { - image: { - url: facebook, - alt: "", - }, - }, - ], -}; - export default Share; diff --git a/apps/promisetracker/src/components/Article/index.js b/apps/promisetracker/src/components/Article/index.js index 54da9f9a5..1b76aa980 100644 --- a/apps/promisetracker/src/components/Article/index.js +++ b/apps/promisetracker/src/components/Article/index.js @@ -13,12 +13,40 @@ import facebook from "@/promisetracker/assets/share-facebook.svg?url"; import instagram from "@/promisetracker/assets/share-instagram.svg?url"; import twitter from "@/promisetracker/assets/share-twitter.svg?url"; +const defaultProps = { + breadcrumb: "Article", + shareLabel: "Share:", + socialMedia: [ + { + url: "https://github.com/codeforafrica", + image: { + url: instagram, + alt: "", + }, + }, + + { + url: "https://twitter.com/Code4Africa?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5EShare", + image: { + url: twitter, + alt: "", + }, + }, + { + url: "https://www.facebook.com/CodeForAfrica/", + image: { + url: facebook, + alt: "", + }, + }, + ], +}; function Article({ article, - breadcrumb, - socialMedia, + breadcrumb = defaultProps.breadcrumb, + socialMedia = defaultProps.socialMedia, classes: classesProp, - shareLabel, + shareLabel = defaultProps.shareLabel, }) { const classes = useStyles({ image: article.image, classes: classesProp }); return ( @@ -113,34 +141,4 @@ Article.propTypes = { socialMedia: PropTypes.arrayOf(PropTypes.shape({})), }; -Article.defaultProps = { - breadcrumb: "Article", - classes: undefined, - shareLabel: "Share:", - socialMedia: [ - { - url: "https://github.com/codeforafrica", - image: { - url: instagram, - alt: "", - }, - }, - - { - url: "https://twitter.com/Code4Africa?ref_src=twsrc%5Egoogle%7Ctwcamp%5Eserp%7Ctwgr%5EShare", - image: { - url: twitter, - alt: "", - }, - }, - { - url: "https://www.facebook.com/CodeForAfrica/", - image: { - url: facebook, - alt: "", - }, - }, - ], -}; - export default Article; diff --git a/apps/promisetracker/src/components/ArticleCard/index.js b/apps/promisetracker/src/components/ArticleCard/index.js index 8279d8762..65fedf6e9 100644 --- a/apps/promisetracker/src/components/ArticleCard/index.js +++ b/apps/promisetracker/src/components/ArticleCard/index.js @@ -48,10 +48,4 @@ ArticleCard.propTypes = { href: PropTypes.string, }; -ArticleCard.defaultProps = { - children: undefined, - href: undefined, - classes: undefined, -}; - export default ArticleCard; diff --git a/apps/promisetracker/src/components/ContentPage/Section.js b/apps/promisetracker/src/components/ContentPage/Section.js index 20f0a49c2..978c0ed1a 100644 --- a/apps/promisetracker/src/components/ContentPage/Section.js +++ b/apps/promisetracker/src/components/ContentPage/Section.js @@ -64,12 +64,4 @@ ContentSection.propTypes = { titleProps: PropTypes.shape({}), }; -ContentSection.defaultProps = { - aside: undefined, - asideProps: undefined, - contentProps: undefined, - title: undefined, - titleProps: undefined, -}; - export default ContentSection; diff --git a/apps/promisetracker/src/components/ContentPage/index.js b/apps/promisetracker/src/components/ContentPage/index.js index 5594fa19a..a552c0461 100644 --- a/apps/promisetracker/src/components/ContentPage/index.js +++ b/apps/promisetracker/src/components/ContentPage/index.js @@ -23,7 +23,7 @@ function ContentPage({ contentProps, footer, navigation, - showTitle, + showTitle = true, slug, title, ...props @@ -77,17 +77,4 @@ ContentPage.propTypes = { title: PropTypes.string, }; -ContentPage.defaultProps = { - aside: undefined, - asideProps: undefined, - children: undefined, - classes: undefined, - contentProps: undefined, - footer: undefined, - navigation: undefined, - showTitle: true, - slug: undefined, - title: undefined, -}; - export default ContentPage; diff --git a/apps/promisetracker/src/components/CtAButton/index.js b/apps/promisetracker/src/components/CtAButton/index.js index 391536dc2..f5f19bccf 100644 --- a/apps/promisetracker/src/components/CtAButton/index.js +++ b/apps/promisetracker/src/components/CtAButton/index.js @@ -21,8 +21,4 @@ CtAButton.propTypes = { }), }; -CtAButton.defaultProps = { - classes: undefined, -}; - export default CtAButton; diff --git a/apps/promisetracker/src/components/DataSource/index.js b/apps/promisetracker/src/components/DataSource/index.js index cfaf33f52..2b9e52180 100644 --- a/apps/promisetracker/src/components/DataSource/index.js +++ b/apps/promisetracker/src/components/DataSource/index.js @@ -67,10 +67,4 @@ DataSource.propTypes = { }), }; -DataSource.defaultProps = { - classes: undefined, - label: undefined, - promise: undefined, -}; - export default DataSource; diff --git a/apps/promisetracker/src/components/Dataset/index.js b/apps/promisetracker/src/components/Dataset/index.js index fdc8eba21..628faaf42 100644 --- a/apps/promisetracker/src/components/Dataset/index.js +++ b/apps/promisetracker/src/components/Dataset/index.js @@ -187,8 +187,4 @@ Dataset.propTypes = { total_res_downloads: PropTypes.number, }), }; - -Dataset.defaultProps = { - dataset: undefined, -}; export default Dataset; diff --git a/apps/promisetracker/src/components/ErrorPage/index.js b/apps/promisetracker/src/components/ErrorPage/index.js index 9ef6847aa..aa9ccca40 100644 --- a/apps/promisetracker/src/components/ErrorPage/index.js +++ b/apps/promisetracker/src/components/ErrorPage/index.js @@ -80,13 +80,4 @@ ErrorPage.propTypes = { title: PropTypes.string, }; -ErrorPage.defaultProps = { - articles: undefined, - description: undefined, - featuredImage: undefined, - footer: undefined, - navigation: undefined, - title: undefined, -}; - export default ErrorPage; diff --git a/apps/promisetracker/src/components/FAQ/Accordion.js b/apps/promisetracker/src/components/FAQ/Accordion.js index 432e76f62..45345484b 100644 --- a/apps/promisetracker/src/components/FAQ/Accordion.js +++ b/apps/promisetracker/src/components/FAQ/Accordion.js @@ -12,7 +12,12 @@ import useStyles from "./useStyles"; import MinusIcon from "@/promisetracker/icons/Minus"; import PlusIcon from "@/promisetracker/icons/Plus"; -function AccordionPanel({ expanded: expandedProp, summary, title, ...props }) { +function AccordionPanel({ + expanded: expandedProp = false, + summary, + title, + ...props +}) { const classes = useStyles(props); const [expanded, setExpanded] = useState(expandedProp); const handleChange = () => { @@ -48,8 +53,4 @@ AccordionPanel.propTypes = { title: PropTypes.string.isRequired, }; -AccordionPanel.defaultProps = { - expanded: false, -}; - export default AccordionPanel; diff --git a/apps/promisetracker/src/components/FAQ/index.js b/apps/promisetracker/src/components/FAQ/index.js index fd2f34175..063fd42d4 100644 --- a/apps/promisetracker/src/components/FAQ/index.js +++ b/apps/promisetracker/src/components/FAQ/index.js @@ -25,8 +25,4 @@ FAQ.propTypes = { items: PropTypes.arrayOf(PropTypes.shape({})), }; -FAQ.defaultProps = { - items: undefined, -}; - export default FAQ; diff --git a/apps/promisetracker/src/components/FactCheckCard/index.js b/apps/promisetracker/src/components/FactCheckCard/index.js index 4f371eae2..b027244d3 100644 --- a/apps/promisetracker/src/components/FactCheckCard/index.js +++ b/apps/promisetracker/src/components/FactCheckCard/index.js @@ -47,10 +47,4 @@ FactCheckCard.propTypes = { titleContainer: PropTypes.string, }), }; - -FactCheckCard.defaultProps = { - children: undefined, - classes: undefined, -}; - export default FactCheckCard; diff --git a/apps/promisetracker/src/components/Footer/Copyright.js b/apps/promisetracker/src/components/Footer/Copyright.js index e9d53fe0f..5314e8b89 100644 --- a/apps/promisetracker/src/components/Footer/Copyright.js +++ b/apps/promisetracker/src/components/Footer/Copyright.js @@ -12,7 +12,11 @@ const useStyles = makeStyles(({ typography }) => ({ image: {}, })); -function Copyright({ children, typographyProps, ...props }) { +function Copyright({ + children, + typographyProps = { variant: "button" }, + ...props +}) { const classes = useStyles(props); return ( @@ -38,10 +42,4 @@ Copyright.propTypes = { typographyProps: PropTypes.shape({}), }; -Copyright.defaultProps = { - children: undefined, - typographyProps: { - variant: "button", - }, -}; export default Copyright; diff --git a/apps/promisetracker/src/components/Footer/index.js b/apps/promisetracker/src/components/Footer/index.js index 308615729..99f249d28 100644 --- a/apps/promisetracker/src/components/Footer/index.js +++ b/apps/promisetracker/src/components/Footer/index.js @@ -226,13 +226,5 @@ MainFooter.propTypes = { quickLinks: PropTypes.arrayOf(PropTypes.shape({})), socialMedia: PropTypes.arrayOf(PropTypes.shape({})), }; -MainFooter.defaultProps = { - about: undefined, - copyright: undefined, - legalLinks: undefined, - organizationLogo: undefined, - quickLinks: undefined, - socialMedia: undefined, -}; export default MainFooter; diff --git a/apps/promisetracker/src/components/Form/Input.js b/apps/promisetracker/src/components/Form/Input.js index 50284dd36..dcd6c579e 100644 --- a/apps/promisetracker/src/components/Form/Input.js +++ b/apps/promisetracker/src/components/Form/Input.js @@ -6,7 +6,7 @@ import React from "react"; import useStyles from "./useStyles"; -function Input({ className, type, ...props }) { +function Input({ className, type = "text", ...props }) { const classes = useStyles(props); return ( @@ -24,9 +24,4 @@ Input.propTypes = { type: PropTypes.oneOf(["email", "password", "tel", "text", "url"]), }; -Input.defaultProps = { - className: undefined, - type: "text", -}; - export default Input; diff --git a/apps/promisetracker/src/components/Form/Label.js b/apps/promisetracker/src/components/Form/Label.js index cd0affd93..de445fd46 100644 --- a/apps/promisetracker/src/components/Form/Label.js +++ b/apps/promisetracker/src/components/Form/Label.js @@ -5,7 +5,7 @@ import React from "react"; import useStyles from "./useStyles"; -function Label({ className, shrink, ...props }) { +function Label({ className, shrink = false, ...props }) { const classes = useStyles(props); return ( @@ -24,9 +24,4 @@ Label.propTypes = { shrink: PropTypes.bool, }; -Label.defaultProps = { - className: undefined, - shrink: false, -}; - export default Label; diff --git a/apps/promisetracker/src/components/FormDialog/Form.js b/apps/promisetracker/src/components/FormDialog/Form.js index a05db8464..9a8072d01 100644 --- a/apps/promisetracker/src/components/FormDialog/Form.js +++ b/apps/promisetracker/src/components/FormDialog/Form.js @@ -291,28 +291,4 @@ Form.propTypes = { }), }; -Form.defaultProps = { - mandatoryText: null, - onChange: null, - onSubmit: null, - petitionLabel: null, - petitionHelper: null, - categoryLabel: null, - categoryHelper: null, - recipientLabel: null, - recipientDescription: null, - recipientNameLabel: null, - recipientEmailLabel: null, - recipientSocialLabel: null, - issueLabel: null, - issueHelper: null, - imageLabel: null, - imageHelper: null, - uploadInstruction: null, - uploadText: null, - signatureLabel: null, - signatureHelper: null, - values: null, -}; - export default Form; diff --git a/apps/promisetracker/src/components/FormDialog/FormTextField.js b/apps/promisetracker/src/components/FormDialog/FormTextField.js index ad2704cf7..aaa2b51bf 100644 --- a/apps/promisetracker/src/components/FormDialog/FormTextField.js +++ b/apps/promisetracker/src/components/FormDialog/FormTextField.js @@ -61,12 +61,4 @@ FormTextField.propTypes = { type: PropTypes.string, }; -FormTextField.defaultProps = { - labelText: null, - helperDescription: null, - elemId: null, - required: null, - type: null, -}; - export default FormTextField; diff --git a/apps/promisetracker/src/components/FormDialog/UpdateDialog.js b/apps/promisetracker/src/components/FormDialog/UpdateDialog.js index f0a594678..c7ab358da 100644 --- a/apps/promisetracker/src/components/FormDialog/UpdateDialog.js +++ b/apps/promisetracker/src/components/FormDialog/UpdateDialog.js @@ -19,7 +19,9 @@ import CtAButton from "@/promisetracker/components/CtAButton"; function FormDialog({ open, handleFormClose, - promise_act_now: promiseActNow, + promise_act_now: promiseActNow = { + update: {}, + }, ...props }) { const classes = useStyles(props); @@ -87,17 +89,4 @@ FormDialog.propTypes = { }), }; -FormDialog.defaultProps = { - open: null, - handleFormClose: null, - petitionDescription: null, - petitionTitle: null, - promise_act_now: PropTypes.shape({ - update: { - updateTitle: null, - updateDescription: null, - }, - }), -}; - export default FormDialog; diff --git a/apps/promisetracker/src/components/FormDialog/UpdateForm.js b/apps/promisetracker/src/components/FormDialog/UpdateForm.js index 214df607f..2c8833242 100644 --- a/apps/promisetracker/src/components/FormDialog/UpdateForm.js +++ b/apps/promisetracker/src/components/FormDialog/UpdateForm.js @@ -17,7 +17,7 @@ import useStyles from "./useStyles"; import CtAButton from "@/promisetracker/components/CtAButton"; -function Form({ promise_act_now: promiseActNow, ...props }) { +function Form({ promise_act_now: promiseActNow = { update: {} }, ...props }) { const classes = useStyles(props); const theme = useTheme(); @@ -212,25 +212,4 @@ Form.propTypes = { }), }; -Form.defaultProps = { - mandatoryText: null, - promise_act_now: PropTypes.shape({ - update: { - uploadInstruction: null, - uploadText: null, - contactLabel: null, - contactLabelDescription: null, - evidenceLabel: null, - evidenceLabelDescription: null, - imageUploadDescription: null, - whatLabel: null, - whatLabelDescription: null, - whenLabel: null, - whenLabelDescription: null, - whoLabel: null, - whoLabelDescription: null, - }, - }), -}; - export default Form; diff --git a/apps/promisetracker/src/components/FormDialog/index.js b/apps/promisetracker/src/components/FormDialog/index.js index de16d45ae..728cfe7bf 100644 --- a/apps/promisetracker/src/components/FormDialog/index.js +++ b/apps/promisetracker/src/components/FormDialog/index.js @@ -126,13 +126,4 @@ FormDialog.propTypes = { }), }; -FormDialog.defaultProps = { - open: null, - handleFormClose: null, - petitionSuccess: null, - petitionDescription: null, - petitionTitle: null, - session: null, -}; - export default FormDialog; diff --git a/apps/promisetracker/src/components/H1/index.js b/apps/promisetracker/src/components/H1/index.js index d619d4318..a6e916e08 100644 --- a/apps/promisetracker/src/components/H1/index.js +++ b/apps/promisetracker/src/components/H1/index.js @@ -43,8 +43,4 @@ H1.propTypes = { className: PropTypes.string, }; -H1.defaultProps = { - className: undefined, -}; - export default H1; diff --git a/apps/promisetracker/src/components/Hero/ProfileChart/DesktopChart/index.js b/apps/promisetracker/src/components/Hero/ProfileChart/DesktopChart/index.js index d64974136..b142421e4 100644 --- a/apps/promisetracker/src/components/Hero/ProfileChart/DesktopChart/index.js +++ b/apps/promisetracker/src/components/Hero/ProfileChart/DesktopChart/index.js @@ -111,8 +111,4 @@ DesktopChart.propTypes = { }), }; -DesktopChart.defaultProps = { - promisesByStatus: undefined, -}; - export default DesktopChart; diff --git a/apps/promisetracker/src/components/Hero/ProfileChart/DesktopInfoStatusPopover.js b/apps/promisetracker/src/components/Hero/ProfileChart/DesktopInfoStatusPopover.js index 0623e8ba0..ed52b7a1b 100644 --- a/apps/promisetracker/src/components/Hero/ProfileChart/DesktopInfoStatusPopover.js +++ b/apps/promisetracker/src/components/Hero/ProfileChart/DesktopInfoStatusPopover.js @@ -79,10 +79,6 @@ PaperTitle.propTypes = { onClose: PropTypes.func, }; -PaperTitle.defaultProps = { - onClose: undefined, -}; - function PaperContent({ children, ...other }) { const classes = useStyles(); return ( @@ -159,9 +155,4 @@ DesktopInfoStatusPopover.propTypes = { title: PropTypes.string, }; -DesktopInfoStatusPopover.defaultProps = { - items: undefined, - title: undefined, -}; - export default DesktopInfoStatusPopover; diff --git a/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/MobileSvgChart.js b/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/MobileSvgChart.js index 5902a955d..b86a361da 100644 --- a/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/MobileSvgChart.js +++ b/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/MobileSvgChart.js @@ -29,7 +29,7 @@ function MobileSvgChart({ stroke, strokeWidth, statusNumber, - statusPercentage, + statusPercentage = "0", status, ...props }) { diff --git a/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/ProgressChart.js b/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/ProgressChart.js index 55552b88e..7284c4352 100644 --- a/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/ProgressChart.js +++ b/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/ProgressChart.js @@ -60,7 +60,7 @@ function ProgressChart({ progressStatuses, caption, ...props }) { stroke="1D1D1B" strokeWidth={1} statusNumber={progressStatus.count} - statusPercentage={progressStatus.percentage} + statusPercentage={progressStatus.percentage ?? "0"} status={progressStatus.title} /> ))} diff --git a/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/index.js b/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/index.js index cbff9b227..8477201ea 100644 --- a/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/index.js +++ b/apps/promisetracker/src/components/Hero/ProfileChart/MobileChart/index.js @@ -103,8 +103,4 @@ MobileChart.propTypes = { }), }; -MobileChart.defaultProps = { - promisesByStatus: undefined, -}; - export default MobileChart; diff --git a/apps/promisetracker/src/components/Hero/ProfileChart/MobileInfoStatusPopover.js b/apps/promisetracker/src/components/Hero/ProfileChart/MobileInfoStatusPopover.js index 9e985bd5e..455e16c18 100644 --- a/apps/promisetracker/src/components/Hero/ProfileChart/MobileInfoStatusPopover.js +++ b/apps/promisetracker/src/components/Hero/ProfileChart/MobileInfoStatusPopover.js @@ -150,9 +150,4 @@ MobileInfoStatusPopover.propTypes = { title: PropTypes.string, }; -MobileInfoStatusPopover.defaultProps = { - items: undefined, - title: undefined, -}; - export default MobileInfoStatusPopover; diff --git a/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js b/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js index e3a90432d..309850873 100644 --- a/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js +++ b/apps/promisetracker/src/components/Hero/ProfileChart/ProfileDetails.js @@ -135,7 +135,6 @@ function ProfileDetails({ aria-label="Info" size="small" onClick={handleOnClick} - clicked={clicked} className={classes.iconButton} > {clicked ? ( @@ -170,6 +169,7 @@ function ProfileDetails({ disableFocusRipple aria-label="Share" size="small" + component="div" className={classes.iconButton} > ({ })); function ReactChart({ - totalPromises, - completed, - inconclusive, - inProgress, - unstarted, - stalled, - behindSchedule, + totalPromises = 0, + completed = 0, + inconclusive = 0, + inProgress = 0, + unstarted = 0, + stalled = 0, + behindSchedule = 0, ...props }) { const classes = useStyles(props); @@ -118,14 +118,4 @@ ReactChart.propTypes = { unstarted: PropTypes.number, }; -ReactChart.defaultProps = { - behindSchedule: 0, - stalled: 0, - inconclusive: 0, - completed: 0, - inProgress: 0, - totalPromises: 0, - unstarted: 0, -}; - export default ReactChart; diff --git a/apps/promisetracker/src/components/Hero/index.js b/apps/promisetracker/src/components/Hero/index.js index d4b942741..6da83c4c5 100644 --- a/apps/promisetracker/src/components/Hero/index.js +++ b/apps/promisetracker/src/components/Hero/index.js @@ -96,11 +96,4 @@ Hero.propTypes = { promisesByStatus: PropTypes.shape({}), }; -Hero.defaultProps = { - criteria: undefined, - fullName: undefined, - promisesByStatus: undefined, - tagline: undefined, -}; - export default Hero; diff --git a/apps/promisetracker/src/components/IndividualRegistrationDialog/index.js b/apps/promisetracker/src/components/IndividualRegistrationDialog/index.js index ea9e174d1..5698bdcb3 100644 --- a/apps/promisetracker/src/components/IndividualRegistrationDialog/index.js +++ b/apps/promisetracker/src/components/IndividualRegistrationDialog/index.js @@ -17,7 +17,7 @@ function IndividualRegistrationDialog({ name: nameProp, onClose, onSubmit, - open, + open = false, title, ...props }) { @@ -77,12 +77,4 @@ IndividualRegistrationDialog.propTypes = { title: PropTypes.string, }; -IndividualRegistrationDialog.defaultProps = { - name: null, - onClose: null, - onSubmit: null, - open: false, - title: null, -}; - export default IndividualRegistrationDialog; diff --git a/apps/promisetracker/src/components/IndividualRegistrationForm/Form.js b/apps/promisetracker/src/components/IndividualRegistrationForm/Form.js index 32e85e259..113a254b6 100644 --- a/apps/promisetracker/src/components/IndividualRegistrationForm/Form.js +++ b/apps/promisetracker/src/components/IndividualRegistrationForm/Form.js @@ -275,13 +275,4 @@ Form.propTypes = { }), }; -Form.defaultProps = { - disabled: undefined, - errors: undefined, - fields: undefined, - name: undefined, - onSubmit: undefined, - status: undefined, -}; - export default Form; diff --git a/apps/promisetracker/src/components/IndividualRegistrationForm/index.js b/apps/promisetracker/src/components/IndividualRegistrationForm/index.js index 207afb859..5d2605c0c 100644 --- a/apps/promisetracker/src/components/IndividualRegistrationForm/index.js +++ b/apps/promisetracker/src/components/IndividualRegistrationForm/index.js @@ -8,7 +8,7 @@ import Form from "./Form"; function IndividualRegistrationForm({ defaultErrorMessage, fields, - onSubmit, + onSubmit = false, submitUrl, }) { const [status, setStatus] = useState({}); @@ -133,11 +133,4 @@ IndividualRegistrationForm.propTypes = { submitUrl: PropTypes.string, }; -IndividualRegistrationForm.defaultProps = { - defaultErrorMessage: undefined, - fields: undefined, - onSubmit: false, - submitUrl: undefined, -}; - export default IndividualRegistrationForm; diff --git a/apps/promisetracker/src/components/KeyPromises/KeyPromise.js b/apps/promisetracker/src/components/KeyPromises/KeyPromise.js index fcf90c304..c83fb7f19 100644 --- a/apps/promisetracker/src/components/KeyPromises/KeyPromise.js +++ b/apps/promisetracker/src/components/KeyPromises/KeyPromise.js @@ -101,13 +101,4 @@ KeyPromise.propTypes = { title: PropTypes.string.isRequired, }; -KeyPromise.defaultProps = { - actionLabel: undefined, - classes: undefined, - description: undefined, - events: undefined, - statusHistory: undefined, - status: undefined, -}; - export default KeyPromise; diff --git a/apps/promisetracker/src/components/KeyPromises/index.js b/apps/promisetracker/src/components/KeyPromises/index.js index d28ceb66b..453502a2e 100644 --- a/apps/promisetracker/src/components/KeyPromises/index.js +++ b/apps/promisetracker/src/components/KeyPromises/index.js @@ -117,11 +117,4 @@ KeyPromises.propTypes = { titleProps: PropTypes.shape({}), }; -KeyPromises.defaultProps = { - actionLabel: undefined, - items: undefined, - title: undefined, - titleProps: undefined, -}; - export default KeyPromises; diff --git a/apps/promisetracker/src/components/LatestArticles/index.js b/apps/promisetracker/src/components/LatestArticles/index.js index 49c87d86a..8ae953806 100644 --- a/apps/promisetracker/src/components/LatestArticles/index.js +++ b/apps/promisetracker/src/components/LatestArticles/index.js @@ -60,11 +60,4 @@ LatestArticles.propTypes = { title: PropTypes.string, }; -LatestArticles.defaultProps = { - actionLabel: undefined, - classes: undefined, - items: undefined, - title: undefined, -}; - export default LatestArticles; diff --git a/apps/promisetracker/src/components/LatestPromises/index.js b/apps/promisetracker/src/components/LatestPromises/index.js index 5fc064190..1d56f7cba 100644 --- a/apps/promisetracker/src/components/LatestPromises/index.js +++ b/apps/promisetracker/src/components/LatestPromises/index.js @@ -64,11 +64,4 @@ LatestPromises.propTypes = { title: PropTypes.string, }; -LatestPromises.defaultProps = { - actionLabel: undefined, - classes: undefined, - items: undefined, - title: undefined, -}; - export default LatestPromises; diff --git a/apps/promisetracker/src/components/LoginForm/Form.js b/apps/promisetracker/src/components/LoginForm/Form.js index 948c2e9d5..592173791 100644 --- a/apps/promisetracker/src/components/LoginForm/Form.js +++ b/apps/promisetracker/src/components/LoginForm/Form.js @@ -101,13 +101,4 @@ Form.propTypes = { }), }; -Form.defaultProps = { - disabled: undefined, - errors: undefined, - fields: undefined, - name: undefined, - onSubmit: undefined, - status: undefined, -}; - export default Form; diff --git a/apps/promisetracker/src/components/LoginForm/index.js b/apps/promisetracker/src/components/LoginForm/index.js index 0293ae2b4..fb2572e03 100644 --- a/apps/promisetracker/src/components/LoginForm/index.js +++ b/apps/promisetracker/src/components/LoginForm/index.js @@ -5,7 +5,7 @@ import React, { useState } from "react"; import Form from "./Form"; -function LoginForm({ onSubmit, classes }) { +function LoginForm({ onSubmit = false, classes }) { const [status, setStatus] = useState({}); const fields = { email: { @@ -85,9 +85,4 @@ LoginForm.propTypes = { onSubmit: PropTypes.func, }; -LoginForm.defaultProps = { - onSubmit: false, - classes: null, -}; - export default LoginForm; diff --git a/apps/promisetracker/src/components/LoginPage/index.js b/apps/promisetracker/src/components/LoginPage/index.js index 63ad5c5a4..ee7b6988f 100644 --- a/apps/promisetracker/src/components/LoginPage/index.js +++ b/apps/promisetracker/src/components/LoginPage/index.js @@ -73,8 +73,4 @@ Login.propTypes = { providers: PropTypes.shape({}), }; -Login.defaultProps = { - providers: undefined, -}; - export default Login; diff --git a/apps/promisetracker/src/components/Navigation/DesktopNavigation/MenuButton.js b/apps/promisetracker/src/components/Navigation/DesktopNavigation/MenuButton.js index e9602f5c8..7cd5b3cb8 100644 --- a/apps/promisetracker/src/components/Navigation/DesktopNavigation/MenuButton.js +++ b/apps/promisetracker/src/components/Navigation/DesktopNavigation/MenuButton.js @@ -48,11 +48,4 @@ MenuButton.propTypes = { active: PropTypes.bool, }; -MenuButton.defaultProps = { - size: undefined, - title: undefined, - href: undefined, - active: undefined, -}; - export default MenuButton; diff --git a/apps/promisetracker/src/components/Navigation/DesktopNavigation/NavigationButton.js b/apps/promisetracker/src/components/Navigation/DesktopNavigation/NavigationButton.js index 735ee41dc..b04ce5538 100644 --- a/apps/promisetracker/src/components/Navigation/DesktopNavigation/NavigationButton.js +++ b/apps/promisetracker/src/components/Navigation/DesktopNavigation/NavigationButton.js @@ -53,11 +53,11 @@ const useStyles = makeStyles(({ spacing, palette, typography }) => ({ })); function NavigationButton({ - active, + active = false, anchorEl, button: buttonProp, children, - open: openProp, + open: openProp = false, onClose, popperProps, size, @@ -128,15 +128,4 @@ NavigationButton.propTypes = { size: PropTypes.string, }; -NavigationButton.defaultProps = { - active: false, - anchorEl: undefined, - onClose: undefined, - open: false, - popperProps: undefined, - button: undefined, - title: undefined, - size: undefined, - children: undefined, -}; export default NavigationButton; diff --git a/apps/promisetracker/src/components/Navigation/DesktopNavigation/PageNavigation.js b/apps/promisetracker/src/components/Navigation/DesktopNavigation/PageNavigation.js index d1c49fb01..583855c53 100644 --- a/apps/promisetracker/src/components/Navigation/DesktopNavigation/PageNavigation.js +++ b/apps/promisetracker/src/components/Navigation/DesktopNavigation/PageNavigation.js @@ -98,9 +98,4 @@ PageNavigation.propTypes = { pathname: PropTypes.string, }; -PageNavigation.defaultProps = { - pathname: undefined, - asPath: undefined, -}; - export default PageNavigation; diff --git a/apps/promisetracker/src/components/Navigation/DesktopNavigation/index.js b/apps/promisetracker/src/components/Navigation/DesktopNavigation/index.js index 641c4d160..d5030c3e6 100644 --- a/apps/promisetracker/src/components/Navigation/DesktopNavigation/index.js +++ b/apps/promisetracker/src/components/Navigation/DesktopNavigation/index.js @@ -207,8 +207,4 @@ DesktopNavigation.propTypes = { }), }; -DesktopNavigation.defaultProps = { - navigation: undefined, -}; - export default DesktopNavigation; diff --git a/apps/promisetracker/src/components/Navigation/MobileNavigation/NavigationList.js b/apps/promisetracker/src/components/Navigation/MobileNavigation/NavigationList.js index 5a871d1b3..5b55eec70 100644 --- a/apps/promisetracker/src/components/Navigation/MobileNavigation/NavigationList.js +++ b/apps/promisetracker/src/components/Navigation/MobileNavigation/NavigationList.js @@ -172,9 +172,4 @@ NavigationList.propTypes = { open: PropTypes.bool, }; -NavigationList.defaultProps = { - onNavigate: undefined, - open: undefined, -}; - export default NavigationList; diff --git a/apps/promisetracker/src/components/Navigation/MobileNavigation/index.js b/apps/promisetracker/src/components/Navigation/MobileNavigation/index.js index c90ef8ae4..e74a13ab7 100644 --- a/apps/promisetracker/src/components/Navigation/MobileNavigation/index.js +++ b/apps/promisetracker/src/components/Navigation/MobileNavigation/index.js @@ -234,8 +234,4 @@ MobileNavigation.propTypes = { }), }; -MobileNavigation.defaultProps = { - navigation: undefined, -}; - export default MobileNavigation; diff --git a/apps/promisetracker/src/components/Navigation/index.js b/apps/promisetracker/src/components/Navigation/index.js index 7c5200125..986beb9f1 100644 --- a/apps/promisetracker/src/components/Navigation/index.js +++ b/apps/promisetracker/src/components/Navigation/index.js @@ -54,8 +54,4 @@ Navigation.propTypes = { navigation: PropTypes.shape({}), }; -Navigation.defaultProps = { - navigation: undefined, -}; - export default Navigation; diff --git a/apps/promisetracker/src/components/Newsletter/index.js b/apps/promisetracker/src/components/Newsletter/index.js index 14993e1b3..0fac578ac 100644 --- a/apps/promisetracker/src/components/Newsletter/index.js +++ b/apps/promisetracker/src/components/Newsletter/index.js @@ -108,12 +108,7 @@ const useStyles = makeStyles(({ breakpoints, typography }) => ({ }, })); -function Newsletter({ - description: descriptionProp, - enterEmailPlaceholder, - title, - ...props -}) { +function Newsletter({ description: descriptionProp, title, ...props }) { const classes = useStyles(props); const description = (descriptionProp && descriptionProp.length > 0 && descriptionProp) || @@ -156,13 +151,6 @@ function Newsletter({ Newsletter.propTypes = { description: PropTypes.string, title: PropTypes.string, - enterEmailPlaceholder: PropTypes.string, -}; - -Newsletter.defaultProps = { - description: undefined, - title: undefined, - enterEmailPlaceholder: "Please Enter your email", }; export default Newsletter; diff --git a/apps/promisetracker/src/components/Page/Base.js b/apps/promisetracker/src/components/Page/Base.js index 70b4b5c40..7ea2cb90e 100644 --- a/apps/promisetracker/src/components/Page/Base.js +++ b/apps/promisetracker/src/components/Page/Base.js @@ -68,10 +68,4 @@ BasePage.propTypes = { title: PropTypes.string, }; -BasePage.defaultProps = { - footer: undefined, - navigation: undefined, - title: undefined, -}; - export default BasePage; diff --git a/apps/promisetracker/src/components/Page/index.js b/apps/promisetracker/src/components/Page/index.js index 48877548f..fcbd96ab3 100644 --- a/apps/promisetracker/src/components/Page/index.js +++ b/apps/promisetracker/src/components/Page/index.js @@ -25,8 +25,4 @@ Page.propTypes = { errorCode: PropTypes.number, }; -Page.defaultProps = { - errorCode: undefined, -}; - export default Page; diff --git a/apps/promisetracker/src/components/Partners/index.js b/apps/promisetracker/src/components/Partners/index.js index 9e836d775..70ad7b3e7 100644 --- a/apps/promisetracker/src/components/Partners/index.js +++ b/apps/promisetracker/src/components/Partners/index.js @@ -80,6 +80,7 @@ function Partners({ items, title, ...props }) { if (!items?.length) { return null; } + return (
{items.slice(0, 6).map((partner) => ( - + ({ name: {}, })); function AuthorAtribution({ - title, - description, - image, - mobileTitle, + title = "Author Attribution", + description = "Intro text explaining why the user is seeing this chart here and where does it come from.", + image = "", + mobileTitle = "Data source embed", classes: classesProp, }) { const classes = useStyles({ image, classes: classesProp }); @@ -98,13 +98,4 @@ AuthorAtribution.propTypes = { mobileTitle: PropTypes.string, }; -AuthorAtribution.defaultProps = { - classes: undefined, - title: "Author Attribution", - mobileTitle: "Data source embed", - description: - "Intro text explaining why the user is seeing this chart here and where does it come from.", - image: "", -}; - export default AuthorAtribution; diff --git a/apps/promisetracker/src/components/Promise/Narative.js b/apps/promisetracker/src/components/Promise/Narative.js index 37ef77080..180211a87 100644 --- a/apps/promisetracker/src/components/Promise/Narative.js +++ b/apps/promisetracker/src/components/Promise/Narative.js @@ -137,10 +137,4 @@ NarativeUpdates.propTypes = { timelines: PropTypes.arrayOf(PropTypes.shape({})), }; -NarativeUpdates.defaultProps = { - description: undefined, - title: undefined, - timelines: undefined, -}; - export default NarativeUpdates; diff --git a/apps/promisetracker/src/components/Promise/RelatedFactChecks.js b/apps/promisetracker/src/components/Promise/RelatedFactChecks.js index d0ccee6a8..e536a09ba 100644 --- a/apps/promisetracker/src/components/Promise/RelatedFactChecks.js +++ b/apps/promisetracker/src/components/Promise/RelatedFactChecks.js @@ -53,9 +53,4 @@ RelatedFactChecks.propTypes = { factChecks: PropTypes.arrayOf(PropTypes.shape({})), }; -RelatedFactChecks.defaultProps = { - classes: undefined, - factChecks: undefined, -}; - export default RelatedFactChecks; diff --git a/apps/promisetracker/src/components/Promise/index.js b/apps/promisetracker/src/components/Promise/index.js index c7914f089..95f660425 100644 --- a/apps/promisetracker/src/components/Promise/index.js +++ b/apps/promisetracker/src/components/Promise/index.js @@ -17,7 +17,7 @@ import Status from "@/promisetracker/components/PromiseStatus"; function Promise({ promise, - breadcrumb, + breadcrumb = "Promises", classes: classesProp, promiseStatusLabel, promiseRadarLabel, @@ -154,17 +154,4 @@ Promise.propTypes = { authorAttributionLabel: PropTypes.string, }; -Promise.defaultProps = { - breadcrumb: "Promises", - classes: undefined, - promiseStatusLabel: undefined, - promiseRadarLabel: undefined, - relatedFactChecksLabel: undefined, - dataSourceEmbedLabel: undefined, - narrativeUpdatesLabel: undefined, - chartEmbedLabel: undefined, - authorAttributionLabel: undefined, - status: undefined, -}; - export default Promise; diff --git a/apps/promisetracker/src/components/PromiseCard/index.js b/apps/promisetracker/src/components/PromiseCard/index.js index 988602cfb..8c9068df6 100644 --- a/apps/promisetracker/src/components/PromiseCard/index.js +++ b/apps/promisetracker/src/components/PromiseCard/index.js @@ -61,10 +61,4 @@ PromiseCard.propTypes = { title: PropTypes.string.isRequired, }; -PromiseCard.defaultProps = { - children: undefined, - classes: undefined, - href: undefined, -}; - export default PromiseCard; diff --git a/apps/promisetracker/src/components/PromiseChart/index.js b/apps/promisetracker/src/components/PromiseChart/index.js index 9c6c16d15..b158951e8 100644 --- a/apps/promisetracker/src/components/PromiseChart/index.js +++ b/apps/promisetracker/src/components/PromiseChart/index.js @@ -37,10 +37,4 @@ PromiseChart.propTypes = { description: PropTypes.string, }; -PromiseChart.defaultProps = { - chartLinks: null, - title: PropTypes.title, - description: PropTypes.description, -}; - export default PromiseChart; diff --git a/apps/promisetracker/src/components/PromiseStatus/index.js b/apps/promisetracker/src/components/PromiseStatus/index.js index d7e103e86..3de6bca27 100644 --- a/apps/promisetracker/src/components/PromiseStatus/index.js +++ b/apps/promisetracker/src/components/PromiseStatus/index.js @@ -42,10 +42,4 @@ Status.propTypes = { title: PropTypes.string.isRequired, }; -Status.defaultProps = { - className: undefined, - color: undefined, - textColor: undefined, -}; - export default Status; diff --git a/apps/promisetracker/src/components/PromiseStatusList/index.js b/apps/promisetracker/src/components/PromiseStatusList/index.js index b867b1539..ce17e210b 100644 --- a/apps/promisetracker/src/components/PromiseStatusList/index.js +++ b/apps/promisetracker/src/components/PromiseStatusList/index.js @@ -51,8 +51,4 @@ PromiseStatusList.propTypes = { ), }; -PromiseStatusList.defaultProps = { - items: undefined, -}; - export default PromiseStatusList; diff --git a/apps/promisetracker/src/components/PromiseTimeline/PromiseStatus.js b/apps/promisetracker/src/components/PromiseTimeline/PromiseStatus.js index 449a4121f..ba18b8be5 100644 --- a/apps/promisetracker/src/components/PromiseTimeline/PromiseStatus.js +++ b/apps/promisetracker/src/components/PromiseTimeline/PromiseStatus.js @@ -42,11 +42,7 @@ function PromiseStatus({ children, color, date: dateProp, ...props }) { PromiseStatus.propTypes = { children: PropTypes.node, color: PropTypes.string.isRequired, - date: PropTypes.number, + date: PropTypes.string, }; -PromiseStatus.defaultProps = { - children: undefined, - date: undefined, -}; export default PromiseStatus; diff --git a/apps/promisetracker/src/components/PromiseTimeline/TimelineEvent.js b/apps/promisetracker/src/components/PromiseTimeline/TimelineEvent.js index af768b2c2..b98ecbbbe 100644 --- a/apps/promisetracker/src/components/PromiseTimeline/TimelineEvent.js +++ b/apps/promisetracker/src/components/PromiseTimeline/TimelineEvent.js @@ -4,7 +4,15 @@ import React, { useState, useRef } from "react"; import config from "@/promisetracker/config"; -function Event({ color, isOdd, radius, rx, textColor, title, year }) { +function Event({ + color = "#fff", + isOdd = false, + radius = "4", + rx = "0", + textColor = "#202020", + title, + year, +}) { const interval = config.promiseInterval; const theme = useTheme(); const xposition = `${ @@ -70,11 +78,4 @@ Event.propTypes = { year: PropTypes.number.isRequired, }; -Event.defaultProps = { - color: "#fff", - isOdd: false, - radius: "4", - rx: "0", - textColor: "#202020", -}; export default Event; diff --git a/apps/promisetracker/src/components/PromiseTimeline/index.js b/apps/promisetracker/src/components/PromiseTimeline/index.js index f70a8e9ee..f56acd9b7 100644 --- a/apps/promisetracker/src/components/PromiseTimeline/index.js +++ b/apps/promisetracker/src/components/PromiseTimeline/index.js @@ -15,7 +15,7 @@ const useStyles = makeStyles(() => ({ })); function PromiseTimeline({ - events, + events = [], status, statusHistory: statusHistoryProp, ...props @@ -37,7 +37,7 @@ function PromiseTimeline({ }} /> {isDesktop && - events?.map((event) => )} + events?.map((event) => )} {statusHistory?.map((currentStatus, idx) => ( ({ }, })); -function Search({ ariaLabel, onClick, onChange, placeholder, ...props }) { +function Search({ + ariaLabel = "", + onClick, + onChange, + placeholder = "SEARCH", + ...props +}) { const classes = useStyles(props); const [term, setTerm] = useState(); const handleChange = (e) => { @@ -93,10 +99,4 @@ Search.propTypes = { onClick: PropTypes.func, }; -Search.defaultProps = { - ariaLabel: "", - onChange: undefined, - onClick: undefined, - placeholder: "SEARCH", -}; export default Search; diff --git a/apps/promisetracker/src/components/Share/index.js b/apps/promisetracker/src/components/Share/index.js index 72c504872..9bdd000de 100644 --- a/apps/promisetracker/src/components/Share/index.js +++ b/apps/promisetracker/src/components/Share/index.js @@ -141,12 +141,4 @@ Share.propTypes = { description: PropTypes.string, }; -Share.defaultProps = { - children: undefined, - classes: undefined, - link: undefined, - title: undefined, - description: undefined, -}; - export default Share; diff --git a/apps/promisetracker/src/components/SignPetition/index.js b/apps/promisetracker/src/components/SignPetition/index.js index 01665cbc4..4957316cd 100644 --- a/apps/promisetracker/src/components/SignPetition/index.js +++ b/apps/promisetracker/src/components/SignPetition/index.js @@ -105,9 +105,4 @@ SignPetition.propTypes = { session: PropTypes.shape({}), }; -SignPetition.defaultProps = { - signatures: undefined, - session: undefined, -}; - export default SignPetition; diff --git a/apps/promisetracker/src/components/SuggestPromise/index.js b/apps/promisetracker/src/components/SuggestPromise/index.js index 43ee11049..947fe5cd1 100644 --- a/apps/promisetracker/src/components/SuggestPromise/index.js +++ b/apps/promisetracker/src/components/SuggestPromise/index.js @@ -27,6 +27,4 @@ SuggestPromise.propTypes = { label: PropTypes.string.isRequired, }; -SuggestPromise.defaultProps = {}; - export default SuggestPromise; diff --git a/apps/promisetracker/src/components/Tabs/TabPanel.js b/apps/promisetracker/src/components/Tabs/TabPanel.js index 04d3b9dae..5fcb35070 100644 --- a/apps/promisetracker/src/components/Tabs/TabPanel.js +++ b/apps/promisetracker/src/components/Tabs/TabPanel.js @@ -30,11 +30,4 @@ TabPanel.propTypes = { selected: PropTypes.oneOfType([PropTypes.number, PropTypes.string]), }; -TabPanel.defaultProps = { - children: undefined, - value: undefined, - name: undefined, - selected: undefined, -}; - export default TabPanel; diff --git a/apps/promisetracker/src/components/Tabs/index.js b/apps/promisetracker/src/components/Tabs/index.js index 5f294d8b1..2d6944c7d 100644 --- a/apps/promisetracker/src/components/Tabs/index.js +++ b/apps/promisetracker/src/components/Tabs/index.js @@ -84,10 +84,4 @@ Tabs.propTypes = { ), }; -Tabs.defaultProps = { - activeTab: 0, - items: undefined, - name: undefined, -}; - export default Tabs; diff --git a/apps/promisetracker/src/pages/_app.page.js b/apps/promisetracker/src/pages/_app.page.js index de06bad5d..d9daaeefb 100644 --- a/apps/promisetracker/src/pages/_app.page.js +++ b/apps/promisetracker/src/pages/_app.page.js @@ -16,13 +16,6 @@ import "simplebar-react/dist/simplebar.min.css"; export default function MyApp(props) { const { Component, pageProps } = props; - React.useEffect(() => { - // Remove the server-side injected CSS. - const jssStyles = document.querySelector("#jss-server-side"); - if (jssStyles) { - jssStyles.parentElement.removeChild(jssStyles); - } - }, []); return ( <> diff --git a/apps/promisetracker/src/pages/analysis/articles/[slug].page.js b/apps/promisetracker/src/pages/analysis/articles/[slug].page.js index c6cc03b2d..955d4480d 100644 --- a/apps/promisetracker/src/pages/analysis/articles/[slug].page.js +++ b/apps/promisetracker/src/pages/analysis/articles/[slug].page.js @@ -106,16 +106,6 @@ Index.propTypes = { title: PropTypes.string, }; -Index.defaultProps = { - article: undefined, - classes: undefined, - footer: undefined, - navigation: undefined, - relatedArticles: undefined, - subscribe: undefined, - title: undefined, -}; - export async function getStaticPaths() { const fallback = true; const page = await wp().pages({ slug: "analysis-articles" }).first; diff --git a/apps/promisetracker/src/pages/analysis/articles/index.page.js b/apps/promisetracker/src/pages/analysis/articles/index.page.js index 4cec00a30..e942604a8 100644 --- a/apps/promisetracker/src/pages/analysis/articles/index.page.js +++ b/apps/promisetracker/src/pages/analysis/articles/index.page.js @@ -98,16 +98,6 @@ Index.propTypes = { title: PropTypes.string, }; -Index.defaultProps = { - actNowEnabled: undefined, - actNow: undefined, - articles: undefined, - footer: undefined, - navigation: undefined, - subscribe: undefined, - title: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); if (!_.locales.includes(locale)) { diff --git a/apps/promisetracker/src/pages/analysis/fact-checks.page.js b/apps/promisetracker/src/pages/analysis/fact-checks.page.js index 1d6ecac4b..9ed2d796e 100644 --- a/apps/promisetracker/src/pages/analysis/fact-checks.page.js +++ b/apps/promisetracker/src/pages/analysis/fact-checks.page.js @@ -98,16 +98,6 @@ FactChecks.propTypes = { title: PropTypes.string, }; -FactChecks.defaultProps = { - actNow: undefined, - actNowEnabled: undefined, - factChecks: undefined, - footer: undefined, - navigation: undefined, - subscribe: undefined, - title: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); if (!_.locales.includes(locale)) { diff --git a/apps/promisetracker/src/pages/analysis/petitions/[slug].page.js b/apps/promisetracker/src/pages/analysis/petitions/[slug].page.js index a4d2bce65..f1e82984f 100644 --- a/apps/promisetracker/src/pages/analysis/petitions/[slug].page.js +++ b/apps/promisetracker/src/pages/analysis/petitions/[slug].page.js @@ -88,17 +88,6 @@ Index.propTypes = { title: PropTypes.string, }; -Index.defaultProps = { - article: undefined, - classes: undefined, - footer: undefined, - navigation: undefined, - relatedArticles: undefined, - subscribe: undefined, - title: undefined, - petition: undefined, -}; - export async function getStaticPaths() { const fallback = true; const petitions = await actnow().petitions().fetchAll(); diff --git a/apps/promisetracker/src/pages/analysis/petitions/index.page.js b/apps/promisetracker/src/pages/analysis/petitions/index.page.js index 000ccae84..83d954fd8 100644 --- a/apps/promisetracker/src/pages/analysis/petitions/index.page.js +++ b/apps/promisetracker/src/pages/analysis/petitions/index.page.js @@ -110,16 +110,6 @@ Index.propTypes = { title: PropTypes.string, }; -Index.defaultProps = { - actNow: undefined, - actNowEnabled: undefined, - footer: undefined, - navigation: undefined, - petitions: undefined, - subscribe: undefined, - title: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); if (!_.locales.includes(locale)) { diff --git a/apps/promisetracker/src/pages/analysis/resources.page.js b/apps/promisetracker/src/pages/analysis/resources.page.js index f557029fb..63dca59fd 100644 --- a/apps/promisetracker/src/pages/analysis/resources.page.js +++ b/apps/promisetracker/src/pages/analysis/resources.page.js @@ -68,13 +68,6 @@ Resources.propTypes = { navigation: PropTypes.shape({}), }; -Resources.defaultProps = { - actNow: undefined, - description: undefined, - footer: undefined, - navigation: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); if (!_.locales.includes(locale)) { diff --git a/apps/promisetracker/src/pages/faq.page.js b/apps/promisetracker/src/pages/faq.page.js index b7e8cbce4..97d2739e3 100644 --- a/apps/promisetracker/src/pages/faq.page.js +++ b/apps/promisetracker/src/pages/faq.page.js @@ -66,14 +66,6 @@ FaqPage.propTypes = { faqs: PropTypes.arrayOf(PropTypes.shape({})), }; -FaqPage.defaultProps = { - actNow: undefined, - actNowEnabled: undefined, - footer: undefined, - navigation: undefined, - faqs: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); if (!_.locales.includes(locale)) { diff --git a/apps/promisetracker/src/pages/index.page.js b/apps/promisetracker/src/pages/index.page.js index 4f85e3771..bd1628429 100644 --- a/apps/promisetracker/src/pages/index.page.js +++ b/apps/promisetracker/src/pages/index.page.js @@ -152,22 +152,6 @@ Index.propTypes = { subscribe: PropTypes.shape({}), }; -Index.defaultProps = { - actNow: undefined, - actNowEnabled: undefined, - articles: undefined, - criteria: undefined, - footer: undefined, - navigation: undefined, - partners: undefined, - promiseStatuses: undefined, - promises: undefined, - keyPromises: undefined, - promisesByStatus: undefined, - subscribe: undefined, - projectMeta: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); // Skip generating pages for unsupported locales diff --git a/apps/promisetracker/src/pages/join.page.js b/apps/promisetracker/src/pages/join.page.js index e1dcffd02..447ce3e33 100644 --- a/apps/promisetracker/src/pages/join.page.js +++ b/apps/promisetracker/src/pages/join.page.js @@ -78,14 +78,6 @@ Join.propTypes = { navigation: PropTypes.shape({}), }; -Join.defaultProps = { - actNow: undefined, - actNowEnabled: undefined, - description: undefined, - footer: undefined, - navigation: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); if (!_.locales.includes(locale)) { diff --git a/apps/promisetracker/src/pages/login.page.js b/apps/promisetracker/src/pages/login.page.js index 4354d2b03..ade1c245a 100644 --- a/apps/promisetracker/src/pages/login.page.js +++ b/apps/promisetracker/src/pages/login.page.js @@ -60,10 +60,6 @@ Login.propTypes = { providers: PropTypes.shape({}), }; -Login.defaultProps = { - providers: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); // Skip generating pages for unsupported locales diff --git a/apps/promisetracker/src/pages/promises/[...slug].page.js b/apps/promisetracker/src/pages/promises/[...slug].page.js index 824351bea..d79674a4c 100644 --- a/apps/promisetracker/src/pages/promises/[...slug].page.js +++ b/apps/promisetracker/src/pages/promises/[...slug].page.js @@ -139,16 +139,6 @@ PromisePage.propTypes = { title: PropTypes.string, }; -PromisePage.defaultProps = { - classes: undefined, - footer: undefined, - labels: undefined, - navigation: undefined, - promise: undefined, - promiseStatuses: undefined, - title: undefined, -}; - export async function getStaticPaths() { const fallback = false; diff --git a/apps/promisetracker/src/pages/promises/index.page.js b/apps/promisetracker/src/pages/promises/index.page.js index 2b20a6c4a..5b2525db3 100644 --- a/apps/promisetracker/src/pages/promises/index.page.js +++ b/apps/promisetracker/src/pages/promises/index.page.js @@ -93,19 +93,6 @@ PromisesPage.propTypes = { title: PropTypes.string, }; -PromisesPage.defaultProps = { - actNow: undefined, - actNowEnabled: undefined, - promises: undefined, - sortLabels: undefined, - promiseStatuses: undefined, - projectMeta: undefined, - footer: undefined, - navigation: undefined, - subscribe: undefined, - title: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); if (!_.locales.includes(locale)) { diff --git a/apps/promisetracker/src/pages/resources.page.js b/apps/promisetracker/src/pages/resources.page.js index fba205d13..8993cb782 100644 --- a/apps/promisetracker/src/pages/resources.page.js +++ b/apps/promisetracker/src/pages/resources.page.js @@ -78,14 +78,6 @@ Resources.propTypes = { navigation: PropTypes.shape({}), }; -Resources.defaultProps = { - actNow: undefined, - actNowEnabled: undefined, - description: undefined, - footer: undefined, - navigation: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); if (!_.locales.includes(locale)) { diff --git a/apps/promisetracker/src/pages/subscribe.page.js b/apps/promisetracker/src/pages/subscribe.page.js index 351c94fa6..b224b4ab2 100644 --- a/apps/promisetracker/src/pages/subscribe.page.js +++ b/apps/promisetracker/src/pages/subscribe.page.js @@ -63,14 +63,6 @@ SubscribePage.propTypes = { subscribe: PropTypes.shape({}), }; -SubscribePage.defaultProps = { - actNow: undefined, - actNowEnabled: undefined, - footer: undefined, - navigation: undefined, - subscribe: undefined, -}; - export async function getStaticProps({ locale }) { const _ = i18n(); if (!_.locales.includes(locale)) { diff --git a/apps/promisetracker/turbo.json b/apps/promisetracker/turbo.json new file mode 100644 index 000000000..077fb215b --- /dev/null +++ b/apps/promisetracker/turbo.json @@ -0,0 +1,9 @@ +{ + "extends": ["//"], + "tasks": { + "build": { + "dependsOn": ["^build"], + "env": ["NEXT_RUNTIME"] + } + } +} From aa832c5902a88a429106e426a572058f1c078972 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Thu, 30 Jan 2025 13:31:45 +0300 Subject: [PATCH 7/9] feat: add additional environment variables to turbo.json in Promise Tracker --- apps/promisetracker/turbo.json | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/apps/promisetracker/turbo.json b/apps/promisetracker/turbo.json index 077fb215b..28580da0b 100644 --- a/apps/promisetracker/turbo.json +++ b/apps/promisetracker/turbo.json @@ -3,7 +3,19 @@ "tasks": { "build": { "dependsOn": ["^build"], - "env": ["NEXT_RUNTIME"] + "env": [ + "NEXT_RUNTIME", + "PROJECT_ROOT", + "PROMISE_TRACKER_SENTRY_DSN", + "PUBLIC_PROMISE_TRACKER_SENTRY_DSN", + "SOURCE_LIB", + "APP_SLUG", + "ACTNOW_URL", + "ACTNOW_API_KEY", + "GOOGLE_ID", + "GOOGLE_SECRET", + "NEXTAUTH_SECRET" + ] } } } From 4178694abb1493ec88b5119f84befeba2fd14bd7 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Thu, 30 Jan 2025 15:37:58 +0300 Subject: [PATCH 8/9] update Sentry configuration and add environment variables in turbo.json --- apps/promisetracker/next.config.js | 16 ++++------------ apps/promisetracker/turbo.json | 5 ++++- 2 files changed, 8 insertions(+), 13 deletions(-) diff --git a/apps/promisetracker/next.config.js b/apps/promisetracker/next.config.js index 8eb545f81..77b75a56d 100644 --- a/apps/promisetracker/next.config.js +++ b/apps/promisetracker/next.config.js @@ -55,18 +55,6 @@ const moduleExports = { }, ]; }, - - // Optional build-time configuration options - sentry: { - // See the 'Configure Source Maps' and 'Configure Legacy Browser Support' - // sections below for information on the following options: - // - disableServerWebpackPlugin - // - disableClientWebpackPlugin - // - hideSourceMaps - // - widenClientFileUpload - // - transpileClientSDK - hideSourceMaps: false, - }, }; const sentryWebpackPluginOptions = { @@ -79,6 +67,10 @@ const sentryWebpackPluginOptions = { silent: true, // Suppresses all logs // For all available options, see: // https://github.com/getsentry/sentry-webpack-plugin#options. + hideSourceMaps: true, + org: process.env.SENTRY_ORG, + authToken: process.env.SENTRY_AUTH_TOKEN, + project: process.env.SENTRY_PROJECT, }; // Make sure adding Sentry options is the last code to run before exporting, to diff --git a/apps/promisetracker/turbo.json b/apps/promisetracker/turbo.json index 28580da0b..7620bd378 100644 --- a/apps/promisetracker/turbo.json +++ b/apps/promisetracker/turbo.json @@ -14,7 +14,10 @@ "ACTNOW_API_KEY", "GOOGLE_ID", "GOOGLE_SECRET", - "NEXTAUTH_SECRET" + "NEXTAUTH_SECRET", + "SENTRY_AUTH_TOKEN", + "SENTRY_ORG", + "SENTRY_PROJECT" ] } } From ced70065417756cb3c90bb5439633ea58d1ba073 Mon Sep 17 00:00:00 2001 From: Kevin Koech Date: Thu, 30 Jan 2025 17:00:12 +0300 Subject: [PATCH 9/9] Fix missing font imports --- apps/promisetracker/src/pages/_app.page.js | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/promisetracker/src/pages/_app.page.js b/apps/promisetracker/src/pages/_app.page.js index d9daaeefb..e4faf5437 100644 --- a/apps/promisetracker/src/pages/_app.page.js +++ b/apps/promisetracker/src/pages/_app.page.js @@ -1,7 +1,6 @@ /* eslint-env browser */ import { CssBaseline } from "@mui/material"; -import { StyledEngineProvider } from "@mui/material/styles"; -import { ThemeProvider } from "@mui/styles"; +import { StyledEngineProvider, ThemeProvider } from "@mui/material/styles"; import { SessionProvider } from "next-auth/react"; import { DefaultSeo } from "next-seo"; import PropTypes from "prop-types";