Conversation
|
No actionable comments were generated in the recent review. 🎉 ℹ️ Recent review info⚙️ Run configurationConfiguration used: Organization UI Review profile: CHILL Plan: Pro Run ID: 📒 Files selected for processing (5)
✅ Files skipped from review due to trivial changes (4)
🚧 Files skipped from review as they are similar to previous changes (1)
📜 Recent review details⏰ 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)
WalkthroughBumps app version from 4.70.1 to 4.71.1 across Android, iOS, and package.json; updates Changes
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~20 minutes 🚥 Pre-merge checks | ✅ 3✅ Passed checks (3 passed)
✏️ Tip: You can configure your own custom pre-merge checks in the settings. 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. Comment |
There was a problem hiding this comment.
🧹 Nitpick comments (1)
app/containers/MessageComposer/components/Buttons/ActionsButton.tsx (1)
57-59: Extract the repeated550msdelay into a shared helper/constant.At Line 59, Line 70, and Line 81, the same timeout value is duplicated. Centralizing this avoids drift and makes future tuning safer.
♻️ Suggested refactor
+import { Platform } from 'react-native'; import React, { useContext } from 'react'; @@ export const ActionsButton = () => { 'use memo'; + const MEDIA_ACTION_DELAY_MS = Platform.OS === 'android' ? 550 : 0; @@ + const runAfterActionSheetClose = (callback: () => void) => { + hideActionSheet(); + setTimeout(callback, MEDIA_ACTION_DELAY_MS); + }; @@ onPress: () => { - hideActionSheet(); - // This is necessary because the action sheet does not close properly on Android - setTimeout(() => { - takePhoto(); - }, 550); + runAfterActionSheetClose(takePhoto); } @@ onPress: () => { - hideActionSheet(); - // This is necessary because the action sheet does not close properly on Android - setTimeout(() => { - takeVideo(); - }, 550); + runAfterActionSheetClose(takeVideo); } @@ onPress: () => { - hideActionSheet(); - // This is necessary because the action sheet does not close properly on Android - setTimeout(() => { - chooseFromLibrary(); - }, 550); + runAfterActionSheetClose(chooseFromLibrary); }Also applies to: 68-70, 79-81
🤖 Prompt for AI Agents
Verify each finding against the current code and only fix it if needed. In `@app/containers/MessageComposer/components/Buttons/ActionsButton.tsx` around lines 57 - 59, Extract the repeated 550ms magic number into a shared constant and use it for all setTimeout calls in ActionsButton.tsx; specifically, define a descriptive constant (e.g., PHOTO_CAPTURE_DELAY_MS) at the top of the component/module and replace the inline 550 values used in the setTimeout calls that invoke takePhoto() (and any other timeouts in this file) with that constant so all delays are centralized and easy to adjust.
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Nitpick comments:
In `@app/containers/MessageComposer/components/Buttons/ActionsButton.tsx`:
- Around line 57-59: Extract the repeated 550ms magic number into a shared
constant and use it for all setTimeout calls in ActionsButton.tsx; specifically,
define a descriptive constant (e.g., PHOTO_CAPTURE_DELAY_MS) at the top of the
component/module and replace the inline 550 values used in the setTimeout calls
that invoke takePhoto() (and any other timeouts in this file) with that constant
so all delays are centralized and easy to adjust.
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 9ec38554-b8cf-428d-b5e6-3bb3c81de732
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (6)
android/app/build.gradleapp/containers/MessageComposer/components/Buttons/ActionsButton.tsxios/RocketChatRN.xcodeproj/project.pbxprojios/RocketChatRN/Info.plistios/ShareRocketChatRN/Info.plistpackage.json
📜 Review details
🧰 Additional context used
🧠 Learnings (4)
📚 Learning: 2026-03-31T11:59:31.061Z
Learnt from: Rohit3523
Repo: RocketChat/Rocket.Chat.ReactNative PR: 6875
File: android/build.gradle:3-8
Timestamp: 2026-03-31T11:59:31.061Z
Learning: In the RocketChat/Rocket.Chat.ReactNative repository, the React Native upgrade helper (https://react-native-community.github.io/upgrade-helper/?from=0.79.4&to=0.81.5) recommends kotlinVersion = "2.1.20", compileSdkVersion = 36, targetSdkVersion = 36, and buildToolsVersion = "36.0.0" in android/build.gradle for the RN 0.79.4 → 0.81.5 upgrade. These are the sanctioned values for this upgrade path and should not be flagged as compatibility concerns.
Applied to files:
android/app/build.gradlepackage.jsonios/RocketChatRN.xcodeproj/project.pbxproj
📚 Learning: 2026-03-31T11:58:54.608Z
Learnt from: Rohit3523
Repo: RocketChat/Rocket.Chat.ReactNative PR: 6875
File: android/gradle/wrapper/gradle-wrapper.properties:3-3
Timestamp: 2026-03-31T11:58:54.608Z
Learning: In the RocketChat/Rocket.Chat.ReactNative repository, the React Native upgrade helper (https://react-native-community.github.io/upgrade-helper/) recommends gradle-8.14.3-bin for the React Native 0.79.4 → 0.81.5 upgrade. This is the sanctioned Gradle version for RN 0.81.5 even though it is above Kotlin 2.1.20's "fully supported" Gradle range (≤8.11); Kotlin 2.1.20 docs explicitly allow using newer Gradle versions with a caveat that deprecation warnings may appear.
Applied to files:
android/app/build.gradlepackage.json
📚 Learning: 2026-02-05T13:55:00.974Z
Learnt from: Rohit3523
Repo: RocketChat/Rocket.Chat.ReactNative PR: 6930
File: package.json:101-101
Timestamp: 2026-02-05T13:55:00.974Z
Learning: In this repository, the dependency on react-native-image-crop-picker should reference the RocketChat fork (RocketChat/react-native-image-crop-picker) with explicit commit pins, not the upstream ivpusic/react-native-image-crop-picker. Update package.json dependencies (and any lockfile) to point to the fork URL and a specific commit, ensuring edge-to-edge Android fixes are included. This pattern should apply to all package.json files in the repo that declare this dependency.
Applied to files:
package.json
📚 Learning: 2026-03-30T15:49:30.957Z
Learnt from: Rohit3523
Repo: RocketChat/Rocket.Chat.ReactNative PR: 6875
File: app/containers/RoomItem/Actions.tsx:12-12
Timestamp: 2026-03-30T15:49:30.957Z
Learning: In RocketChat/Rocket.Chat.ReactNative, `react-native-worklets` version 0.6.1 does NOT export a built-in Jest mock (e.g., no `react-native-worklets/lib/module/mock`). The correct Jest mock approach for this version is to add a manual mock in `jest.setup.js`: `jest.mock('react-native-worklets', () => ({ scheduleOnRN: jest.fn((fn, ...args) => fn(...args)) }))`.
Applied to files:
package.json
🔇 Additional comments (6)
ios/RocketChatRN.xcodeproj/project.pbxproj (1)
2938-2938: NotificationService marketing version bump is consistent.Both configurations were updated to
4.71.1, which keeps Debug/Release in sync for the extension target.Also applies to: 2991-2991
ios/ShareRocketChatRN/Info.plist (1)
29-29: Share extension short version update looks good.
CFBundleShortVersionStringis correctly bumped to4.71.1.android/app/build.gradle (1)
93-93: Android versionName bump is correct and minimal.
versionNameis updated cleanly to4.71.1without unrelated build config churn.ios/RocketChatRN/Info.plist (1)
31-31: Main iOS short version update is good.
CFBundleShortVersionStringis correctly set to4.71.1.package.json (2)
3-3: Package version bump is aligned with the release patch.
versionupdated to4.71.1is correct.
54-54: axios 0.30.3 is correctly resolved and has no compatibility concerns in this codebase.The lockfile properly resolves to version 0.30.3. The only axios usage in the codebase is a simple
axios.head()call inapp/containers/message/Urls.tsx, which is unaffected by this release. Version 0.30.3 is a security-only patch addressing a proto key DoS vulnerability—it introduces no changes to HEAD request handling or cancellation APIs. No legacy cancellation token patterns (CancelToken, isCancel) exist in the code, eliminating that concern entirely.
6215a1b to
08eab9e
Compare
There was a problem hiding this comment.
Actionable comments posted: 2
🤖 Prompt for all review comments with AI agents
Verify each finding against the current code and only fix it if needed.
Inline comments:
In `@ios/RocketChatRN/Info.plist`:
- Around line 30-33: Remove the orphaned value entry "<string>????</string>"
that remains after removing the deprecated CFBundleSignature key so the plist is
well-formed; look for the CFBundleShortVersionString/CFBundleURLTypes block and
delete the stray <string>????</string> line (no replacement) to restore valid
key/value pairing in Info.plist.
In `@ios/ShareRocketChatRN/Info.plist`:
- Around line 28-31: The plist contains an orphaned <string>1</string> between
CFBundleShortVersionString and KeychainGroup and has removed the required
CFBundleVersion; remove the stray standalone <string>1</string> and restore a
CFBundleVersion entry (e.g. add a <key>CFBundleVersion</key> with a
<string>$(CURRENT_PROJECT_VERSION)</string>) so the extension has a proper build
number; check around CFBundleShortVersionString and KeychainGroup to insert the
CFBundleVersion key/value in the same style as the main app's Info.plist.
🪄 Autofix (Beta)
Fix all unresolved CodeRabbit comments on this PR:
- Push a commit to this branch (recommended)
- Create a new PR with the fixes
ℹ️ Review info
⚙️ Run configuration
Configuration used: Organization UI
Review profile: CHILL
Plan: Pro
Run ID: 4faa66e2-2f8b-4344-a544-b263ea02977f
⛔ Files ignored due to path filters (1)
yarn.lockis excluded by!**/yarn.lock,!**/*.lock
📒 Files selected for processing (6)
android/app/build.gradleapp/containers/MessageComposer/components/Buttons/ActionsButton.tsxios/RocketChatRN.xcodeproj/project.pbxprojios/RocketChatRN/Info.plistios/ShareRocketChatRN/Info.plistpackage.json
✅ Files skipped from review due to trivial changes (2)
- android/app/build.gradle
- ios/RocketChatRN.xcodeproj/project.pbxproj
🚧 Files skipped from review as they are similar to previous changes (2)
- app/containers/MessageComposer/components/Buttons/ActionsButton.tsx
- package.json
📜 Review details
⏰ 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). (2)
- GitHub Check: ESLint and Test / run-eslint-and-test
- GitHub Check: format
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2026-03-31T11:59:31.061Z
Learnt from: Rohit3523
Repo: RocketChat/Rocket.Chat.ReactNative PR: 6875
File: android/build.gradle:3-8
Timestamp: 2026-03-31T11:59:31.061Z
Learning: In the RocketChat/Rocket.Chat.ReactNative repository, the React Native upgrade helper (https://react-native-community.github.io/upgrade-helper/?from=0.79.4&to=0.81.5) recommends kotlinVersion = "2.1.20", compileSdkVersion = 36, targetSdkVersion = 36, and buildToolsVersion = "36.0.0" in android/build.gradle for the RN 0.79.4 → 0.81.5 upgrade. These are the sanctioned values for this upgrade path and should not be flagged as compatibility concerns.
Applied to files:
ios/ShareRocketChatRN/Info.plist
08eab9e to
dc7a300
Compare
|
Android Build Available Rocket.Chat 4.71.1.108464 Internal App Sharing: https://play.google.com/apps/test/RQQ8k09hlnQ/ahAO29uNTn5-Onr1fANim-6iHYHJx3sN3ptkVx41kZOfoy5anWfDnkutYP4sUXHcYszg0SWERyOLr_6YilFYLz9PSt |
|
Android Build Available Rocket.Chat 4.71.1.108464 |
|
iOS Build Available Rocket.Chat 4.71.1.108465 |
Proposed changes
Issue(s)
How to test or reproduce
Screenshots
Types of changes
Checklist
Further comments
Summary by CodeRabbit
Bug Fixes
Chores