Skip to content

Conversation

@josefinalliende
Copy link
Collaborator

@josefinalliende josefinalliende commented Jan 23, 2026

Description

Type of Change

  • ✨ New feature (non-breaking change which adds functionality)
  • 🛠️ Bug fix (non-breaking change which fixes an issue)
  • ❌ Breaking change (fix or feature that would cause existing functionality to change)
  • 🧹 Code refactor
  • ✅ Build configuration change
  • 📝 Documentation
  • 🗑️ Chore
  • 🧪 Tests

Checklist

  • Run just precommit to ensure that formatting and linting are correct
  • Updated the CHANGELOG.md file with your changes (if they affect the user experience)

Summary by CodeRabbit

  • New Features

    • Dedicated message actions screen for managing reactions and deletions
    • Emoji picker for custom reaction selection
    • Nine new icon variants added (apple, bee_bat, building, face_satisfied, flag, hashtag, idea, running, time)
  • Refactor

    • Message menu component replaced with dedicated screen architecture for improved modularity

✏️ Tip: You can customize this high-level summary in your review settings.

@coderabbitai
Copy link

coderabbitai bot commented Jan 23, 2026

Walkthrough

This PR replaces the WnMessageMenu widget with a new MessageActionsScreen component featuring integrated emoji picker functionality. The change includes deleting the old message menu implementation, adding platform-specific emoji picker plugin registrations, and updating all references in code and tests to use the new screen component.

Changes

Cohort / File(s) Summary
Message Action UI Refactor
lib/screens/chat_screen.dart
Updated import and replaced WnMessageMenu.show() call with MessageActionsScreen.show(), maintaining same parameters and callbacks.
New Message Actions Screen
lib/screens/message_actions_screen.dart
New file introducing MessageActionsScreen HookWidget with static show() entry point and MessageActionsModal widget. Includes message bubble display, reaction emoji selection row, emoji picker with custom category bar and tabs, and conditional delete/reply buttons. Handles emoji selection, message deletion, and reaction posting with error handling.
Icon Variants
lib/widgets/wn_icon.dart
Added 9 new enum values to WnIcons: apple, beeBat, building, faceSatisfied, flag, hashtag, idea, running, time.
Message Menu Removal
lib/widgets/wn_message_menu.dart
Deleted entire file (294 lines) including WnMessageMenu widget, modal show() method, header, reactions row, reaction button, and emoji picker button components.
Emoji Picker Plugin Integration
pubspec.yaml, macos/Flutter/GeneratedPluginRegistrant.swift, linux/flutter/generated_plugin_registrant.cc, linux/flutter/generated_plugins.cmake, windows/flutter/generated_plugin_registrant.cc, windows/flutter/generated_plugins.cmake
Added emoji_picker_flutter: ^4.4.0 dependency and registered plugin across macOS, Linux, and Windows platforms via native build configuration files.
Test Updates
test/screens/chat_screen_test.dart, test/screens/message_actions_screen_test.dart
Updated test imports, group names, and UI component references from WnMessageMenu to MessageActionsScreen/MessageActionsModal. Added onEmojiPicker callback parameter to test fixtures and new emoji picker interaction tests.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~25 minutes

Possibly related PRs

  • Feat/reactions #60 — Implements reaction support in WnMessageMenu/WnMessageBubble and MessageService with onReaction/sendReaction handlers; this PR replaces that implementation with the new MessageActionsScreen.
  • Delete chat messages #49 — Previously added WnMessageMenu component wired in chat_screen; this PR removes it entirely and introduces the replacement MessageActionsScreen implementation.

Suggested reviewers

  • erskingardner
  • untreu2
🚥 Pre-merge checks | ✅ 2 | ❌ 1
❌ Failed checks (1 warning)
Check name Status Explanation Resolution
Docstring Coverage ⚠️ Warning Docstring coverage is 0.00% which is insufficient. The required threshold is 80.00%. Write docstrings for the functions missing them to satisfy the coverage threshold.
✅ Passed checks (2 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title 'Feat/emoji picker' accurately reflects the main feature being added: an emoji picker component integrated into the message actions flow.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing touches
  • 📝 Generate docstrings

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@github-actions
Copy link

❌ Coverage: 99.6% → 97.85% (-1.75%)

Copy link

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 1

🤖 Fix all issues with AI agents
In `@lib/screens/message_actions_screen.dart`:
- Around line 64-118: The Delete button is currently shown for own messages even
when the optional onDelete callback is null; update the prop passed to
MessageActionsModal so onDelete is only provided when both isOwnMessage and
onDelete != null (i.e., change the onDelete argument from onDelete: isOwnMessage
? handleDelete : null to onDelete: (isOwnMessage && onDelete != null) ?
handleDelete : null) so the modal only renders a delete action when a real
handler exists; ensure references are to the existing handleDelete function and
the MessageActionsModal's onDelete prop.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants