-
Notifications
You must be signed in to change notification settings - Fork 302
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
Communication
: Fix user interface reload on channel selection
#9464
Communication
: Fix user interface reload on channel selection
#9464
Conversation
WalkthroughThe changes in this pull request involve modifications to the Changes
Possibly related PRs
Suggested labels
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? 🪧 TipsChatThere are 3 ways to chat with CodeRabbit:
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)
Other keywords and placeholders
Documentation and Community
|
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.yaml
Review profile: ASSERTIVE
📒 Files selected for processing (3)
- src/main/webapp/app/overview/course-conversations/course-conversations.component.ts (1 hunks)
- src/main/webapp/app/overview/course-conversations/layout/conversation-messages/conversation-messages.component.html (1 hunks)
- src/main/webapp/app/overview/course-conversations/layout/conversation-messages/conversation-messages.component.scss (1 hunks)
🧰 Additional context used
📓 Path-based instructions (2)
src/main/webapp/app/overview/course-conversations/course-conversations.component.ts (1)
🔇 Additional comments (4)
src/main/webapp/app/overview/course-conversations/layout/conversation-messages/conversation-messages.component.html (2)
70-70
: LGTM: Enhanced visual feedback for fetching postsThe addition of the 'is-fetching-posts' class to the ngClass directive aligns well with the PR objective of improving UI feedback during post fetching. This change enhances the user experience by providing visual indication when new posts are being loaded, addressing the issue of disruptive UI reloads mentioned in the PR summary.
70-72
: Summary: Changes align well with PR objectivesThe modifications to the conversation-messages component template effectively address the PR's main objective of improving UI feedback during post fetching. The addition of the 'is-fetching-posts' class and the new 'conversation-messages-message-list' class contribute to a more responsive and less disruptive user experience when switching between communication channels.
These changes:
- Provide visual feedback during post fetching, reducing the perception of UI reloads.
- Maintain the overall structure and functionality of the component.
- Adhere to performance and design guidelines as mentioned in the PR checklist.
The implementation appears to be a solid solution to the issue described in #9413.
src/main/webapp/app/overview/course-conversations/course-conversations.component.ts (2)
Line range hint
1-424
: Monitor the impact of removingsubscribeToLoading
The removal of the
subscribeToLoading
method simplifies the component by reducing the number of subscriptions. However, this change also removes the ability to react to loading state changes from theMetisConversationService
.To ensure this change doesn't negatively impact the user experience:
- Monitor the application's behavior in scenarios where the
MetisConversationService
might have prolonged loading states.- Verify that all necessary loading indicators are still functioning correctly throughout the application.
If issues arise, consider reintroducing a more targeted subscription to loading states or implementing a service-wide loading state that components can observe.
🧰 Tools
🪛 Biome
[error] 161-161: Forbidden non-null assertion.
(lint/style/noNonNullAssertion)
Line range hint
1-424
: Overall, changes align well with PR objectivesThe modifications in this file successfully address the issue of UI reloading on channel selection, as outlined in the PR objectives. The removal of the
subscribeToLoading
method and the simplified loading state management inngOnInit
contribute to a more streamlined approach, potentially reducing unnecessary UI updates.Key points:
- The changes maintain good Angular practices and coding standards.
- The use of observables and Angular's change detection mechanism remains appropriate.
- The code structure continues to exhibit a clear separation of concerns.
While the changes appear to meet the PR objectives, consider the following to ensure a smooth transition:
- Thoroughly test the application to verify that loading indicators behave as expected across different scenarios.
- Monitor performance metrics to confirm that the changes indeed result in a less disruptive user experience, especially when dealing with large datasets.
- Update any relevant documentation or comments to reflect the new loading state management approach.
🧰 Tools
🪛 Biome
[error] 161-161: Forbidden non-null assertion.
(lint/style/noNonNullAssertion)
Checklist
General
Client
Motivation and Context
Addresses #9413
Within the communication module, when you select a channel, and then change the channel to another it causes the entire UI to reload. This causes a jumpy UI which looks irritating.
Description
The module is loaded within a
jhi-loading-indicator-container
, which triggers the loading state whenever the Metis service begins fetching posts, causing the loading indicator to appear and the UI to disappear. I removed the loading subscription to the Metis service and instead set the loading state to true when the module is initially loaded. Each component within the module has its own loading indicators, which should be sufficient.Steps for Testing
Prerequisites:
Testserver States
Note
These badges show the state of the test servers.
Green = Currently available, Red = Currently locked
Click on the badges to get to the test servers.
Review Progress
Performance Review
Code Review
Manual Tests
Exam Mode Test
Performance Tests
Test Coverage
Screenshots
Summary by CodeRabbit
New Features
Bug Fixes