Skip to content

Resend a calendar invite from the session menu - #490

Merged
jhodapp merged 8 commits into
mainfrom
resend-calendar-invite
Oct 20, 2026
Merged

jhodapp merged 8 commits into
mainfrom
resend-calendar-invite

Conversation

@jhodapp

@jhodapp jhodapp commented Oct 20, 2026 •

Copy link
Copy Markdown
Member

Description

Adds Resend invite and Resend series invite to the dashboard session row's ⋮ menu, so a coach can re-send the calendar invite to a coachee who didn't accept the whole series.

Requires refactor-group/refactor-platform-rs#454.

Changes

  • The menu item is coach only, in the Share link group.
    • It's disabled, with the hint "No upcoming sessions", for a past one-off or a finished series.
    • Finished series are detected from the new include=series (last_session_date).
  • A confirm dialog (resend-invite-dialog.tsx) shows "Sending…" and disables both buttons while in flight, so a double click sends one request.
  • Toasts:
    • success: "Invite sent to you and {coachee}";
    • failure: "Couldn't resend the invite";
    • legacy series: "This series can't be resent", with a Resend this session action.
  • Data layer: resendInvite on CoachingSessionSeriesApi and CoachingSessionApi returns a neverthrow Result with a ResendInviteFailure union. EnrichedCoachingSession.series is an Option.
  • Manual test plan: docs/test-plans/resend_calendar_invite_manual_testing.md.

Screenshots / Videos Showing UI Changes (if applicable)

Helpful additions:

  • the ⋮ menu on a series row with the item enabled;
  • the same menu on a finished series, with the item disabled and the hint;
  • the confirm dialog;
  • the success toast and the legacy-series toast with its action.

Testing Strategy

  • npm run test: 2198 pass. Coverage: row gating, the dialog, and the card flow through MSW, including the legacy action.
  • __tests__/e2e/resend-calendar-invite.spec.ts is isolated with page.route and asserts that a double click sends one POST.
  • I ran the manual test plan live through Playwright MCP against the backend branch, with Google Calendar checked by hand. All cases pass. Email went only to the Jim→Jim relationship.

Concerns

  • While the dialog is sending, the double-send guard lives both in the dialog (disabled) and in the card state machine. That's deliberate, the same pattern as delete.
  • Firefox Playwright can't launch on the author's machine for any spec; the spec passes on Chromium and WebKit.

@jhodapp jhodapp self-assigned this Oct 20, 2026
@jhodapp jhodapp added the enhancement Improves existing functionality or feature label Oct 20, 2026
@jhodapp jhodapp added this to the 1.0.0-beta4 milestone Oct 20, 2026
@jhodapp
jhodapp marked this pull request as ready for review October 20, 2026 18:20
@greptile-apps

greptile-apps Bot commented Oct 20, 2026 •

Copy link
Copy Markdown
Contributor

RetriggerView in GreptileConfidence Score: 5/5

[Medium impact] The reviewed update appears safe to merge with its required backend changes.

Summary

Adds coach-only calendar invite resends from the session menu.

  • Coaches can resend a session or series invite from the dashboard menu.

Requires the backend changes in refactor-group/refactor-platform-rs#454.

Diagram

%%{init: {'theme': 'neutral'}}%%
flowchart TD
  A[Coach chooses resend] --> B[Confirm dialog]
  B --> C{Session belongs to series?}
  C -->|Yes| D[Resend series invite]
  C -->|No| E[Resend session invite]
  D --> F{Result}
  E --> F
  F -->|Success| G[Show success message]
  F -->|Legacy series| H[Offer single-session resend]
  H --> E
  F -->|Other failure| I[Show failure message]
Loading

Reviews (2) · Last reviewed commit: "docs(sessions): say series is None whene..." · Reviewed by Greptile

Comment thread src/components/ui/dashboard/resend-invite-dialog.tsx
Comment thread src/types/coaching-session.ts
@jhodapp
jhodapp merged commit 68713a8 into main Oct 20, 2026
12 checks passed
@jhodapp
jhodapp deleted the resend-calendar-invite branch October 20, 2026 19:12
@github-project-automation github-project-automation Bot moved this from Review to ✅ Done in Refactor Coaching Platform Oct 20, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

enhancement Improves existing functionality or feature

Projects

Status: ✅ Done

Development

Successfully merging this pull request may close these issues.

1 participant