Skip to content

TAN-7439-improve/email-scheduling#13612

Closed
amirabayoumi wants to merge 39 commits intomasterfrom
TAN-7439-improve/email-scheduling
Closed

TAN-7439-improve/email-scheduling#13612
amirabayoumi wants to merge 39 commits intomasterfrom
TAN-7439-improve/email-scheduling

Conversation

@amirabayoumi
Copy link
Copy Markdown
Contributor

@amirabayoumi amirabayoumi commented Apr 10, 2026

Email Scheduling Improvements

  • Emails sorted: Draft → Scheduled → Sent
  • Success feedback is closable
  • Calendar closes automatically after date selection
  • Time input includes a clock icon
  • GMT offset updates dynamically based on selected date (DST-safe)
  • All times follow tenant timezone only
  • Improved time format (from 4/21/26, 7:00 AM to April 21, 2026 at 7:00 AM)
  • Error shown when no recipients on scheduled email (same as send)

Changelog

  • Improved email scheduling UX and timezone handling.

For translators

@notion-workspace
Copy link
Copy Markdown

@amirabayoumi amirabayoumi changed the title WIP WIP TAN-7439-improve/email-scheduling Apr 10, 2026
@amirabayoumi amirabayoumi added this to the Scheduling milestone Apr 10, 2026
Comment thread front/app/components/admin/Email/Scheduling/ScheduleModal.tsx Outdated
Comment thread front/app/containers/Admin/messaging/CustomEmails/Show/index.tsx Outdated
Comment thread front/app/components/admin/Email/Scheduling/ScheduleModal.tsx Outdated
@adessy
Copy link
Copy Markdown
Contributor

adessy commented Apr 10, 2026

Another thought: could we also close the picker directly when a date is selected?

@adessy
Copy link
Copy Markdown
Contributor

adessy commented Apr 10, 2026

I also noticed that the date and time inputs don't have the same height 🫣

SCR-20260410-ofcd

@cl-dev-bot
Copy link
Copy Markdown
Collaborator

cl-dev-bot commented Apr 13, 2026

Messages
📖 Changelog provided 🎉
📖 Notion issue: TAN-7439
📖

Run the e2e tests

📖 Check translation progress

Generated by 🚫 dangerJS against b343274

@amirabayoumi
Copy link
Copy Markdown
Contributor Author

@adessy Fixed timeInput height and made the date picker close automatically after selecting a date ✅

@amirabayoumi amirabayoumi requested review from IvaKop and adessy April 13, 2026 09:44
Copy link
Copy Markdown
Contributor

@adessy adessy left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Getting closer, but there are still a few things that should be reworked, I think. I left some comments and also created a PR based on your branch with some suggestions: #13632

Comment thread package-lock.json Outdated
Comment thread package.json Outdated
Comment thread front/app/components/admin/Email/Scheduling/ScheduleModal.tsx Outdated
Comment thread front/app/components/admin/Email/Scheduling/ScheduleModal.tsx
Comment thread front/app/components/admin/Email/Scheduling/ScheduleModal.tsx
Comment thread front/app/components/admin/Email/Scheduling/ScheduleModal.tsx Outdated
Comment thread front/app/components/admin/Email/Scheduling/ScheduleModal.tsx Outdated
@amirabayoumi amirabayoumi requested a review from adessy April 16, 2026 11:14
)}
{!apiSendErrors && hasNoParticipants && (
<Box mb="8px">
<Error text={formatMessage(errorMessages.no_recipients)} />
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I'm not sure the Error component is the right fit here, but @IvaKop would know better than me.

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is ok to use this component with text instead of passing the apiErrors prop in this case.

Copy link
Copy Markdown
Contributor

@IvaKop IvaKop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Some minor changes required but overall - looking good 👍

Comment thread front/app/component-library/components/Success/index.tsx Outdated
>
{format(selectedTime, 'p', { locale: getLocale(locale) })}
</Button>
<InputContainer onClick={() => setVisible(true)}>
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Avoid adding onClick handlers on containers. It is supposed to be added only to clickable elements like buttons.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

InputContainer is actually implemented as a styled button, so it is already a clickable element and intended to be interactive.
front/app/component-library/utils/containers/InputContainer.tsx

Comment thread front/app/components/admin/Email/Scheduling/ScheduleModal.tsx Outdated
)}
{!apiSendErrors && hasNoParticipants && (
<Box mb="8px">
<Error text={formatMessage(errorMessages.no_recipients)} />
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It is ok to use this component with text instead of passing the apiErrors prop in this case.

@amirabayoumi amirabayoumi requested a review from IvaKop April 20, 2026 12:59
import T from 'components/T';
import ButtonWithLink from 'components/UI/ButtonWithLink';
import Error from 'components/UI/Error';
import errorMessages from 'components/UI/Error/messages';
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

You are not supposed to import the error messages in this way. These are cenrtalized and retrieved by key.
Add this copy to the regular messages file of this component, instead.

Copy link
Copy Markdown
Contributor

@IvaKop IvaKop left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

One small final comments about the error messages copy but other than that this is good to go 🚀

@amirabayoumi
Copy link
Copy Markdown
Contributor Author

Due to Weave merge issue had to close this PR and open new branch #13691

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants