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(platform): Add new access level SVGs and integrate into ProjectCard component #678

Merged
merged 3 commits into from
Jan 30, 2025

Conversation

kriptonian1
Copy link
Contributor

@kriptonian1 kriptonian1 commented Jan 30, 2025

Description

This pull request includes several changes to the apps/platform project, primarily focused on adding new SVG icons and displaying the access level of projects in the ProjectCard component. The most important changes are listed below:

SVG Imports and Exports:

  • Added new SVG imports for PrivateSVG, GlobalSVG, and InternalSVG to the apps/platform/public/svg/dashboard/index.ts file.
  • Updated the export statement in the apps/platform/public/svg/dashboard/index.ts file to include the newly added SVGs.

ProjectCard Component Updates:

  • Imported the new SVGs (PrivateSVG, GlobalSVG, and InternalSVG) into the apps/platform/src/components/dashboard/project/projectCard/index.tsx file.
  • Added a new accessLevel property to the ProjectCard component's destructured project object.
  • Created a new function accessLevelToSVG to map the accessLevel to the corresponding SVG icon.
  • Updated the ProjectCard component's JSX to display the access level with the corresponding SVG icon.

Mentions

@rajdip-b

Screenshots of relevant screens

image

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
  • My changes are breaking another fix/feature of the project
  • I have added test cases to show that my feature works
  • I have added relevant screenshots in my PR
  • There are no UI/UX issues

Documentation Update

  • This PR requires an update to the documentation at docs.keyshade.xyz
  • I have made the necessary updates to the documentation, or no documentation changes are required.

PR Type

Enhancement


Description

  • Added new SVG icons for project access levels.

  • Integrated access level SVGs into ProjectCard component.

  • Created accessLevelToSVG function for SVG mapping.

  • Updated ProjectCard UI to display access level.


Changes walkthrough 📝

Relevant files
Enhancement
index.ts
Add new SVGs for project access levels                                     

