Skip to content

Commit 4f42f2a

Browse files
committed
Merge branch 'main' of https://github.com/Expensify/App into feat/#Expensify#23229-linking
2 parents 319bd9c + 56eda28 commit 4f42f2a

File tree

181 files changed

+4154
-2204
lines changed

Some content is hidden

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

181 files changed

+4154
-2204
lines changed

.eslintrc.js

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ module.exports = {
3838
{
3939
files: ['*.js', '*.jsx', '*.ts', '*.tsx'],
4040
rules: {
41+
'rulesdir/no-multiple-onyx-in-file': 'off',
4142
'rulesdir/onyx-props-must-have-default': 'off',
4243
'react-native-a11y/has-accessibility-hint': ['off'],
4344
'react-native-a11y/has-valid-accessibility-descriptors': [
@@ -163,6 +164,7 @@ module.exports = {
163164
},
164165
],
165166
curly: 'error',
167+
'you-dont-need-lodash-underscore/throttle': 'off',
166168
},
167169
},
168170
{
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,11 @@
1-
name: "Setup Git for OSBotify"
2-
description: "Setup Git for OSBotify"
1+
name: 'Setup Git for OSBotify'
2+
description: 'Setup Git for OSBotify'
33

44
inputs:
55
GPG_PASSPHRASE:
6-
description: "Passphrase used to decrypt GPG key"
7-
required: true
8-
OS_BOTIFY_APP_ID:
9-
description: "Application ID for OS Botify"
10-
required: true
11-
OS_BOTIFY_PRIVATE_KEY:
12-
description: "OS Botify's private key"
6+
description: 'Passphrase used to decrypt GPG key'
137
required: true
148

15-
outputs:
16-
# Do not try to use this for committing code. Use `secrets.OS_BOTIFY_COMMIT_TOKEN` instead
17-
OS_BOTIFY_API_TOKEN:
18-
description: Token to use for GitHub API interactions.
19-
value: ${{ steps.generateToken.outputs.token }}
20-
219
runs:
2210
using: composite
2311
steps:
@@ -41,10 +29,3 @@ runs:
4129
shell: bash
4230
if: runner.debug == '1'
4331
run: echo "GIT_TRACE=true" >> "$GITHUB_ENV"
44-
45-
- name: Generate a token
46-
id: generateToken
47-
uses: tibdex/github-app-token@3beb63f4bd073e61482598c45c71c1019b59b73a
48-
with:
49-
app_id: ${{ inputs.OS_BOTIFY_APP_ID }}
50-
private_key: ${{ inputs.OS_BOTIFY_PRIVATE_KEY }}

.github/workflows/cherryPick.yml

+2-4
Original file line numberDiff line numberDiff line change
@@ -44,14 +44,12 @@ jobs:
4444
uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
4545
with:
4646
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
47-
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
48-
OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
4947

5048
- name: Get previous app version
5149
id: getPreviousVersion
5250
uses: Expensify/App/.github/actions/javascript/getPreviousVersion@main
5351
with:
54-
SEMVER_LEVEL: "PATCH"
52+
SEMVER_LEVEL: 'PATCH'
5553

5654
- name: Fetch history of relevant refs
5755
run: |
@@ -121,7 +119,7 @@ jobs:
121119
env:
122120
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
123121

124-
- name: "Announces a CP failure in the #announce Slack room"
122+
- name: 'Announces a CP failure in the #announce Slack room'
125123
uses: 8398a7/action-slack@v3
126124
if: ${{ failure() }}
127125
with:

.github/workflows/createNewVersion.yml

+6-17
Original file line numberDiff line numberDiff line change
@@ -26,18 +26,12 @@ on:
2626
LARGE_SECRET_PASSPHRASE:
2727
description: Passphrase used to decrypt GPG key
2828
required: true
29+
OS_BOTIFY_TOKEN:
30+
description: Token for the OSBotify user
31+
required: true
2932
SLACK_WEBHOOK:
3033
description: Webhook used to comment in slack
3134
required: true
32-
OS_BOTIFY_COMMIT_TOKEN:
33-
description: OSBotify personal access token, used to workaround committing to protected branch
34-
required: true
35-
OS_BOTIFY_APP_ID:
36-
description: Application ID for OS Botify App
37-
required: true
38-
OS_BOTIFY_PRIVATE_KEY:
39-
description: OSBotify private key
40-
required: true
4135

4236
jobs:
4337
validateActor:
@@ -49,7 +43,7 @@ jobs:
4943
id: getUserPermissions
5044
run: echo "PERMISSION=$(gh api /repos/${{ github.repository }}/collaborators/${{ github.actor }}/permission | jq -r '.permission')" >> "$GITHUB_OUTPUT"
5145
env:
52-
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_COMMIT_TOKEN }}
46+
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
5347

