feat(wave): require KYC to apply repos to a wave program#1915
Merged
Conversation
Mirror the issue-application KYC gate on the repo-apply form: - form load fetches KYC status and exposes isKycVerified - inline error AnnotationBox with a "Verify identity" link (backTo) when KYC isn't GREEN; all form fields and the submit button are disabled until verified (ListSelect uses blockInteraction since it overrides pointer-events) - post-login kyc-required reminder copy now mentions repo applications - tidy KYC success page copy (point users to Profile settings) Part of #647.
Contributor
There was a problem hiding this comment.
Pull request overview
This PR gates the maintainer “apply repositories to a Wave Program” flow behind verified (GREEN) KYC, mirroring the existing issue-application KYC gating behavior and adding a couple of KYC-related copy updates.
Changes:
- Fetches KYC status during repo-apply form load and exposes an
isKycVerifiedflag to the page. - Adds inline KYC-required messaging plus disables the repo-apply form and submit button until KYC is verified.
- Updates copy on the KYC-required reminder page and the KYC success page.
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 6 comments.
| File | Description |
|---|---|
src/routes/(pages)/wave/(flows)/maintainer-onboarding/apply-to-wave-program/[waveProgramId]/form/+page.ts |
Loads KYC status alongside repos and computes isKycVerified. |
src/routes/(pages)/wave/(flows)/maintainer-onboarding/apply-to-wave-program/[waveProgramId]/form/+page.svelte |
Adds inline KYC gating UI and disables form interactions until KYC is verified. |
src/routes/(pages)/wave/(flows)/kyc/success/+page.svelte |
Updates success-page copy to point users to Profile settings. |
src/routes/(pages)/wave/(flows)/kyc-required/+page.svelte |
Expands reminder copy to include repo applications. |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
FormField's disabled only applies pointer-events:none, leaving the inner
TextArea/TextInput and link buttons keyboard-focusable. Pass
disabled={!isKycVerified} down to the actual controls (all TextAreas, the
supporting-link input, Add link and Remove buttons) so the gate can't be
bypassed via keyboard navigation.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What
Gate the repo-apply form behind a verified (GREEN) KYC, mirroring the established issue-application KYC pattern. Backend enforcement is in drips-network/wave#649.
Changes
maintainer-onboarding/apply-to-wave-program/[waveProgramId]/form/):+page.tsnow fetchesgetKycStatusand exposesisKycVerified.+page.svelteshows an inline errorAnnotationBoxwith a "Verify identity" link (/wave/kyc?backTo=…) when KYC isn't verified.disabled={!isKycVerified}is passed directly to each control (TextAreas, supporting-link input, Add link/Remove buttons) — not just theFormFieldwrapper — so the gate can't be bypassed via keyboard navigation. TheListSelectusesblockInteractionfor the same reason. The submit button is also disabled with helper text.kyc-requiredreminder copy now mentions both "applying to issues" and "applying repos to a Wave Program".UX note
This is inline gating (not a hard redirect): KYC isn't instant, so after submitting Sumsub the user lands on the success page with status
applicantPending, and the form stays gated until KYC turns GREEN — same real-world behavior as issue applications.Related
Implements drips-network/wave#647 (tracking issue lives in the
waverepo). Pairs with drips-network/wave#649 for the backend gate. Note: this does not auto-close anything in this repo —#647here is an unrelated issue.