apps/platform/public/svg/dashboard/index.ts

  • Added imports for PrivateSVG, GlobalSVG, and InternalSVG.
  • Updated export statement to include new SVGs.
  • +12/-1   
    index.tsx
    Integrate access level SVGs into ProjectCard component     

    apps/platform/src/components/dashboard/project/projectCard/index.tsx

  • Imported new SVGs for access levels.
  • Added accessLevel property to ProjectCard.
  • Created accessLevelToSVG function for SVG mapping.
  • Updated UI to display access level with SVG and text.
  • +28/-3   

    Need help?
  • Type /help how to ... in the comments thread for any questions about Qodo Merge usage.
  • Check out the documentation for more information.
  • @kriptonian1 kriptonian1 requested a review from rajdip-b January 30, 2025 11:57
    Copy link
    Contributor

    PR Reviewer Guide 🔍

    Here are some key observations to aid the review process:

    ⏱️ Estimated effort to review: 2 🔵🔵⚪⚪⚪
    🧪 No relevant tests
    🔒 No security concerns identified
    ⚡ Recommended focus areas for review

    Type Safety

    The accessLevelToSVG function should handle all possible access level values from ProjectWithCount type. The default case returning null could lead to missing UI elements.

    const accessLevelToSVG = (accessLvl: ProjectWithCount['accessLevel']) => {
      switch (accessLvl) {
        case 'GLOBAL':
          return <GlobalSVG width={16} />
        case 'PRIVATE':
          return <PrivateSVG width={16} />
        case 'INTERNAL':
          return <InternalSVG width={16} />
        default:
          return null
      }
    }

    Copy link
    Contributor

    PR Code Suggestions ✨

    Explore these optional code suggestions:

    CategorySuggestion                                                                                                                                    Score
    Possible issue
    Add error handling for invalid values

    Add error handling for invalid access levels. The accessLevelToSVG function should
    handle unexpected values gracefully to prevent potential runtime errors.

    apps/platform/src/components/dashboard/project/projectCard/index.tsx [87-98]

     const accessLevelToSVG = (accessLvl: ProjectWithCount['accessLevel']) => {
    -  switch (accessLvl) {
    +  if (!accessLvl) return <PrivateSVG width={16} />  // Default fallback
    +  switch (accessLvl.toUpperCase()) {
         case 'GLOBAL':
           return <GlobalSVG width={16} />
         case 'PRIVATE':
           return <PrivateSVG width={16} />
         case 'INTERNAL':
           return <InternalSVG width={16} />
         default:
    -      return null
    +      return <PrivateSVG width={16} />  // Explicit fallback for unknown values
       }
     }
    • Apply this suggestion
    Suggestion importance[1-10]: 7

    Why: The suggestion improves code robustness by adding proper error handling for null/undefined values and normalizing input with toUpperCase(), while providing explicit fallbacks. This helps prevent potential runtime errors.

    7

    @rajdip-b rajdip-b merged commit cc3ef77 into develop Jan 30, 2025
    4 checks passed
    @rajdip-b rajdip-b deleted the accessslevel-ui branch January 30, 2025 12:03
    rajdip-b pushed a commit that referenced this pull request Jan 30, 2025
    ## [2.11.0-stage.5](v2.11.0-stage.4...v2.11.0-stage.5) (2025-01-30)
    
    ### 🚀 Features
    
    * **platform:** Add new access level SVGs and integrate into ProjectCard component ([#678](#678)) ([cc3ef77](cc3ef77))
    @rajdip-b
    Copy link
    Member

    🎉 This PR is included in version 2.11.0-stage.5 🎉

    The release is available on GitHub release

    Your semantic-release bot 📦🚀

    rajdip-b pushed a commit that referenced this pull request Feb 10, 2025
    ## [2.11.0](v2.10.0...v2.11.0) (2025-02-10)
    
    ### 🚀 Features
    
    * **api, schema:** Add preview field in API Key ([#680](#680)) ([06d8c44](06d8c44))
    * **api:** Workspace-membership invitationAccepted included ([#665](#665)) ([3877249](3877249))
    * **platform:** Add CopySVG icon to the Slug component and update imports ([#677](#677)) ([2ad93ba](2ad93ba))
    * **platform:** Add Google OAuth ([#689](#689)) ([ad3a3d2](ad3a3d2))
    * **platform:** Add new access level SVGs and integrate into ProjectCard component ([#678](#678)) ([cc3ef77](cc3ef77))
    * **platform:** Add new design for slug ([#675](#675)) ([2b8985c](2b8985c))
    * **platform:** Add SVGs to projectTabs ([#673](#673)) ([37bfddf](37bfddf))
    * **platform:** Added the feature for deleting a [secure] ([#674](#674)) ([37e7960](37e7960))
    * **platform:** Edit [secure] in project ([#684](#684)) ([1e34030](1e34030))
    * **platform:** Restructure workspace settings and user settings ([#682](#682)) ([cd0013a](cd0013a))
    * **platform:** Update table ui and change variable to accordion ([#676](#676)) ([71e9ae9](71e9ae9))
    * **project:** Edit project feature ([#685](#685)) ([a906920](a906920))
    * Update details in listing [secure]s ([#686](#686)) ([84aa5f4](84aa5f4))
    * Variables listing revamp ([#735](#735)) ([38b42fa](38b42fa))
    
    ### 🐛 Bug Fixes
    
    * **api:** Convert email to lowercase ([#694](#694)) ([b41db33](b41db33))
    * **api:** Github OAuth redirect not working ([#692](#692)) ([3495f8a](3495f8a))
    * **api:** Project hard sync existing entities deleted ([#660](#660)) ([3632217](3632217))
    * **cli:** Version flag causing errors ([#679](#679)) ([65bb70b](65bb70b))
    * **platform:** ContextMenu not working on variable card ([#688](#688)) ([fbb147a](fbb147a))
    * **platform:** Fixed the typo in query params ([#723](#723)) ([6c6bb7f](6c6bb7f))
    
    ### 📚 Documentation
    
    * Added section for building packages ([#720](#720)) ([ecfde92](ecfde92))
    
    ### 🔧 Miscellaneous Chores
    
    * **api:** Remove failing environment tests ([d1b9767](d1b9767))
    * **cli:** Bumped CLI to v2.5.1 ([2d39815](2d39815))
    * **platform:** Fixed formatting ([81f86de](81f86de))
    * **release:** 2.11.0-stage.1 [skip ci] ([b442fe0](b442fe0)), closes [#675](#675)
    * **release:** 2.11.0-stage.10 [skip ci] ([cf34066](cf34066)), closes [#665](#665)
    * **release:** 2.11.0-stage.11 [skip ci] ([1344cf1](1344cf1)), closes [#660](#660)
    * **release:** 2.11.0-stage.12 [skip ci] ([92cecfc](92cecfc)), closes [#686](#686)
    * **release:** 2.11.0-stage.13 [skip ci] ([c91d48a](c91d48a)), closes [#684](#684)
    * **release:** 2.11.0-stage.14 [skip ci] ([5d20407](5d20407)), closes [#688](#688)
    * **release:** 2.11.0-stage.15 [skip ci] ([110e265](110e265)), closes [#685](#685)
    * **release:** 2.11.0-stage.16 [skip ci] ([2a7cba6](2a7cba6)), closes [#689](#689)
    * **release:** 2.11.0-stage.17 [skip ci] ([e071a74](e071a74)), closes [#692](#692) [#690](#690)
    * **release:** 2.11.0-stage.18 [skip ci] ([94f3938](94f3938)), closes [#694](#694)
    * **release:** 2.11.0-stage.19 [skip ci] ([f9b095c](f9b095c)), closes [#723](#723) [#720](#720)
    * **release:** 2.11.0-stage.2 [skip ci] ([f9d05de](f9d05de)), closes [#673](#673)
    * **release:** 2.11.0-stage.20 [skip ci] ([02972f2](02972f2)), closes [#735](#735)
    * **release:** 2.11.0-stage.3 [skip ci] ([c2398a6](c2398a6)), closes [#677](#677)
    * **release:** 2.11.0-stage.4 [skip ci] ([6c7e41a](6c7e41a)), closes [#676](#676)
    * **release:** 2.11.0-stage.5 [skip ci] ([defdbcd](defdbcd)), closes [#678](#678)
    * **release:** 2.11.0-stage.6 [skip ci] ([5060fe7](5060fe7)), closes [#679](#679)
    * **release:** 2.11.0-stage.7 [skip ci] ([b2be010](b2be010)), closes [#674](#674)
    * **release:** 2.11.0-stage.8 [skip ci] ([972e55b](972e55b)), closes [#680](#680)
    * **release:** 2.11.0-stage.9 [skip ci] ([fd92c3b](fd92c3b)), closes [#682](#682)
    
    ### 🔨 Code Refactoring
    
    * **platform:** Updated the [secure] table and changed edit variable dialog to a sheet ([#690](#690)) ([f51ad34](f51ad34))
    @rajdip-b
    Copy link
    Member

    🎉 This PR is included in version 2.11.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.

    2 participants