From 4a3180ee0403dd5c5aa671a371678b26f5f11a6c Mon Sep 17 00:00:00 2001 From: fengmk2 Date: Tue, 18 Mar 2025 01:00:13 +0000 Subject: [PATCH] feat(server): display date in yyyy-MM-dd format on email (#10916) --- packages/backend/server/package.json | 1 + .../__tests__/__snapshots__/mailer.spec.ts.md | 20 +++++++++--------- .../__snapshots__/mailer.spec.ts.snap | Bin 4260 -> 4251 bytes .../server/src/mails/components/date.tsx | 11 ++++++++++ .../server/src/mails/components/index.ts | 1 + .../server/src/mails/teams/delete-in-1m.tsx | 9 ++++---- .../server/src/mails/teams/delete-in-24h.tsx | 7 +++--- .../server/src/mails/teams/expire-soon.tsx | 8 +++---- .../server/src/mails/teams/expired.tsx | 8 +++---- yarn.lock | 1 + 10 files changed, 39 insertions(+), 27 deletions(-) create mode 100644 packages/backend/server/src/mails/components/date.tsx diff --git a/packages/backend/server/package.json b/packages/backend/server/package.json index 632da0ca1..ad84c82d6 100644 --- a/packages/backend/server/package.json +++ b/packages/backend/server/package.json @@ -66,6 +66,7 @@ "@socket.io/redis-adapter": "^8.3.0", "bullmq": "^5.40.2", "cookie-parser": "^1.4.7", + "date-fns": "^4.0.0", "dotenv": "^16.4.7", "eventemitter2": "^6.4.9", "eventsource-parser": "^3.0.0", diff --git a/packages/backend/server/src/__tests__/__snapshots__/mailer.spec.ts.md b/packages/backend/server/src/__tests__/__snapshots__/mailer.spec.ts.md index 171a78b8a..88acddcff 100644 --- a/packages/backend/server/src/__tests__/__snapshots__/mailer.spec.ts.md +++ b/packages/backend/server/src/__tests__/__snapshots__/mailer.spec.ts.md @@ -1403,9 +1403,9 @@ Generated by [AVA](https://avajs.dev). >Test Workspace␊ team workspace expired on␊ - 1/1/2025. All workspace␊ - data will be permanently deleted on␊ - 1/31/2025 (180 days after␊ + 2025-01-01. All workspace␊ + data will be permanently deleted on␊ + 2025-01-31 (180 days after␊ expiration). To prevent data loss, please either:␊
  • ␊ Test Workspace␊ - team workspace data will be permanently deleted in 24 hours on␊ - 1/31/2025. To prevent data␊ + team workspace data will be permanently deleted in 24 hours on␊ + 2025-01-31. To prevent data␊ loss, please take immediate action:␊
  • ␊ Test Workspace␊ team workspace will expire on␊ - 1/1/2025. After expiration,␊ - you won't be able to sync or collaborate with team members.␊ - Please renew your subscription to continue using all team␊ - features.␊ + 2025-01-01. After␊ + expiration, you won't be able to sync or collaborate with␊ + team members. Please renew your subscription to continue using␊ + all team features.␊

    ␊ ␊ ␊ @@ -1870,7 +1870,7 @@ Generated by [AVA](https://avajs.dev). >Test Workspace␊ team workspace expired on␊ - 1/1/2025. Your workspace␊ + 2025-01-01. Your workspace␊ can't sync or collaborate with team members. Please renew␊ your subscription to restore all team features.␊

    ␊ diff --git a/packages/backend/server/src/__tests__/__snapshots__/mailer.spec.ts.snap b/packages/backend/server/src/__tests__/__snapshots__/mailer.spec.ts.snap index de44f7bd0e950070dde7aaa6d2c43cf62aabaea0..d6bbe8967f151fc211708a634729cbf55f43c91e 100644 GIT binary patch literal 4251 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 G69E7#V@QAi diff --git a/packages/backend/server/src/mails/components/date.tsx b/packages/backend/server/src/mails/components/date.tsx new file mode 100644 index 000000000..df24dc295 --- /dev/null +++ b/packages/backend/server/src/mails/components/date.tsx @@ -0,0 +1,11 @@ +import { format } from 'date-fns'; + +import { Bold } from './template'; + +export interface DateProps { + value: Date; +} + +export const IOSDate = (props: DateProps) => { + return {format(props.value, 'yyyy-MM-dd')}; +}; diff --git a/packages/backend/server/src/mails/components/index.ts b/packages/backend/server/src/mails/components/index.ts index cc33e3851..bacdecaca 100644 --- a/packages/backend/server/src/mails/components/index.ts +++ b/packages/backend/server/src/mails/components/index.ts @@ -1,3 +1,4 @@ +export * from './date'; export * from './template'; export * from './user'; export * from './workspace'; diff --git a/packages/backend/server/src/mails/teams/delete-in-1m.tsx b/packages/backend/server/src/mails/teams/delete-in-1m.tsx index cadd1b9a2..545e29495 100644 --- a/packages/backend/server/src/mails/teams/delete-in-1m.tsx +++ b/packages/backend/server/src/mails/teams/delete-in-1m.tsx @@ -1,8 +1,8 @@ import { TEST_WORKSPACE } from '../common'; import { - Bold, Button, Content, + IOSDate, P, Template, Text, @@ -27,10 +27,9 @@ export default function TeamDeleteInOneMonth(props: TeamDeleteInOneMonthProps) {

    Your team workspace expired on{' '} - {expirationDate.toLocaleDateString()}. All workspace data - will be permanently deleted on{' '} - {deletionDate.toLocaleDateString()} (180 days after - expiration). To prevent data loss, please either: + . All workspace data will be + permanently deleted on (180 days + after expiration). To prevent data loss, please either:

  • Renew your subscription to restore team features
  • diff --git a/packages/backend/server/src/mails/teams/delete-in-24h.tsx b/packages/backend/server/src/mails/teams/delete-in-24h.tsx index 2ab6940f5..8a9f59deb 100644 --- a/packages/backend/server/src/mails/teams/delete-in-24h.tsx +++ b/packages/backend/server/src/mails/teams/delete-in-24h.tsx @@ -1,8 +1,8 @@ import { TEST_WORKSPACE } from '../common'; import { - Bold, Button, Content, + IOSDate, P, Template, Text, @@ -26,9 +26,8 @@ export default function TeamDeleteIn24Hours(props: TeamDeleteIn24HoursProps) {

    Your team workspace data will be - permanently deleted in 24 hours on{' '} - {deletionDate.toLocaleDateString()}. To prevent data - loss, please take immediate action: + permanently deleted in 24 hours on . + To prevent data loss, please take immediate action:

  • Renew your subscription to restore team features
  • diff --git a/packages/backend/server/src/mails/teams/expire-soon.tsx b/packages/backend/server/src/mails/teams/expire-soon.tsx index c7d950a68..190160471 100644 --- a/packages/backend/server/src/mails/teams/expire-soon.tsx +++ b/packages/backend/server/src/mails/teams/expire-soon.tsx @@ -1,8 +1,8 @@ import { TEST_WORKSPACE } from '../common'; import { - Bold, Button, Content, + IOSDate, P, Template, Title, @@ -25,9 +25,9 @@ export default function TeamExpireSoon(props: TeamExpireSoonProps) {

    Your team workspace will expire on{' '} - {expirationDate.toLocaleDateString()}. After expiration, - you won't be able to sync or collaborate with team members. - Please renew your subscription to continue using all team features. + . After expiration, you won't + be able to sync or collaborate with team members. Please renew your + subscription to continue using all team features.

    diff --git a/packages/backend/server/src/mails/teams/expired.tsx b/packages/backend/server/src/mails/teams/expired.tsx index 60088fd82..036823a95 100644 --- a/packages/backend/server/src/mails/teams/expired.tsx +++ b/packages/backend/server/src/mails/teams/expired.tsx @@ -1,8 +1,8 @@ import { TEST_WORKSPACE } from '../common'; import { - Bold, Button, Content, + IOSDate, P, Template, Title, @@ -25,9 +25,9 @@ export default function TeamExpired(props: TeamExpiredProps) {

    Your team workspace expired on{' '} - {expirationDate.toLocaleDateString()}. Your workspace - can't sync or collaborate with team members. Please renew your - subscription to restore all team features. + . Your workspace can't sync or + collaborate with team members. Please renew your subscription to + restore all team features.

    diff --git a/yarn.lock b/yarn.lock index 4ae42262d..aec8ceeb5 100644 --- a/yarn.lock +++ b/yarn.lock @@ -905,6 +905,7 @@ __metadata: c8: "npm:^10.1.3" cookie-parser: "npm:^1.4.7" cross-env: "npm:^7.0.3" + date-fns: "npm:^4.0.0" dotenv: "npm:^16.4.7" eventemitter2: "npm:^6.4.9" eventsource-parser: "npm:^3.0.0"