Skip to content

feat: DAH-4037 I2I response pages#2863

Open
cliu02 wants to merge 34 commits intomainfrom
DAH-4037-i2i-response
Open

feat: DAH-4037 I2I response pages#2863
cliu02 wants to merge 34 commits intomainfrom
DAH-4037-i2i-response

Conversation

@cliu02
Copy link
Copy Markdown
Collaborator

@cliu02 cliu02 commented Apr 16, 2026

Description

Continued I2I/I2A refactoring and response pages frontend.

Note: this PR builds on #2862

New strings need an engineer with Phrase access to push.

Jira ticket

https://sfgovdt.jira.com/browse/DAH-4037

Before requesting eng review

Version Control

  • branch name begins with angular if it contains updates to Angular code
  • branch name contains the Jira ticket number
  • PR name follows type: TICKET-NUMBER Description format, use DAH-000 if it does not need a ticket
  • PR name follows urgent: Description format if it is urgent and does not need a ticket

Code quality

  • the set of changes is small
  • all automated code checks pass (linting, tests, coverage, etc.)
  • if the PR is a bugfix, there are tests and logs around the bug

Code conventions

  • web pages are formatted with .scss stylesheets and ui-seeds tokens, rather than inline styles or Tailwind

Review instructions

  • instructions specify which environment(s) it applies to
  • instructions work for PA testers
  • instructions have already been performed at least once

Request eng review

  • PR has needs review label
  • Use Housing Eng group to automatically assign reviewers, and/or assign specific engineers
  • If time sensitive, notify engineers in Slack

Before merging

Request product acceptance (PA) testing

  • PA tested in the review environment (use needs product acceptance label)
  • if PA testing cannot be done, changes are behind a feature flag

Copilot AI review requested due to automatic review settings April 16, 2026 19:47
@wiz-dt-tis
Copy link
Copy Markdown

wiz-dt-tis bot commented Apr 16, 2026

Wiz Scan Summary

Scanner Findings
Vulnerability Finding Vulnerabilities -
Data Finding Sensitive Data -
Secret Finding Secrets -
IaC Misconfiguration IaC Misconfigurations -
SAST Finding SAST Findings -
Software Management Finding Software Management Findings -
Total -

View scan details in Wiz

To detect these findings earlier in the dev lifecycle, try using Wiz Code VS Code Extension.

@cliu02 cliu02 changed the title Dah 4037 i2i response feat: DAH-4037 I2I response pages Apr 16, 2026
@alulabeshue-sfgov alulabeshue-sfgov temporarily deployed to dahlia-webap-dah-4037-i-jbz4qj April 16, 2026 19:48 Inactive
@cliu02 cliu02 added the needs review Pull request needs review label Apr 16, 2026
@cliu02 cliu02 requested review from a team, alulabeshue-sfgov, cade-exygy and jimlin-sfgov and removed request for a team April 16, 2026 19:49
Copy link
Copy Markdown

Copilot AI left a comment

Choose a reason for hiding this comment

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

Pull request overview

Continues the Invite-to-Interview (I2I) / Invite-to-Apply (I2A) refactor by standardizing URL params (inviteAction, type), consolidating shared UI into a new InviteToLayout, and adding the new I2I “Next Steps” response page flow while updating the backend message service method naming.

Changes:

  • Renames/refactors backend messaging entrypoints from send_invite_to_response to send_invite_to_apply_response and updates controller/spec call sites.
  • Refactors Invite-to React pages into shared components (InviteToLayout, shared withdrawn/contact pages) and adds InviteToInterviewNextSteps.
  • Updates routing/link generation to carry type and switches frontend to the new inviteAction param + INVITE_TO_X enum.

Reviewed changes

Copilot reviewed 24 out of 25 changed files in this pull request and generated 10 comments.

