Skip to content

Commit d9cbf9f

Browse files
authored
Merge branch 'Expensify:main' into fix-51888-cors-errors-are-displayed-for-attachments
2 parents 65fb38c + 5f65aec commit d9cbf9f

File tree

178 files changed

+2272
-5022
lines changed

Some content is hidden

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

178 files changed

+2272
-5022
lines changed

.eslintignore

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,3 @@ web/gtm.js
1414
src/libs/SearchParser/searchParser.js
1515
src/libs/SearchParser/autocompleteParser.js
1616
help/_scripts/**
17-
modules/**

.eslintrc.changed.js

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,17 @@ module.exports = {
1010
},
1111
overrides: [
1212
{
13-
files: ['src/libs/ReportUtils.ts', 'src/libs/actions/IOU.ts', 'src/libs/actions/Report.ts', 'src/libs/actions/Task.ts'],
13+
files: [
14+
'src/libs/ReportUtils.ts',
15+
'src/libs/actions/IOU.ts',
16+
'src/libs/actions/Report.ts',
17+
'src/libs/actions/Task.ts',
18+
'src/libs/OptionsListUtils.ts',
19+
'src/libs/ReportActionsUtils.ts',
20+
'src/libs/TransactionUtils/index.ts',
21+
'src/pages/home/ReportScreen.tsx',
22+
'src/pages/workspace/WorkspaceInitialPage.tsx',
23+
],
1424
rules: {
1525
'rulesdir/no-default-id-values': 'off',
1626
},

.github/workflows/testBuildHybrid.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: Build and deploy hybrid apps for testing
1+
name: Build and deploy hybird apps for testing
22

33
on:
44
workflow_dispatch:

Mobile-Expensify

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -500,7 +500,7 @@ It's important to emphasise that a git submodule is just a **regular git reposit
500500
> #### For external contributors
501501
>
502502
> If you'd like to modify the `Mobile-Expensify` source code, it is best that you create your own fork. Then, you can swap origin of the remote repository by executing this command:
503-
>
503+
>
504504
> `cd Mobile-Expensify && git remote set-url origin <YOUR_FORK_URL>`
505505
>
506506
> This way, you'll attach the submodule to your fork repository.

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -110,8 +110,8 @@ android {
110110
minSdkVersion rootProject.ext.minSdkVersion
111111
targetSdkVersion rootProject.ext.targetSdkVersion
112112
multiDexEnabled rootProject.ext.multiDexEnabled
113-
versionCode 1009007703
114-
versionName "9.0.77-3"
113+
versionCode 1009007706
114+
versionName "9.0.77-6"
115115
// Supported language variants must be declared here to avoid from being removed during the compilation.
116116
// This also helps us to not include unnecessary language variants in the APK.
117117
resConfigs "en", "es"

android/app/proguard-rules.pro

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
# Add any project specific keep options here:
1111
-keep class com.expensify.chat.BuildConfig { *; }
1212
-keep class com.facebook.** { *; }
13-
-keep class com.margelo.nitro.** { *; }
1413
-keep, allowoptimization, allowobfuscation class expo.modules.** { *; }
1514

1615
# Keep generic signature of Call, Response (R8 full mode strips signatures from non-kept items).

android/app/src/main/AndroidManifest.xml

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@
55
<uses-permission android:name="android.permission.INTERNET" />
66
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
77
<uses-permission android:name="android.permission.CAMERA" />
8-
<uses-permission android:name="android.permission.READ_CONTACTS" />
98
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
109
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
1110
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />

config/webpack/webpack.common.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -175,7 +175,7 @@ const getCommonConfiguration = ({file = '.env', platform = 'web'}: Environment):
175175
// We are importing this worker as a string by using asset/source otherwise it will default to loading via an HTTPS request later.
176176
// This causes issues if we have gone offline before the pdfjs web worker is set up as we won't be able to load it from the server.
177177
{
178-
test: new RegExp('node_modules/pdfjs-dist/legacy/build/pdf.worker.min.mjs'),
178+
test: new RegExp('node_modules/pdfjs-dist/build/pdf.worker.min.mjs'),
179179
type: 'asset/source',
180180
},
181181

docs/articles/expensify-classic/connections/Expensify-API.md

Lines changed: 17 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,50 +11,50 @@ To begin, review our [Integration Server Manual](https://integrations.expensify.
1111

1212
We've compiled answers to some frequently asked questions to help you get started.
1313

14-
**Should I give your support team my API credentials when I need help?**
14+
## Should I give your support team my API credentials when I need help?
1515

1616
If you’re seeking help with Expensify's API, do not share your partnerUserSecret. If you do, immediately rotate your credentials on [this page](https://www.expensify.com/tools/integrations/).
1717

18-
**Is there a rate limit?**
18+
## Is there a rate limit?
1919

2020
To keep our platform stable and handle high traffic, Expensify limits how many API requests you can send:
2121
- Up to 5 requests every 10 seconds
2222
- Up to 20 requests every 60 seconds
2323

2424
Sending more requests than allowed may result in an error with status code `429`.
2525

26-
**What is a Policy ID?**
26+
## What is a Policy ID?
2727

2828
This is also known as a Workspace ID. To find your Policy/Workspace ID,
2929
Hover over Settings and click Workspaces.
3030
Click the name of the Workspace.
3131
Copy the ID number from the URL. For example, if the URL is https://www.expensify.com/policy?param={"policyID":"0810E551A5F2A9C2”}, then your workspace ID is 0810E551A5F2A9C2.
3232

33-
**Can I use the parent type `file` to export workspace/policy data?**
33+
## Can I use the parent type `file` to export workspace/policy data?
3434

3535
No. The parent type `file` can only be used to export expense and report data — not policy information. To export policy data (e.g., categories, tags), you must use the `get` type with `inputSettings.type` set to `policy`.
3636

37-
**Can I use the API to create Domain Groups?**
37+
## Can I use the API to create Domain Groups?
3838

3939
No, you cannot create domain groups. You can only assign users to them.
4040

41-
**I’m exporting expense IDs `${expense.transactionID}` but when I open my CSV in Excel, it’s changing all the IDs and making them look the same. How can I prevent this?**
41+
## I’m exporting expense IDs `${expense.transactionID}` but when I open my CSV in Excel, it’s changing all the IDs and making them look the same. How can I prevent this?
4242

4343
Try prepending a non-numeric character like a quote to force Excel to interpret the value as a string and not a number (i.e., `'${expense.transactionID}`).
4444

45-
**How can we export the person who will approve a report while the reports are still processing?**
45+
## How can we export the person who will approve a report while the reports are still processing?
4646

4747
Use the field ${report.managerEmail}.
4848

49-
**Why won’t my boolean field return any data?**
49+
## Why won’t my boolean field return any data?
5050

5151
Boolean fields won't output values without a string. For example, instead of using `${expense.billable}`, use `${expense.billable?string("Yes", "No")}`. This will display "Yes" if the expense is billable and "No" if it is not.
5252

53-
**Can I export the reports for just one user?**
53+
## Can I export the reports for just one user?
5454

5555
Not in a quick convenient way, as you would need to include the user in your template. The simplest approach is to export data for all users and then apply a filter in your preferred spreadsheet program.
5656

57-
**Can I create expenses on behalf of users?**
57+
## Can I create expenses on behalf of users?
5858

5959
Yes. However, to access the Expense Creator API on behalf of employees, Expensify needs to verify the following setup:
6060

@@ -63,17 +63,17 @@ Verify you have internal authorization to add data to other accounts within your
6363

6464
If you need this access, contact concierge@expensify.com and reference this help page.
6565

66-
## Using Postman
66+
# Using Postman
6767

6868
Many customers use Postman to help them build out their APIs. Below are some guides contributed by our customers. Please note, in all cases, you will need to first generate your authentication credentials, the steps for which can be found [here](https://integrations.expensify.com/Integration-Server/doc/#introduction) and have them ready:
6969

70-
### Download expenses from a report as a CSV file
70+
## Download expenses from a report as a CSV file
7171

7272
**Step 1: Get the ID of a report you want to export in Expensify**
7373

7474
Find the ID by opening the expense report and clicking Details at the top right corner of the page. At the top of the menu, the ID is provided as the “Long ID.”
7575

76-
**Step 3: Export (generate) a "Report" as a CSV file**
76+
**Step 2: Export (generate) a "Report" as a CSV file**
7777
{% include info.html %}
7878
For this you'll use the Documentation under [Report Exporter](https://integrations.expensify.com/Integration-Server/doc/#export).
7979
{% include end-info.html %}
@@ -146,11 +146,11 @@ The template key will have the value like below:
146146

147147
The template variable determines what information is saved in your CSV file. If you want more columns than merchant, amount, and transaction date, follow the syntax as defined in the export template format documentation.
148148

149-
**Step 4: Save your generated file name**
149+
**Step 3: Save your generated file name**
150150

151-
Expensify currently supports only the "onReceive":{"immediateResponse":["returnRandomFileName"]} option in step 3, so you should receive a random filename back from the API like "exportc111111d-a1a1-a1a1-a1a1-d1111111f.csv". You will need to document this filename if you plan on running the download command after this one.
151+
Expensify currently supports only the "onReceive":{"immediateResponse":["returnRandomFileName"]} option in step 2, so you should receive a random filename back from the API like "exportc111111d-a1a1-a1a1-a1a1-d1111111f.csv". You will need to document this filename if you plan on running the download command after this one.
152152

153-
**Step 5: Download your exported report**
153+
**Step 4: Download your exported report**
154154

155155
Set up another API call in almost the same way you did before. You don't need the template key in the Body anymore, so delete that and set the Body type to "none". Then modify your requestJobDescription to read like below, but with your own credentials and file name:
156156

@@ -170,7 +170,7 @@ Click Go and you should see the CSV in the response body.
170170

171171
*Thank you to our customer Frederico Pettinella who originally wrote and shared this guide.*
172172

173-
### Use Advanced Employee Updater API with Postman
173+
## Use Advanced Employee Updater API with Postman
174174

175175
1. Create a new request.
176176
2. Select POST as the method.

0 commit comments

Comments
 (0)