bluewave-labs / bluewave-onboarding

https://bluewavelabs.ca
GNU Affero General Public License v3.0
30 stars 24 forks source link

PR for Issue#303 #327

Closed d02ev closed 4 weeks ago

d02ev commented 1 month ago
  1. Created backend endpoint to set an organization with appropriate validations.
  2. First time registering users are routed to the progress steps page instead of home page directly.
  3. Invites and organization name setting are done on the last step of the progress step page.
coderabbitai[bot] commented 1 month ago

Walkthrough

The pull request introduces several changes across multiple files, primarily focusing on enhancing team management functionalities. Key updates include the addition of a new permission setOrg in the settings, a new asynchronous function setOrganisation in the team controller for creating organizations, and a corresponding route for this function. Additionally, new service methods for managing teams are introduced, along with modifications in the frontend to handle authentication types and integrate error handling in the user interface.

Changes

File Path Change Summary
backend/config/settings.js Added setOrg permission to team.permissions.
backend/src/controllers/team.controller.js Added setOrganisation function for creating organizations; updated exports to include this function.
backend/src/routes/team.routes.js Added new POST route /set-organisation protected by JWT and requiring setOrg permission.
backend/src/service/team.service.js Added createTeam(name) method; existing methods retain error handling.
frontend/src/scenes/login/CreateAccountPage.jsx Updated handleAuthSuccess to include AUTH_TYPE.SIGNUP in its parameters.
frontend/src/scenes/login/LoginPage.jsx Modified handleSubmit to pass AUTH_TYPE.LOGIN to handleAuthSuccess.
frontend/src/scenes/progressSteps/ProgressStepsMain.jsx Added state variables for error handling; introduced sendInvitesAndSetOrgName for sending invites and setting org name.
frontend/src/services/teamServices.js Introduced getTeamCount and modified setOrganisation functions for team operations.
frontend/src/utils/constants.js Updated roles constant to be immutable with Object.freeze.
frontend/src/utils/loginHelper.js Updated handleAuthSuccess to include getTeamCount for conditional navigation based on team count.
backend/index.js Commented out database synchronization logic, disabling automatic model syncing.
backend/src/utils/constants.helper.js Added constants MAX_ORG_NAME_LENGTH and ORG_NAME_REGEX for organization name validation.
frontend/src/scenes/progressSteps/ProgressStepsMain.module.scss Added .errorMessage class for styling error messages.
frontend/src/controllers/invite.controller.js Modified response structure in sendTeamInvite for standardized JSON response.
frontend/src/services/inviteService.js Introduced sendInvites function for handling team member invites via email.

Possibly related PRs

Suggested labels

backend, frontend