5448
createNewVersion:
5549
runs-on: macos-latest
@@ -71,23 +65,18 @@ jobs:
7165
uses: actions/checkout@v3
7266
with:
7367
ref: main
74-
# The OS_BOTIFY_COMMIT_TOKEN is a personal access token tied to osbotify
75-
# This is a workaround to allow pushes to a protected branch
76-
token: ${{ secrets.OS_BOTIFY_COMMIT_TOKEN }}
68+
token: ${{ secrets.OS_BOTIFY_TOKEN }}
7769

7870
- name: Setup git for OSBotify
7971
uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
80-
id: setupGitForOSBotify
8172
with:
8273
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
83-
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
84-
OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
8574

8675
- name: Generate version
8776
id: bumpVersion
8877
uses: Expensify/App/.github/actions/javascript/bumpVersion@main
8978
with:
90-
GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
79+
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
9180
SEMVER_LEVEL: ${{ inputs.SEMVER_LEVEL }}
9281

9382
- name: Commit new version

.github/workflows/deploy.yml

+9-19
Original file line numberDiff line numberDiff line change
@@ -9,18 +9,16 @@ jobs:
99
runs-on: ubuntu-latest
1010
if: github.ref == 'refs/heads/staging'
1111
steps:
12-
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
13-
id: setupGitForOSBotify
14-
with:
15-
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
16-
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
17-
OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
18-
1912
- name: Checkout staging branch
2013
uses: actions/checkout@93ea575cb5d8a053eaa0ac8fa3b40d7e05a33cc8
2114
with:
2215
ref: staging
23-
token: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
16+
token: ${{ secrets.OS_BOTIFY_TOKEN }}
17+
18+
- name: Setup git for OSBotify
19+
uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
20+
with:
21+
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
2422

2523
- name: Tag version
2624
run: git tag "$(npm run print-version --silent)"
@@ -32,19 +30,11 @@ jobs:
3230
runs-on: ubuntu-latest
3331
if: github.ref == 'refs/heads/production'
3432
steps:
35-
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
36-
id: setupGitForOSBotify
37-
with:
38-
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
39-
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
40-
OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
41-
42-
- uses: actions/checkout@v3
4333
- name: Checkout
4434
uses: actions/checkout@v3
4535
with:
4636
ref: production
47-
token: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
37+
token: ${{ secrets.OS_BOTIFY_TOKEN }}
4838

4939
- name: Setup git for OSBotify
5040
uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
@@ -59,7 +49,7 @@ jobs:
5949
uses: Expensify/App/.github/actions/javascript/getDeployPullRequestList@main
6050
with:
6151
TAG: ${{ env.PRODUCTION_VERSION }}
62-
GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
52+
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
6353
IS_PRODUCTION_DEPLOY: true
6454

6555
- name: Generate Release Body
@@ -74,4 +64,4 @@ jobs:
7464
tag_name: ${{ env.PRODUCTION_VERSION }}
7565
body: ${{ steps.getReleaseBody.outputs.RELEASE_BODY }}
7666
env:
77-
GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
67+
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}

.github/workflows/e2ePerformanceTests.yml

-1
Original file line numberDiff line numberDiff line change
@@ -192,7 +192,6 @@ jobs:
192192
run: cat "./Host_Machine_Files/\$WORKING_DIRECTORY/debug.log"
193193

194194
- name: Check if test failed, if so post the results and add the DeployBlocker label
195-
if: ${{ github.event_name == 'workflow_call' }}
196195
run: |
197196
if grep -q '🔴' ./Host_Machine_Files/\$WORKING_DIRECTORY/output.md; then
198197
gh pr edit ${{ inputs.PR_NUMBER }} --add-label DeployBlockerCash

.github/workflows/finishReleaseCycle.yml

+4-16
Original file line numberDiff line numberDiff line change
@@ -12,13 +12,6 @@ jobs:
1212
outputs:
1313
isValid: ${{ fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) && !fromJSON(steps.checkDeployBlockers.outputs.HAS_DEPLOY_BLOCKERS) }}
1414
steps:
15-
- uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
16-
id: setupGitForOSBotify
17-
with:
18-
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
19-
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
20-
OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
21-
2215
- name: Validate actor is deployer
2316
id: isDeployer
2417
run: |
@@ -28,13 +21,13 @@ jobs:
2821
echo "IS_DEPLOYER=false" >> "$GITHUB_OUTPUT"
2922
fi
3023
env:
31-
GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
24+
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
3225

