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

feat(web): Correctly showing toast #490

Merged
merged 1 commit into from
Oct 15, 2024

Conversation

bansal-harsh-2504
Copy link
Contributor

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

User description

Description

Now the toast will only be shown when the user will be added to waitlist.

Related to #463

Mentions

@rajdip-b @kriptonian1

##Previous behaviour
Even if the user is offline but enters the correct email then the successfull toast will be shown.

##Current behaviour
The toast will only be shown after successfully adding the user to waitlist.

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:

  • My changes in code generate no new warnings
  • There are no UI/UX issues

Documentation Update

  • I have made the necessary updates to the documentation, or no documentation changes are required.

PR Type

bug_fix


Description

  • The toast notification is now displayed only after the user is successfully added to the waitlist, addressing incorrect success messages when offline.
  • The email input field is cleared after a successful waitlist addition, improving user experience.

Changes walkthrough 📝

Relevant files
Bug fix
index.tsx
Show toast notification after successful waitlist addition

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

  • Moved toast notification to display only after a successful fetch
    request.
  • Cleared the email input field after adding the user to the waitlist.
  • +10/-9   

    💡 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:

    • Clear the text field after adding the user to the waitlist
    • Only show toast when the whitelist response is successful

    Not compliant requirements:

    • Perform validation on the email field
    • Check if user has already whitelisted
    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Error Handling
    The catch block for the fetch request is empty. Consider adding proper error handling or user feedback for failed requests.

    Missing Validation
    Email validation is not implemented as per the ticket requirements. The PR should include email validation before submitting the request.

    Copy link
    Contributor

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Score
    Enhancement
    Implement error handling to display a user-friendly error message when the fetch request fails

    Consider adding error handling to display an error toast if the fetch request fails.
    This will provide better user feedback in case of network issues or other errors.

    apps/web/src/components/hero/index.tsx [33-51]

     async function fetchData(): Promise<void> {
       try {
         await fetch(`${url}&EMAIL=${email}`, {
           mode: 'no-cors'
         })
     
         toast.custom((_t) => (
           <div className="text-brandBlue border-brandBlue/20 w-[90vw] rounded-lg border bg-[#293234] p-2 shadow-2xl backdrop-blur-3xl md:w-[25vw]">
             <h1 className="font-semibold">Welcome to Keyshade 🎉</h1>
             <p className="text-sm">
               You have been added to the waitlist. We will notify you once we
               launch
             </p>
           </div>
         ))        
         setEmail('');
     
       } catch (error) {
    -    // eslint-disable-next-line no-console -- chill
    +    toast.error('Failed to add you to the waitlist. Please try again later.');
    +    console.error('Error adding to waitlist:', error);
    • Apply this suggestion
    Suggestion importance[1-10]: 9

    Why: This suggestion significantly improves user experience by providing feedback when the fetch request fails, which is crucial for handling network errors gracefully. It adds a toast notification for errors and logs the error to the console, making it a valuable enhancement.

    9
    Implement a loading state to provide visual feedback during the fetch request

    Consider adding a loading state while the fetch request is in progress to provide
    visual feedback to the user and prevent multiple submissions.

    apps/web/src/components/hero/index.tsx [33-51]

    +const [isLoading, setIsLoading] = useState(false);
    +
     async function fetchData(): Promise<void> {
    +  setIsLoading(true);
       try {
         await fetch(`${url}&EMAIL=${email}`, {
           mode: 'no-cors'
         })
     
         toast.custom((_t) => (
           <div className="text-brandBlue border-brandBlue/20 w-[90vw] rounded-lg border bg-[#293234] p-2 shadow-2xl backdrop-blur-3xl md:w-[25vw]">
             <h1 className="font-semibold">Welcome to Keyshade 🎉</h1>
             <p className="text-sm">
               You have been added to the waitlist. We will notify you once we
               launch
             </p>
           </div>
         ))        
         setEmail('');
     
       } catch (error) {
    -    // eslint-disable-next-line no-console -- chill
    +    // Handle error
    +  } finally {
    +    setIsLoading(false);
    +  }
    • Apply this suggestion
    Suggestion importance[1-10]: 8

    Why: Adding a loading state enhances user experience by indicating that a process is ongoing, preventing multiple submissions and improving the interface's responsiveness. This is a useful enhancement for better user interaction.

    8

    💡 Need additional feedback ? start a PR chat

    @rajdip-b rajdip-b changed the title chore: Correctly showing toast feat(web): Correctly showing toast Oct 14, 2024
    @bansal-harsh-2504
    Copy link
    Contributor Author

    @rajdip-b @kriptonian1 Can you please attach hacktoberfest label before merging?

    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 15, 2024
    @rajdip-b
    Copy link
    Member

    @kriptonian1 merge this when you can!

    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 783c411 into keyshade-xyz:develop Oct 15, 2024
    10 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