Show a summary per file
File Description
spec/services/dahlia_backend/message_service_spec.rb Updates specs for renamed messaging methods.
spec/controllers/invite_to_controller_spec.rb Updates controller spec params to inviteAction, adjusts expectations, leaves TODO blocks.
spec/controllers/api/v1/invite_to_response_controller_spec.rb Updates API controller spec to use renamed messaging method.
app/services/dahlia_backend/message_service.rb Renames invite-to messaging method and adjusts endpoint selection / field prep.
app/controllers/invite_to_controller.rb Refactors params to inviteAction and renames upload URL prop to url; token decode currently commented out.
app/controllers/api/v1/invite_to_response_controller.rb Updates API to call renamed messaging method.
app/javascript/util/routeUtil.ts Updates generateSubmitLink to include type in querystring when no token is used.
app/javascript/util/listingUtil.ts Updates comment to “I2X deadlines”.
app/javascript/pages/inviteTo/invite-to.tsx Main Invite-to router refactor: INVITE_TO_X, inviteAction, I2I gating via Unleash variant JSON payload.
app/javascript/pages/inviteTo/InviteToLayout.tsx New shared layout for I2A/I2I next steps pages.
app/javascript/pages/inviteTo/inviteToApply/InviteToApplyNextSteps.tsx Refactors I2A next steps to use InviteToLayout + unified recordResponse API.
app/javascript/pages/inviteTo/inviteToInterview/InviteToInterviewNextSteps.tsx New I2I next steps page with scheduling CTA + recordResponse.
app/javascript/pages/inviteTo/InviteToWithdrawn.tsx New shared withdrawn page supporting I2A/I2I content.
app/javascript/pages/inviteTo/InviteToContactMeLater.tsx New shared contact-me-later / waitlist page supporting I2A/I2I content.
app/javascript/pages/inviteTo/InviteToLeasingAgentInfo.tsx Renames shared leasing agent info component.
app/javascript/pages/inviteTo/InviteToDeadlinePassed.tsx Updates import for renamed leasing agent info component.
app/javascript/modules/constants.tsx Adds INVITE_TO_X enum (I2A, I2I).
app/javascript/api/types/rails/listings/BaseRailsListing.d.ts Adds optional Leaseup_Appointment_Scheduling_URL.
app/javascript/api/inviteToApiService.ts Keeps unified recordResponse API (removes outdated comment).
app/javascript/tests/pages/invite-to-interview.test.tsx Updates and expands I2I page tests for new flow.
app/javascript/tests/pages/invite-to-apply.test.tsx Updates I2A tests for inviteAction + INVITE_TO_X + type in preview link.
app/javascript/tests/api/inviteToApplyApiService.test.ts Updates test to target inviteToApiService (filename now mismatched).
app/assets/json/translations/react/en.json Updates I2I deadline info string formatting.
Comments suppressed due to low confidence (1)

app/javascript/pages/inviteTo/inviteToApply/InviteToApplyNextSteps.tsx:86

  • handleSubmitClick opens the upload URL before the API call and then opens it again in the catch, which will create duplicate tabs/windows on failures. Also, url can be undefined if neither fileUploadUrl nor listing.File_Upload_URL is present, which will open a blank tab. Add a guard for missing URL and ensure the link is opened only once.

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

Comment thread app/controllers/invite_to_controller.rb Outdated
Comment thread app/javascript/pages/inviteTo/invite-to.tsx Outdated
Comment thread app/javascript/util/routeUtil.ts
Comment thread app/javascript/pages/inviteTo/InviteToContactMeLater.tsx
Comment thread app/javascript/pages/inviteTo/InviteToWithdrawn.tsx
Comment thread app/services/dahlia_backend/message_service.rb
Comment thread app/javascript/__tests__/api/inviteToApplyApiService.test.ts
Comment thread app/javascript/pages/inviteTo/invite-to.tsx
Comment thread spec/controllers/invite_to_controller_spec.rb
@cliu02 cliu02 temporarily deployed to dahlia-webap-dah-4037-i-jbz4qj April 20, 2026 18:23 Inactive
@cliu02 cliu02 temporarily deployed to dahlia-webap-dah-4037-i-jbz4qj April 20, 2026 18:25 Inactive
@cliu02 cliu02 temporarily deployed to dahlia-webap-dah-4037-i-jbz4qj April 20, 2026 18:34 Inactive
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

needs review Pull request needs review

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants