Skip to content

Commit 7b0ec08

Browse files
committed
Merge branch 'expo-audio' of https://github.com/RocketChat/Rocket.Chat.ReactNative into expo-audio
2 parents fa95705 + 838c45e commit 7b0ec08

135 files changed

Lines changed: 1649 additions & 779 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/README.md

Lines changed: 93 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,93 @@
1+
# CI workflows
2+
3+
Maps which event triggers which workflow and how they call each other.
4+
5+
## Entrypoints
6+
7+
| Workflow | Trigger | What runs |
8+
|---|---|---|
9+
| [build-pr.yml](workflows/build-pr.yml) | `pull_request` (all branches) | ESLint + tests, PR changelog, Android + iOS store builds (gated), E2E build + Maestro shards on both platforms (gated) |
10+
| [build-develop.yml](workflows/build-develop.yml) | `push: develop` | ESLint + tests, release changelog, Android + iOS store builds, seeds Android AVD + SDK caches for E2E shards |
11+
| [prettier.yml](workflows/prettier.yml) | `push: * except master, develop, single-server` (main repo) | Auto-formats with Prettier + ESLint and commits any fixes back to the branch |
12+
| [organize_translations.yml](workflows/organize_translations.yml) | `push` touching `app/i18n/locales/**.json` | Sorts JSON keys and commits the result |
13+
14+
## Call graph
15+
16+
```mermaid
17+
flowchart TD
18+
classDef entry fill:#d4e6f1,stroke:#2980b9
19+
classDef reusable fill:#d5f5e3,stroke:#27ae60
20+
classDef action fill:#fef9e7,stroke:#f39c12
21+
22+
PR([build-pr.yml]):::entry
23+
DEV([build-develop.yml]):::entry
24+
PRET([prettier.yml]):::entry
25+
TRANS([organize_translations.yml]):::entry
26+
27+
ESLINT[eslint.yml]:::reusable
28+
CHANGELOG[generate-changelog.yml]:::reusable
29+
BUILDAND[build-android.yml]:::reusable
30+
BUILDIOS[build-ios.yml]:::reusable
31+
E2EAND[e2e-build-android.yml]:::reusable
32+
E2EIOS[e2e-build-ios.yml]:::reusable
33+
MASTAND[maestro-android.yml]:::reusable
34+
MASIOS[maestro-ios.yml]:::reusable
35+
36+
SN[setup-node]:::action
37+
FSV[fetch-supported-versions]:::action
38+
GBV[generate-build-version]:::action
39+
AACT[build-android action]:::action
40+
IACT[build-ios action]:::action
41+
UAND[upload-android]:::action
42+
UIAND[upload-internal-android]:::action
43+
UIOS[upload-ios]:::action
44+
PREAND[preinstall-android-sdk]:::action
45+
E2EACC[e2e-account]:::action
46+
47+
PR --> ESLINT
48+
PR --> BUILDAND
49+
PR --> BUILDIOS
50+
PR --> E2EAND
51+
PR --> E2EIOS
52+
PR --> MASTAND
53+
PR --> MASIOS
54+
55+
DEV --> ESLINT
56+
DEV --> CHANGELOG
57+
DEV --> BUILDAND
58+
DEV --> BUILDIOS
59+
60+
PRET --> SN
61+
62+
ESLINT --> SN
63+
64+
BUILDAND --> SN
65+
BUILDAND --> FSV
66+
BUILDAND --> GBV
67+
BUILDAND --> AACT
68+
BUILDAND --> UAND
69+
BUILDAND --> UIAND
70+
71+
BUILDIOS --> SN
72+
BUILDIOS --> FSV
73+
BUILDIOS --> GBV
74+
BUILDIOS --> IACT
75+
BUILDIOS --> UIOS
76+
77+
E2EAND --> SN
78+
E2EIOS --> SN
79+
80+
MASTAND --> PREAND
81+
MASTAND --> E2EACC
82+
83+
MASIOS --> E2EACC
84+
```
85+
86+
## Manual gates
87+
88+
| Environment | Workflow / job | Fires when |
89+
|---|---|---|
90+
| `android_build` | [build-android.yml](workflows/build-android.yml)`build-hold` | Called with `trigger == pr` (i.e. from `build-pr.yml`) |
91+
| `upload_android` | [build-android.yml](workflows/build-android.yml)`upload-hold` | Called with `trigger == pr`, after the Android build completes |
92+
| `ios_build` | [build-ios.yml](workflows/build-ios.yml)`build-hold` | Called with `trigger == pr` (i.e. from `build-pr.yml`) |
93+
| `approve_e2e_testing` | [build-pr.yml](workflows/build-pr.yml)`e2e-hold` | Every `pull_request` run |

.github/actions/build-android/action.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -49,9 +49,11 @@ runs:
4949
echo -e "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8" >> ./gradle.properties
5050
echo -e "android.useAndroidX=true" >> ./gradle.properties
5151
echo -e "android.enableJetifier=true" >> ./gradle.properties
52+
echo -e "android.jetifier.ignorelist=bcprov-jdk18on" >> ./gradle.properties
5253
echo -e "reactNativeArchitectures=armeabi-v7a,arm64-v8a,x86,x86_64" >> ./gradle.properties
5354
echo -e "newArchEnabled=true" >> ./gradle.properties
5455
echo -e "hermesEnabled=true" >> ./gradle.properties
56+
echo -e "edgeToEdgeEnabled=true" >> ./gradle.properties
5557
echo -e "VERSIONCODE=${{ inputs.BUILD_VERSION }}" >> ./gradle.properties
5658
echo -e "APPLICATION_ID=chat.rocket.android" >> ./gradle.properties
5759
echo -e "BugsnagAPIKey=${{ inputs.BUGSNAG_KEY_OFFICIAL }}" >> ./gradle.properties

.github/actions/setup-node/action.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ runs:
99

1010
- uses: actions/setup-node@49933ea5288caeca8642d1e84afbd3f7d6820020 # v4.4.0
1111
with:
12-
node-version: 'lts/*'
12+
node-version-file: 'package.json'
1313
cache: 'pnpm'
1414

1515
- name: Install JS dependencies

.github/workflows/e2e-build-android.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -101,10 +101,12 @@ jobs:
101101
echo -e "org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8" >> ./gradle.properties
102102
echo -e "android.useAndroidX=true" >> ./gradle.properties
103103
echo -e "android.enableJetifier=true" >> ./gradle.properties
104-
echo -e "reactNativeArchitectures=x86_64" >> ./gradle.properties
104+
echo -e "android.jetifier.ignorelist=bcprov-jdk18on" >> ./gradle.properties
105+
echo -e "reactNativeArchitectures=arm64-v8a,x86_64" >> ./gradle.properties
105106
echo -e "APPLICATION_ID=chat.rocket.android" >> ./gradle.properties
106107
echo -e "newArchEnabled=true" >> ./gradle.properties
107108
echo -e "hermesEnabled=true" >> ./gradle.properties
109+
echo -e "edgeToEdgeEnabled=true" >> ./gradle.properties
108110
echo -e "VERSIONCODE=999999" >> ./gradle.properties
109111
echo -e "KEYSTORE=release.keystore" >> ./gradle.properties
110112
echo -e 'KEYSTORE_PASSWORD=${{ secrets.KEYSTORE_OFFICIAL_PASSWORD }}' >> ./gradle.properties

.maestro/tests/room/ignoreuser.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -84,6 +84,12 @@ tags:
8484
ROOM: ${output.room.name}
8585
- evalScript: ${output.utils.sendMessage(output.otherUser.username, output.otherUser.password, output.room._id, 'message-01')}
8686
- evalScript: ${output.utils.sendMessage(output.otherUser.username, output.otherUser.password, output.room._id, 'message-02')}
87+
# wait for the last message to render before tapping the header, otherwise the list
88+
# is still regrouping rows and the press gets cancelled mid-gesture
89+
- extendedWaitUntil:
90+
visible:
91+
id: 'message-content-message-02'
92+
timeout: 60000
8793
- extendedWaitUntil:
8894
visible:
8995
id: 'username-header-${output.otherUser.username}'

.maestro/tests/room/message-markdown-click.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,7 @@ tags:
7878
platform: iOS
7979
commands:
8080
- tapOn:
81-
point: 66%,66%
81+
point: 66%,63%
8282

8383
# Verify alert is shown with the link
8484
- extendedWaitUntil:
@@ -106,7 +106,7 @@ tags:
106106
platform: iOS
107107
commands:
108108
- longPressOn:
109-
point: 66%,66%
109+
point: 66%,63%
110110

111111
# Verify clipboard has the link alert
112112
- extendedWaitUntil:

CLAUDE.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -95,3 +95,7 @@ pnpm storybook-generate # Generate story snapshots
9595
- `index.js` — registers app, conditionally loads Storybook
9696
- `app/index.tsx` — Redux provider, theme, navigation, notifications setup
9797
- `app/AppContainer.tsx` — root navigation container
98+
99+
## Continuous Integration
100+
101+
CI triggers, call graph, and manual gates: see `.github/README.md`.

android/app/build.gradle

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -90,11 +90,19 @@ android {
9090
minSdkVersion rootProject.ext.minSdkVersion
9191
targetSdkVersion rootProject.ext.targetSdkVersion
9292
versionCode VERSIONCODE as Integer
93-
versionName "4.74.0"
93+
versionName "4.75.0"
9494
vectorDrawables.useSupportLibrary = true
9595
manifestPlaceholders = [BugsnagAPIKey: BugsnagAPIKey as String]
9696
}
9797

98+
packaging {
99+
resources {
100+
// bcprov-jdk18on and its transitive jspecify both ship this OSGi bundle
101+
// manifest inside their multi-release jars; it is unused on Android.
102+
excludes += ["META-INF/versions/9/OSGI-INF/MANIFEST.MF"]
103+
}
104+
}
105+
98106
signingConfigs {
99107
release {
100108
v1SigningEnabled false

android/app/src/main/res/values/styles.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
<item name="android:colorEdgeEffect">#aaaaaa</item>
44
<item name="android:forceDarkAllowed">false</item>
55
<item name="android:editTextBackground">@drawable/rn_edit_text_material</item>
6+
<item name="android:enforceNavigationBarContrast">false</item>
67
</style>
78

89
<style name="BootTheme" parent="Theme.BootSplash">
@@ -11,6 +12,7 @@
1112
<item name="postBootSplashTheme">@style/AppTheme</item>
1213
<item name="android:statusBarColor">@android:color/transparent</item>
1314
<item name="android:navigationBarColor">@android:color/transparent</item>
15+
<item name="android:enforceNavigationBarContrast">false</item>
1416
</style>
1517

1618
<!-- https://github.com/facebook/react-native/blob/d1ab03235cb4b93304150878d2b9057ab45bba77/ReactAndroid/src/main/res/views/modal/values/themes.xml#L5 -->

android/gradle.properties

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,9 @@ org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g -Dfile.encoding=UTF-8
2121
android.useAndroidX=true
2222
# Automatically convert third-party libraries to use AndroidX
2323
android.enableJetifier=true
24+
# Skip Jetifier for BouncyCastle: it is AndroidX-clean and ships Java 25 multi-release
25+
# classes that Jetifier's bundled ASM cannot parse (unsupported class file major version 69)
26+
android.jetifier.ignorelist=bcprov-jdk18on
2427

2528
# Use this property to specify which architecture you want to build.
2629
# You can also override it from the CLI using
@@ -48,4 +51,4 @@ hermesEnabled=true
4851
# Use this property to enable edge-to-edge display support.
4952
# This allows your app to draw behind system bars for an immersive UI.
5053
# Note: Only works with ReactActivity and should not be used with custom Activity.
51-
edgeToEdgeEnabled=false
54+
edgeToEdgeEnabled=true

0 commit comments

Comments
 (0)