bluewave-labs / bluewave-onboarding

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

302 implement create helper link page #342

Closed DeboraSerra closed 1 week ago

coderabbitai[bot] commented 2 weeks ago

Walkthrough

The pull request introduces significant updates to both the backend and frontend of the application, focusing on the addition of new route handlers for managing helper links and links. New Postman collections for testing these APIs are included, along with enhancements to various controllers and services to support CRUD operations. The frontend sees the introduction of new components for link management, including a modal for adding links and a preview component. Styling improvements are also made across multiple SCSS files to enhance the user interface.

Changes

File Change Summary
backend/index.js Added route handlers for linkRoutes and helperLinkRoutes, updated import statements to use single quotes, commented out file size validation middleware.
backend/postman/HelperLinks.postman_collection.json New Postman collection added for managing helper links with multiple requests.
backend/postman/Links.postman_collection.json New Postman collection added for managing links with multiple requests.
backend/src/controllers/helperLink.controller.js Introduced LinkController class with methods for managing helper links, including validation and error handling.
backend/src/controllers/link.controller.js Introduced LinkController class with methods for managing links, including validation and error handling.
backend/src/controllers/popup.controller.js No functional changes; minor formatting adjustments.
backend/src/models/HelperLink.js Defined HelperLink Sequelize model with attributes and validation logic.
backend/src/models/Link.js Defined Link Sequelize model with attributes and associations.
backend/src/models/index.js Updated to include new models and associations for Link and HelperLink.
backend/src/routes/helperLink.routes.js Added RESTful API routes for managing helper links.
backend/src/routes/link.routes.js Added RESTful API routes for managing links.
backend/src/service/helperLink.service.js Defined HelperLinkService class with methods for CRUD operations on helper links.
backend/src/service/link.service.js Defined LinkService class with methods for CRUD operations on links, including validation.
frontend/package.json Added @testing-library/user-event to devDependencies.
frontend/src/components/Links/Card/Card.jsx Introduced Card component for draggable card elements with delete functionality.
frontend/src/components/Links/Card/Card.module.scss New SCSS module for styling the Card component.
frontend/src/components/Links/Card/index.jsx Introduced CardContainer component to render a container for card elements.
frontend/src/components/Links/Popup/Popup.jsx Introduced Popup component for modal dialog with deletion confirmation.
frontend/src/components/Links/Popup/Popup.module.scss New SCSS module for styling the Popup component.
frontend/src/components/Links/Settings/Settings.jsx Introduced Settings component for managing link settings.
frontend/src/components/Links/Settings/Settings.module.scss New SCSS module for styling the Settings component.
frontend/src/components/Switch/Switch.jsx Updated Switch component to include new props and improved interactivity.
frontend/src/data/createActivityButtonData.js Updated buttonText for HELPERLINKS activity type.
frontend/src/data/guideMainPageData.js Restructured activityInfoData and added new entry for HELPERLINKS.
frontend/src/scenes/links/LinkAppearance.jsx Introduced LinkAppearance component for managing link appearance settings.
frontend/src/scenes/links/LinkContent.jsx Introduced LinkContent component for managing a draggable list of links.
frontend/src/scenes/links/LinksDefaultPage.jsx Restructured LinksDefaultPage component for improved context management and rendering.
frontend/src/scenes/links/NewLinksPopup.jsx Introduced NewLinksPopup component for managing helper links.
frontend/src/services/helperLinkService.js Introduced functions for managing helper links through API client.
frontend/src/services/linkService.js Introduced URL validation function and updated link management functions.
frontend/src/services/linksProvider.jsx Introduced HelperLinkProvider for managing state related to helper links.
frontend/src/tests/scenes/links/NewLinksPopup.test.jsx Enhanced testing framework for NewLinksPopup component with multiple test cases.
frontend/src/utils/constants.js Commented out local environment API base URL declaration.
frontend/src/products/LinkPreview/Preview.module.scss New SCSS file for styling the Link Preview component.
frontend/src/products/LinkPreview/index.jsx Introduced Preview component for displaying link previews.
frontend/src/utils/guideHelper.js Modified emitToastError function to adjust error message handling.

Possibly related PRs

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://docs.coderabbit.ai) 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.
erenfn commented 2 weeks ago

Also take a look at codeRabbit's suggestions. Some might be useful

erenfn commented 2 weeks ago

@coderabbitai resolve

erenfn commented 2 weeks ago

@coderabbitai resolve

DeboraSerra commented 1 week ago

I changed the logic to display a toast with more meaningfull description.

DeboraSerra commented 1 week ago

Every test that I did is working... I changed a little the controller to avoid this error, but all the situations I could think worked properly... 1: try to add link with url but no title 2: try to add link with title but no url 3: try to add helper without header 4: edit the helper and add a second link 5: change the links position and update the helper 6: create helper with common url and with relative url 7: change the target from the links and see if they are working

I think those were it... Did I miss any scenarion?

DeboraSerra commented 1 week ago

I was able to reproduce it now, and I believe I fixed it. Tried again all the scenarios I mentioned before and this one to make sure everything is still working