Suggested reviewers


Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share - [X](https://twitter.com/intent/tweet?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A&url=https%3A//coderabbit.ai) - [Mastodon](https://mastodon.social/share?text=I%20just%20used%20%40coderabbitai%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20the%20proprietary%20code.%20Check%20it%20out%3A%20https%3A%2F%2Fcoderabbit.ai) - [Reddit](https://www.reddit.com/submit?title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&text=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code.%20Check%20it%20out%3A%20https%3A//coderabbit.ai) - [LinkedIn](https://www.linkedin.com/sharing/share-offsite/?url=https%3A%2F%2Fcoderabbit.ai&mini=true&title=Great%20tool%20for%20code%20review%20-%20CodeRabbit&summary=I%20just%20used%20CodeRabbit%20for%20my%20code%20review%2C%20and%20it%27s%20fantastic%21%20It%27s%20free%20for%20OSS%20and%20offers%20a%20free%20trial%20for%20proprietary%20code)
🪧 Tips ### Chat There are 3 ways to chat with [CodeRabbit](https://coderabbit.ai): > ‼️ **IMPORTANT** > Auto-reply has been disabled for this repository in the CodeRabbit settings. The CodeRabbit bot will not respond to your replies unless it is explicitly tagged. - Files and specific lines of code (under the "Files changed" tab): Tag `@coderabbitai` in a new review comment at the desired location with your query. Examples: - `@coderabbitai generate unit testing code for this file.` - `@coderabbitai modularize this function.` - PR comments: Tag `@coderabbitai` in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples: - `@coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.` - `@coderabbitai read src/utils.ts and generate unit testing code.` - `@coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.` - `@coderabbitai help me debug CodeRabbit configuration file.` Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments. ### CodeRabbit Commands (Invoked using PR comments) - `@coderabbitai pause` to pause the reviews on a PR. - `@coderabbitai resume` to resume the paused reviews. - `@coderabbitai review` to trigger an incremental review. This is useful when automatic reviews are disabled for the repository. - `@coderabbitai full review` to do a full review from scratch and review all the files again. - `@coderabbitai summary` to regenerate the summary of the PR. - `@coderabbitai resolve` resolve all the CodeRabbit review comments. - `@coderabbitai configuration` to show the current CodeRabbit configuration for the repository. - `@coderabbitai help` to get help. ### Other keywords and placeholders - Add `@coderabbitai ignore` anywhere in the PR description to prevent this PR from being reviewed. - Add `@coderabbitai summary` to generate the high-level summary at a specific location in the PR description. - Add `@coderabbitai` anywhere in the PR title to generate the title automatically. ### Documentation and Community - Visit our [Documentation](https://coderabbit.ai/docs) for detailed information on how to use CodeRabbit. - Join our [Discord Community](http://discord.gg/coderabbit) to get help, request features, and share feedback. - Follow us on [X/Twitter](https://twitter.com/coderabbitai) for updates and announcements.
d02ev commented 1 month ago

I have changed the validation in the progress-steps pages. I have made them dynamic and informative, also let me know if there are any other validation logics for the fields that needs to be integrated. I am adding screenshots of the same.

For now I have added a basic valid email regex and a non empty validation check for organisation name. The Next button will be disabled until the user enters a valid text for the fields.

  1. Invalid email Screenshot from 2024-10-29 22-25-12

  2. Valid email Screenshot from 2024-10-29 22-25-23

  3. Invalid org name Screenshot from 2024-10-29 22-25-56

  4. Valid org name Screenshot from 2024-10-29 22-26-02

Let me know what you think about these changes.

erenfn commented 4 weeks ago

I think you may not have pushed your changes. Also, please check if the 'invite' section allows inviting multiple emails. An email should be added to the list when the user presses Enter in that field.

image

d02ev commented 4 weeks ago

Yes, I have not yet pushed the latest changes. I wanted to get your views before pushing any further updates. Also, the invite section allows for multiple emails, that functionality remains untouched. I will push these latest changes now.

erenfn commented 4 weeks ago

I’m also able to proceed to the fourth page without setting an organization name. The validation only activates when I start typing something.

image

gorkem-bwl commented 4 weeks ago

Also make sure you add 8px between inputs here.

Also, did you copied those inputs from our components folder?

image
d02ev commented 4 weeks ago

Yes, I copied the input fields from the components folder.

d02ev commented 4 weeks ago

When you start typing an email but then delete it, the Next button remains disabled. I suggest activating the email check when the user presses Enter and keeping the Next button enabled at all times.

image

Here's a screen recording, where only when the user presses Enter the email validations are done and also these invalid emails are not added to the list and when the user enters a valid email and presses Enter, the error message disappears and the email is added to the list. I have also removed button being disabled if the validation fails, should I make this field required ? or keep it as it is Screencast from 2024-10-30 21-15-13.webm

erenfn commented 4 weeks ago

You can make the field for organization name required. The validation for email invites looks good now

d02ev commented 4 weeks ago

You can make the field for organization name required. The validation for email invites looks good now

If an error occurred either while setting an organization or sending invites in the last step. Should I display a generic error or an error toast and navigate the user to home page ?

erenfn commented 4 weeks ago

Don’t navigate the user to the home page if an error occurs. Instead, display the error message on the last step to prompt the user to make changes. Ideally, though, we shouldn't encounter an error in the last step, as the necessary checks are done beforehand.