Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

chore: Email validation #487

Merged
merged 1 commit into from
Oct 14, 2024
Merged

Conversation

bansal-harsh-2504
Copy link
Contributor

@bansal-harsh-2504 bansal-harsh-2504 commented Oct 13, 2024

User description

Description

Implemented email validation using Zod.

Related to #463

Mentions

@rajdip-b @kriptonian1

Developer's checklist

  • My PR follows the style guidelines of this project
  • I have performed a self-check on my work

If changes are made in the code:

  • I have followed the coding guidelines
  • My changes in code generate no new warnings
  • There are no UI/UX issues

PR Type

enhancement, dependencies


Description

  • Implemented email validation in the Hero component using the Zod library to ensure valid email addresses are entered.
  • Updated the toast message to prompt users to enter a valid email address.
  • Added the Zod library to the project's dependencies in package.json.
  • Updated the pnpm-lock.yaml file to reflect the addition of the Zod library and other dependency updates.

Changes walkthrough 📝

Relevant files
Enhancement
index.tsx
Implement email validation in Hero component                         

apps/web/src/components/hero/index.tsx

  • Added email validation using Zod.
  • Updated toast message for invalid email.
  • +7/-2     
    Dependencies
    package.json
    Add Zod library to project dependencies                                   

    apps/web/package.json

    • Added Zod library as a dependency.
    +2/-1     
    pnpm-lock.yaml
    Update pnpm lock file with new dependencies                           

    pnpm-lock.yaml

    • Updated lock file to include Zod and other dependency changes.
    +35/-302

    💡 PR-Agent usage: Comment /help "your question" on any pull request to receive relevant information

    Copy link
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    🎫 Ticket compliance analysis 🔶

    463 - Partially compliant

    Fully compliant requirements:

    • Perform validation on the email field

    Not compliant requirements:

    • Clear the text field after adding the user to the waitlist
    • Only show toast when the whitelist response is successful
    • Check if user has already whitelisted
    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Incomplete Implementation
    The PR only implements email validation, but doesn't address clearing the text field, showing toast only on successful response, or checking for existing whitelist entries.

    Error Handling
    The implementation shows a toast for invalid email, but doesn't handle other potential errors or success cases.

    @bansal-harsh-2504 bansal-harsh-2504 mentioned this pull request Oct 13, 2024
    5 tasks
    Copy link
    Contributor

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Score
    Performance
    Move static schema definitions outside of the component to optimize performance

    Consider moving the email validation schema (emailSchema) outside of the component
    to improve performance. Defining it inside the component means it's recreated on
    every render, which is unnecessary for a static schema.

    apps/web/src/components/hero/index.tsx [11-14]

    +const emailSchema = z.string().email()
     
    +function Hero(): React.JSX.Element {
    +  const [email, setEmail] = useState<string>('')
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: Moving the static schema definition outside the component prevents unnecessary re-creation on each render, optimizing performance. This is a valuable enhancement for maintaining efficient component rendering.

    9
    Enhancement
    Handle both successful and unsuccessful email validation cases

    Consider handling the successful case of email validation. Currently, the code only
    handles the error case, but it's good practice to provide feedback or take action
    when the email is valid as well.

    apps/web/src/components/hero/index.tsx [19-27]

     const result = emailSchema.safeParse(email)
     
    -if (!result.success) {
    +if (result.success) {
    +  // Handle successful email validation (e.g., submit form, show success message)
    +  console.log('Valid email:', result.data);
    +  // Add your logic here
    +} else {
       toast.custom(() => (
         <div className="text-brandBlue border-brandBlue/20 w-[90vw] rounded-lg border bg-[#852b2c] p-2 shadow-2xl backdrop-blur-3xl md:w-[20vw]">
           <p className="text-sm">Please enter a valid email address </p>
         </div>
       ))
    -  return
     }
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Handling both successful and unsuccessful validation cases is crucial for a complete user interaction flow. This suggestion addresses a missing piece in the logic, ensuring that valid emails are processed appropriately.

    8
    Provide more specific error messages in the toast notification for invalid email inputs

    Consider using a more specific error message in the toast notification. Instead of a
    generic "Please enter a valid email address", provide details about the specific
    validation error (e.g., "Invalid email format" or "Email domain not supported").

    apps/web/src/components/hero/index.tsx [22-26]

     toast.custom(() => (
       <div className="text-brandBlue border-brandBlue/20 w-[90vw] rounded-lg border bg-[#852b2c] p-2 shadow-2xl backdrop-blur-3xl md:w-[20vw]">
    -    <p className="text-sm">Please enter a valid email address </p>
    +    <p className="text-sm">{result.error.issues[0].message}</p>
       </div>
     ))
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: This suggestion improves user experience by providing more specific error messages, which can help users understand why their input is invalid. It enhances the feedback mechanism without altering the core functionality.

    7

    💡 Need additional feedback ? start a PR chat

    Copy link
    Member

    @rajdip-b rajdip-b left a comment

    Choose a reason for hiding this comment

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

    LGTM

    @rajdip-b rajdip-b added the hacktoberfest-accepted Your PR has this = Congrats! label Oct 14, 2024
    @rajdip-b
    Copy link
    Member

    @kriptonian1 merge this if you feel its good

    Copy link
    Contributor

    @kriptonian1 kriptonian1 left a comment

    Choose a reason for hiding this comment

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

    LGTM

    @kriptonian1 kriptonian1 merged commit e8e737a into keyshade-xyz:develop Oct 14, 2024
    8 checks passed
    rajdip-b pushed a commit that referenced this pull request Oct 24, 2024
    ## [2.6.0](v2.5.0...v2.6.0) (2024-10-24)
    
    ### 🚀 Features
    
    * **api:**  Add icon and remove description field from workspace ([#435](#435)) ([a99c0db](a99c0db))
    * **api-client:** Added workspace-membership and related tests ([#452](#452)) ([6a1c091](6a1c091))
    * **api-client:** Create controller for User module ([#484](#484)) ([f9d8e83](f9d8e83))
    * **api:** Add prod env schema in env file ([#436](#436)) ([21c3004](21c3004))
    * **api:** Add resend otp implementation ([#445](#445)) ([4dc6aa1](4dc6aa1))
    * **api:** Fetch total count of environments, [secure]s and variables in project ([#434](#434)) ([0c9e50a](0c9e50a))
    * **api:** Replace `projectId` with `name` and `slug` in workspace-role response.  ([#432](#432)) ([af06071](af06071))
    * **cli:** Add functionality to operate on Secrets ([#504](#504)) ([1b4bf2f](1b4bf2f))
    * **cli:** Add project command ([#451](#451)) ([70448e1](70448e1))
    * **cli:** Add workspace operations ([#441](#441)) ([ed38d22](ed38d22))
    * **cli:** implement commands to get, list, update, and delete, workspace roles ([#469](#469)) ([957ea8d](957ea8d))
    * **cli:** Implemented pagination support ([#453](#453)) ([feb1806](feb1806))
    * **cli:** Secret scan ([#438](#438)) ([85cb8ab](85cb8ab))
    * **cli:** Update environment command outputs ([f4af874](f4af874))
    * **platform:** Clearing email field after waitlisting the user email ([#481](#481)) ([256d659](256d659))
    * Remove project IDs from workspace role export data and update tests ([#448](#448)) ([8fdb328](8fdb328))
    * **web:** Configured extra check for waitlisted users already in the list and created toast message for them ([#492](#492)) ([2ddd0ef](2ddd0ef))
    * **web:** show the toast only when email add successfully ([#490](#490)) ([783c411](783c411))
    
    ### 🐛 Bug Fixes
    
    * **api,api-client:** Add environmentSlug in multiple places across the variable module ([#468](#468)) ([d970aff](d970aff))
    * **api:** Replace the id with slug in the global-search service ([#455](#455)) ([74804b1](74804b1))
    * **platform:** Fixed duplicate Google Logo UI fix  ([#450](#450)) ([fb0d6f7](fb0d6f7))
    * resolve footer website name cut-off or overlap issue ([#444](#444)) ([fe03ba2](fe03ba2))
    * **web:** Horizontal Scrolling issue on the website ([#440](#440)) ([655177b](655177b))
    
    ### 📚 Documentation
    
    * Add documentation for environment in CLI ([#462](#462)) ([dad7394](dad7394))
    * Add documentation for project in CLI ([#466](#466)) ([341fb32](341fb32))
    * Add documentation for scan in CLI ([#461](#461)) ([72281e6](72281e6))
    * Add documentation for workspace command ([#464](#464)) ([4aad8a2](4aad8a2))
    * Add instructions for resetting the local Prisma database ([#495](#495)) ([#501](#501)) ([b07ea17](b07ea17))
    * Added docker support documentation ([#465](#465)) ([bc04be4](bc04be4))
    * Added documentation for running the platform ([#473](#473)) ([8b8386b](8b8386b))
    * Added missing mappings to pages ([5de9fd8](5de9fd8))
    * Fix Documentation Hyperlink and update expired Discord invite link ([#496](#496)) ([5a10e39](5a10e39))
    * Updated CLI docs ([#460](#460)) ([c7e0f13](c7e0f13))
    
    ### 🔧 Miscellaneous Chores
    
    * Add more logging to Sentry init ([#470](#470)) ([de4925d](de4925d))
    * **api:** Optimise API docker image size ([#360](#360)) ([ea40dc1](ea40dc1))
    * **api:** Updated lockfile ([a968e78](a968e78))
    * **CI:** Add [secure] scan validation ([f441262](f441262))
    * **cli:** Update controller invocation in environment commands ([#477](#477)) ([596bd1a](596bd1a))
    * Minor changes to variables ([fe01ca6](fe01ca6))
    * **[secure]-scan:** Failing lint issues ([#507](#507)) ([48f45df](48f45df))
    * **[secure]-scan:** Formatted files ([5884833](5884833))
    * Update .env.example ([70ad4f7](70ad4f7))
    * Updated scripts ([9eb76a7](9eb76a7))
    * **web:** email validation ([#487](#487)) ([e8e737a](e8e737a))
    @rajdip-b
    Copy link
    Member

    🎉 This PR is included in version 2.6.0 🎉

    The release is available on GitHub release

    Your semantic-release bot 📦🚀

    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.

    3 participants