3326
- name: Reopen and comment on issue (not a team member)
3427
if: ${{ !fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) }}
3528
uses: Expensify/App/.github/actions/javascript/reopenIssueWithComment@main
3629
with:
37-
GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
30+
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
3831
ISSUE_NUMBER: ${{ github.event.issue.number }}
3932
COMMENT: |
4033
Sorry, only members of @Expensify/Mobile-Deployers can close deploy checklists.
@@ -45,14 +38,14 @@ jobs:
4538
id: checkDeployBlockers
4639
uses: Expensify/App/.github/actions/javascript/checkDeployBlockers@main
4740
with:
48-
GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
41+
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
4942
ISSUE_NUMBER: ${{ github.event.issue.number }}
5043

5144
- name: Reopen and comment on issue (has blockers)
5245
if: ${{ fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) && fromJSON(steps.checkDeployBlockers.outputs.HAS_DEPLOY_BLOCKERS || 'false') }}
5346
uses: Expensify/App/.github/actions/javascript/reopenIssueWithComment@main
5447
with:
55-
GITHUB_TOKEN: ${{ steps.setupGitForOSBotify.outputs.OS_BOTIFY_API_TOKEN }}
48+
GITHUB_TOKEN: ${{ secrets.OS_BOTIFY_TOKEN }}
5649
ISSUE_NUMBER: ${{ github.event.issue.number }}
5750
COMMENT: |
5851
This issue either has unchecked items or has not yet been marked with the `:shipit:` emoji of approval.
@@ -77,12 +70,9 @@ jobs:
7770
token: ${{ secrets.OS_BOTIFY_TOKEN }}
7871

7972
- name: Setup Git for OSBotify
80-
id: setupGitForOSBotify
8173
uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
8274
with:
8375
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
84-
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
85-
OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
8676

8777
- name: Update production branch
8878
run: |
@@ -122,8 +112,6 @@ jobs:
122112
uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
123113
with:
124114
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
125-
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
126-
OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
127115

128116
- name: Update staging branch to trigger staging deploy
129117
run: |

.github/workflows/preDeploy.yml

-2
Original file line numberDiff line numberDiff line change
@@ -95,8 +95,6 @@ jobs:
9595
uses: Expensify/App/.github/actions/composite/setupGitForOSBotify@main
9696
with:
9797
GPG_PASSPHRASE: ${{ secrets.LARGE_SECRET_PASSPHRASE }}
98-
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
99-
OS_BOTIFY_PRIVATE_KEY: ${{ secrets.OS_BOTIFY_PRIVATE_KEY }}
10098

10199
- name: Update staging branch from main
102100
run: |

README.md

+1
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ For an M1 Mac, read this [SO](https://stackoverflow.com/questions/64901180/how-t
5151
* If you get the error `Could not find 'bundler'`, install the bundler gem first: `gem install bundler` and try again.
5252
* If you are using MacOS and get the error `Gem::FilePermissionError` when trying to install the bundler gem, you're likely using system Ruby, which requires administrator permission to modify. To get around this, install another version of Ruby with a version manager like [rbenv](https://github.com/rbenv/rbenv#installation).
5353
* Before installing iOS dependencies, you need to obtain a token from Mapbox to download their SDKs. Please run `npm run configure-mapbox` and follow the instructions.
54+
* For help with MapBox token, you can see [this Slack thread](https://expensify.slack.com/archives/C01GTK53T8Q/p1692740856745279?thread_ts=1692322511.804599&cid=C01GTK53T8Q)
5455
* To install the iOS dependencies, run: `npm install && npm run pod-install`
5556
* If you are an Expensify employee and want to point the emulator to your local VM, follow [this](https://stackoverflow.com/c/expensify/questions/7699)
5657
* To run a on a **Development Simulator**: `npm run ios`

android/app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -90,8 +90,8 @@ android {
9090
minSdkVersion rootProject.ext.minSdkVersion
9191
targetSdkVersion rootProject.ext.targetSdkVersion
9292
multiDexEnabled rootProject.ext.multiDexEnabled
93-
versionCode 1001037508
94-
versionName "1.3.75-8"
93+
versionCode 1001037702
94+
versionName "1.3.77-2"
9595
}
9696

9797
flavorDimensions "default"

android/app/src/debug/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44

55
<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW"/>
66
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
7+
<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS"/>
78
<application android:usesCleartextTraffic="true" tools:targetApi="28" tools:ignore="GoogleAppIndexingWarning">
89
<meta-data
910
android:name="firebase_performance_logcat_enabled"

android/app/src/main/AndroidManifest.xml

+1
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
<uses-permission android:name="android.permission.CAMERA" />
88
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
99
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
10+
<uses-permission android:name="android.permission.HIGH_SAMPLING_RATE_SENSORS"/>
1011

1112
<!-- android:hardwareAccelerated is essential for Android performance: https://developer.android.com/topic/performance/hardware-accel -->
1213
<application

0 commit comments

Comments
 (0)