-
Notifications
You must be signed in to change notification settings - Fork 0
feat: support linkedin_profile, new group settings #209
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
Conversation
LFXV2-907 Add optional linkedin_profile field to committee members: - Add linkedin_profile field to CommitteeMember and CreateCommitteeMemberRequest interfaces - Add LinkedIn Profile input field to member creation/edit form - Display LinkedIn profile link in member card component with LinkedIn icon - Field is optional and includes URL validation Backend changes: linuxfoundation/lfx-v2-committee-service#49 Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Jordan Evans <[email protected]>
LFXV2-906 Add two new committee settings to control visibility and meeting features: 1. Member Visibility (member_visibility): - Enum field with options: 'hidden' or 'basic_profile' - Controls visibility of member profiles within committee - Displayed as select dropdown in settings step - Defaults to 'hidden' 2. Show Meeting Attendees (show_meeting_attendees): - Boolean toggle to display meeting attendee information - Defaults to false - Displayed as feature toggle in settings step Changes: - Create CommitteeMemberVisibility enum in shared package - Add fields to Committee, CommitteeCreateData, and CommitteeSettingsData interfaces - Add MEMBER_VISIBILITY_OPTIONS constant for dropdown options - Add show_meeting_attendees to COMMITTEE_SETTINGS_FEATURES - Update committee-manage form with new controls - Update committee-settings component with member visibility select dropdown - Both settings integrated into create and edit workflows Backend changes: linuxfoundation/lfx-v2-committee-service#48 Generated with [Claude Code](https://claude.ai/code) Signed-off-by: Jordan Evans <[email protected]>
|
Note Other AI code review bot(s) detectedCodeRabbit has detected other AI code review bot(s) in this pull request and will avoid duplicating their findings in the review comments. This may lead to a less comprehensive review. WalkthroughAdds member visibility and meeting-attendees settings plus LinkedIn profile support across committee forms, UI, interfaces, and shared constants; form controls and UI elements updated to include these fields and new enum/options added to the shared API surface. Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20–30 minutes
Pre-merge checks and finishing touches✅ Passed checks (5 passed)
✨ Finishing touches
🧪 Generate unit tests (beta)
📜 Recent review detailsConfiguration used: CodeRabbit UI Review profile: CHILL Plan: Pro Disabled knowledge base sources:
📒 Files selected for processing (3)
🚧 Files skipped from review as they are similar to previous changes (3)
Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Conventional Commits FTW!
🚀 Deployment StatusYour branch has been deployed to: https://ui-pr-209.dev.v2.cluster.linuxfound.info Deployment Details:
The deployment will be automatically removed when this PR is closed. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 3
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
Disabled knowledge base sources:
- Jira integration is disabled by default for public repositories
You can enable these sources in your CodeRabbit configuration.
📒 Files selected for processing (11)
apps/lfx-one/src/app/modules/committees/committee-manage/committee-manage.component.ts(2 hunks)apps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.html(1 hunks)apps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.ts(2 hunks)apps/lfx-one/src/app/modules/committees/components/member-card/member-card.component.html(1 hunks)apps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.html(1 hunks)apps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts(3 hunks)packages/shared/src/constants/committees.constants.ts(1 hunks)packages/shared/src/enums/committee.enum.ts(1 hunks)packages/shared/src/enums/index.ts(1 hunks)packages/shared/src/interfaces/committee.interface.ts(3 hunks)packages/shared/src/interfaces/member.interface.ts(2 hunks)
🧰 Additional context used
📓 Path-based instructions (6)
apps/lfx-one/src/**/*.component.html
📄 CodeRabbit inference engine (CLAUDE.md)
apps/lfx-one/src/**/*.component.html: Always add data-testid attributes when creating new components for reliable test targeting
Use data-testid naming convention - [section]-[component]-[element] for hierarchical structure
Files:
apps/lfx-one/src/app/modules/committees/components/member-card/member-card.component.htmlapps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.htmlapps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.html
**/*.ts
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.ts: Always use async/await pattern for promises
Use TypeScript interfaces instead of union types for better maintainability
Files:
packages/shared/src/interfaces/member.interface.tspackages/shared/src/interfaces/committee.interface.tspackages/shared/src/constants/committees.constants.tsapps/lfx-one/src/app/modules/committees/committee-manage/committee-manage.component.tspackages/shared/src/enums/committee.enum.tsapps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.tspackages/shared/src/enums/index.tsapps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts
packages/shared/src/**/*.ts
📄 CodeRabbit inference engine (CLAUDE.md)
All shared types, interfaces, and constants must be centralized in @lfx-one/shared package
Files:
packages/shared/src/interfaces/member.interface.tspackages/shared/src/interfaces/committee.interface.tspackages/shared/src/constants/committees.constants.tspackages/shared/src/enums/committee.enum.tspackages/shared/src/enums/index.ts
**/*.{ts,js}
📄 CodeRabbit inference engine (CLAUDE.md)
**/*.{ts,js}: License headers are required on all source files - run ./check-headers.sh to verify
Do not nest ternary expressions
Prepend 'Generated with Claude Code (https://claude.ai/code)' when you assisted with the code
Files:
packages/shared/src/interfaces/member.interface.tspackages/shared/src/interfaces/committee.interface.tspackages/shared/src/constants/committees.constants.tsapps/lfx-one/src/app/modules/committees/committee-manage/committee-manage.component.tspackages/shared/src/enums/committee.enum.tsapps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.tspackages/shared/src/enums/index.tsapps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts
apps/lfx-one/src/**/*.component.ts
📄 CodeRabbit inference engine (CLAUDE.md)
apps/lfx-one/src/**/*.component.ts: Use zoneless change detection and signals in Angular 19 components
All PrimeNG components must be wrapped in LFX components for UI library independence
Reference PrimeNG's component interface when defining types for PrimeNG wrappers
Files:
apps/lfx-one/src/app/modules/committees/committee-manage/committee-manage.component.tsapps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.tsapps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts
apps/lfx-one/src/**/*.ts
📄 CodeRabbit inference engine (CLAUDE.md)
apps/lfx-one/src/**/*.ts: Use direct imports for standalone components - no barrel exports
Shared package uses direct source imports during development for hot reloading
Files:
apps/lfx-one/src/app/modules/committees/committee-manage/committee-manage.component.tsapps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.tsapps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts
🧠 Learnings (1)
📚 Learning: 2025-12-10T23:20:29.281Z
Learnt from: asithade
Repo: linuxfoundation/lfx-v2-ui PR: 206
File: apps/lfx-one/src/app/modules/meetings/components/agenda-template-selector/agenda-template-selector.component.ts:11-15
Timestamp: 2025-12-10T23:20:29.281Z
Learning: For Angular 19+ projects, standalone defaults to true for components, directives, and pipes when not explicitly declared. Therefore, components with an imports array in the Component decorator do not require an explicit standalone: true declaration to be standalone. In reviews, verify that a component without an explicit standalone flag and with an imports array will behave as a standalone component according to Angular 19+ defaults. If you need to enforce explicit standalone behavior for clarity or consistency, you can still add standalone: true, but it is not required by default in Angular 19+. Ensure this guidance is considered when reviewing any component.ts files across the codebase.
Applied to files:
apps/lfx-one/src/app/modules/committees/committee-manage/committee-manage.component.tsapps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.tsapps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts
🧬 Code graph analysis (2)
packages/shared/src/constants/committees.constants.ts (1)
packages/shared/src/constants/colors.constants.ts (1)
lfxColors(9-106)
apps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.ts (1)
packages/shared/src/constants/committees.constants.ts (1)
MEMBER_VISIBILITY_OPTIONS(437-440)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (1)
- GitHub Check: Agent
🔇 Additional comments (9)
packages/shared/src/enums/committee.enum.ts (1)
1-13: LGTM!The enum is well-documented with clear JSDoc comments, and the values align with the constants used throughout the codebase. The implementation follows TypeScript best practices.
packages/shared/src/constants/committees.constants.ts (1)
424-440: LGTM!The new committee settings feature and member visibility options are well-integrated:
- The
show_meeting_attendeesfeature follows the established pattern for committee features- The
MEMBER_VISIBILITY_OPTIONSvalues correctly align with theCommitteeMemberVisibilityenum- Proper JSDoc documentation is provided
apps/lfx-one/src/app/modules/committees/components/member-card/member-card.component.html (1)
41-48: LGTM!The LinkedIn profile section is well-implemented with proper security attributes (
rel="noopener noreferrer") for the external link, and follows the same styling pattern as the email section above it.packages/shared/src/enums/index.ts (1)
6-6: LGTM!The export correctly exposes the new
CommitteeMemberVisibilityenum, maintaining consistency with the existing barrel export pattern.apps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.html (1)
22-48: LGTM!The Member Visibility section is well-structured with proper data-testid attribute for testing, consistent styling with existing sections, and appropriate form binding.
packages/shared/src/interfaces/member.interface.ts (1)
27-28: LGTM!The
linkedin_profilefield is correctly added to both interfaces with appropriate types and documentation. The type difference betweenCommitteeMember(optional string) andCreateCommitteeMemberRequest(optional string or null) aligns with the existing pattern for other fields and correctly handles API contract requirements.Also applies to: 83-84
apps/lfx-one/src/app/modules/committees/committee-manage/committee-manage.component.ts (2)
382-383: LGTM!The form patching correctly handles the new fields with appropriate defaults (
'hidden'andfalse) when the values are not present in the existing committee data.
407-408: LGTM!The form control initialization uses sensible defaults that align with the patching logic and follow secure-by-default principles (member profiles hidden by default).
apps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.ts (1)
7-9: LGTM! Clean integration of member visibility options.The changes correctly import and expose the member visibility options from the shared constants package, and properly include the SelectComponent for the UI. The implementation follows Angular 19 patterns and maintains consistency with the existing codebase.
Also applies to: 13-13, 23-23
apps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.html
Show resolved
Hide resolved
apps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts
Outdated
Show resolved
Hide resolved
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull request overview
This PR adds two new features to committees: LinkedIn profile support for members and visibility/attendee settings for committees. The changes introduce a linkedin_profile field to member interfaces and forms, a new CommitteeMemberVisibility enum for controlling member profile visibility, and settings for member visibility and meeting attendee display.
Key Changes:
- Added LinkedIn profile URL field to committee members
- Introduced member visibility settings with 'hidden' and 'basic_profile' options
- Added toggle for showing/hiding meeting attendees
Reviewed changes
Copilot reviewed 11 out of 11 changed files in this pull request and generated 7 comments.
Show a summary per file
| File | Description |
|---|---|
| packages/shared/src/interfaces/member.interface.ts | Added linkedin_profile field to CommitteeMember and CreateCommitteeMemberRequest interfaces |
| packages/shared/src/interfaces/committee.interface.ts | Added member_visibility and show_meeting_attendees fields to Committee, CommitteeCreateData, and CommitteeSettingsData interfaces |
| packages/shared/src/enums/index.ts | Exported new committee enum module |
| packages/shared/src/enums/committee.enum.ts | Created new CommitteeMemberVisibility enum with HIDDEN and BASIC_PROFILE values |
| packages/shared/src/constants/committees.constants.ts | Added show_meeting_attendees feature and MEMBER_VISIBILITY_OPTIONS constant |
| apps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts | Added linkedin_profile to form controls, initialization, and submission logic |
| apps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.html | Added LinkedIn Profile input field to member form |
| apps/lfx-one/src/app/modules/committees/components/member-card/member-card.component.html | Added LinkedIn profile link display with icon |
| apps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.ts | Added SelectComponent import and memberVisibilityOptions property |
| apps/lfx-one/src/app/modules/committees/components/committee-settings/committee-settings.component.html | Added member visibility dropdown UI |
| apps/lfx-one/src/app/modules/committees/committee-manage/committee-manage.component.ts | Added member_visibility and show_meeting_attendees form controls with default values |
💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.
apps/lfx-one/src/app/modules/committees/components/member-card/member-card.component.html
Show resolved
Hide resolved
apps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts
Outdated
Show resolved
Hide resolved
apps/lfx-one/src/app/modules/committees/committee-manage/committee-manage.component.ts
Show resolved
Hide resolved
apps/lfx-one/src/app/modules/committees/components/member-form/member-form.component.ts
Outdated
Show resolved
Hide resolved
- Add data-testid to LinkedIn profile input for test targeting - Add URL validation to LinkedIn profile field - Use CommitteeMemberVisibility enum instead of string type LFXV2-906 LFXV2-907 Generated with [Claude Code](https://claude.com/claude-code) Signed-off-by: Asitha de Silva <[email protected]>
🧹 Deployment RemovedThe deployment for PR #209 has been removed. |
This pull request introduces two main enhancements: new committee settings for controlling member visibility and meeting attendee display, and the addition of LinkedIn profile support for committee members. These changes improve the flexibility of committee configuration and enrich member profiles.
Committee settings enhancements:
member_visibilityandshow_meeting_attendeesfields to committee interfaces (Committee,CommitteeCreateData,CommitteeSettingsData) and forms, allowing admins to control member profile visibility and whether meeting attendees are shown by default. Default values are set for these fields in the UI. [1] [2] [3] [4] [5]MEMBER_VISIBILITY_OPTIONSconstant. [1] [2] [3] [4]Member profile enhancements:
linkedin_profilefield in committee member interfaces and forms, with corresponding UI changes to allow input and display of LinkedIn profiles on member cards. [1] [2] [3] [4] [5] [6] [7]Supporting changes:
CommitteeMemberVisibilityenum and exported it for use throughout the application. [1] [2]COMMITTEE_SETTINGS_FEATURESconstant to include the new "Show Meeting Attendees" feature.