Skip to content

Commit 6a66f0b

Browse files
authored
Merge pull request #2 from Expensify/main
Even with expensify/main
2 parents 8f44f99 + fe282b4 commit 6a66f0b

File tree

174 files changed

+8646
-4794
lines changed

Some content is hidden

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

174 files changed

+8646
-4794
lines changed

.github/scripts/findUnusedKeys.sh

+8-3
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ LIB_PATH="$(cd "$(dirname "${BASH_SOURCE[0]}")" && cd ../../ && pwd)"
66

77
readonly SRC_DIR="${LIB_PATH}/src"
88
readonly STYLES_DIR="${LIB_PATH}/src/styles"
9-
readonly STYLES_FILE="${LIB_PATH}/src/styles/styles.js"
9+
readonly STYLES_FILE="${LIB_PATH}/src/styles/styles.ts"
1010
readonly UTILITIES_STYLES_FILE="${LIB_PATH}/src/styles/utilities"
1111
readonly STYLES_KEYS_FILE="${LIB_PATH}/scripts/style_keys_list_temp.txt"
1212
readonly UTILITY_STYLES_KEYS_FILE="${LIB_PATH}/scripts/utility_keys_list_temp.txt"
@@ -210,7 +210,12 @@ find_theme_style_and_store_keys() {
210210
fi
211211

212212
# Check if we are inside an arrow function
213-
if [[ "$line" =~ ^[[:space:]]*([a-zA-Z0-9_-])+:[[:space:]]*\(.*\)[[:space:]]*'=>'[[:space:]]*\(\{ || "$line" =~ ^[[:space:]]*(const|let|var)[[:space:]]+([a-zA-Z0-9_-]+)[[:space:]]*=[[:space:]]*\(.*\)[[:space:]]*'=>' ]]; then
213+
if [[ "$line" =~ ^[[:space:]]*([a-zA-Zgv 0-9_-])+:[[:space:]]*\(.*\)[[:space:]]*'=>'[[:space:]]*\(\{ || "$line" =~ ^[[:space:]]*([a-zA-Zgv 0-9_-])+:[[:space:]]*\(.*\)[[:space:]]*'=>' ]]; then
214+
inside_arrow_function=true
215+
continue
216+
fi
217+
218+
if [[ "$line" =~ ^[[:space:]]*(const|let|var)[[:space:]]+([a-zA-Z0-9_-]+)[[:space:]]*=[[:space:]]*\(.*\)[[:space:]]*'=>' ]]; then
214219
inside_arrow_function=true
215220
continue
216221
fi
@@ -348,7 +353,7 @@ echo "🔍 Looking for styles."
348353
find_utility_styles_store_prefix
349354
find_utility_usage_as_styles
350355

351-
# Find and store keys from styles.js
356+
# Find and store keys from styles.ts
352357
find_styles_object_and_store_keys "$STYLES_FILE"
353358
find_styles_functions_and_store_keys "$STYLES_FILE"
354359
collect_theme_keys_from_styles "$STYLES_FILE"

.github/workflows/cherryPick.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ jobs:
1111
validateActor:
1212
runs-on: ubuntu-latest
1313
outputs:
14-
IS_DEPLOYER: ${{ fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) || github.actor == 'OSBotify' }}
14+
IS_DEPLOYER: ${{ fromJSON(steps.isDeployer.outputs.IS_DEPLOYER) || github.actor == 'OSBotify' || github.actor == 'os-botify[bot]' }}
1515
steps:
1616
- name: Check if user is deployer
1717
id: isDeployer

.github/workflows/e2ePerformanceTests.yml

+12-11
Original file line numberDiff line numberDiff line change
@@ -191,14 +191,15 @@ jobs:
191191
if: ${{ always() && runner.debug != null && fromJSON(runner.debug) }}
192192
run: cat "./Host_Machine_Files/\$WORKING_DIRECTORY/debug.log"
193193

194-
- name: Check if test failed, if so post the results and add the DeployBlocker label
195-
run: |
196-
if grep -q '🔴' ./Host_Machine_Files/\$WORKING_DIRECTORY/output.md; then
197-
gh pr edit ${{ inputs.PR_NUMBER }} --add-label DeployBlockerCash
198-
gh pr comment ${{ inputs.PR_NUMBER }} -F ./Host_Machine_Files/\$WORKING_DIRECTORY/output.md
199-
gh pr comment ${{ inputs.PR_NUMBER }} -b "@Expensify/mobile-deployers 📣 Please look into this performance regression as it's a deploy blocker."
200-
else
201-
echo '✅ no performance regression detected'
202-
fi
203-
env:
204-
GITHUB_TOKEN: ${{ github.token }}
194+
# TODO: Once tests are more reliable we should uncomment this
195+
# - name: Check if test failed, if so post the results and add the DeployBlocker label
196+
# run: |
197+
# if grep -q '🔴' ./Host_Machine_Files/\$WORKING_DIRECTORY/output.md; then
198+
# gh pr edit ${{ inputs.PR_NUMBER }} --add-label DeployBlockerCash
199+
# gh pr comment ${{ inputs.PR_NUMBER }} -F ./Host_Machine_Files/\$WORKING_DIRECTORY/output.md
200+
# gh pr comment ${{ inputs.PR_NUMBER }} -b "@Expensify/mobile-deployers 📣 Please look into this performance regression as it's a deploy blocker."
201+
# else
202+
# echo '✅ no performance regression detected'
203+
# fi
204+
# env:
205+
# GITHUB_TOKEN: ${{ github.token }}

.github/workflows/platformDeploy.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ jobs:
1616
validateActor:
1717
runs-on: ubuntu-latest
1818
outputs:
19-
IS_DEPLOYER: ${{ fromJSON(steps.isUserDeployer.outputs.IS_DEPLOYER) || github.actor == 'OSBotify' }}
19+
IS_DEPLOYER: ${{ fromJSON(steps.isUserDeployer.outputs.IS_DEPLOYER) || github.actor == 'OSBotify' || github.actor == 'os-botify[bot]' }}
2020
steps:
2121
- name: Check if user is deployer
2222
id: isUserDeployer

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 1001038306
94-
versionName "1.3.83-6"
93+
versionCode 1001038400
94+
versionName "1.3.84-0"
9595
}
9696

9797
flavorDimensions "default"

assets/animations/FastMoney.json

+1
Large diffs are not rendered by default.

assets/images/eReceipt_background.svg

+1,635
Loading
Loading
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,45 @@
11
---
22
title: Annual Subscription
3-
description: Annual Subscription
3+
description: Learn more about managing your Annual Subscription.
44
---
5-
## Resource Coming Soon!
5+
# Overview
6+
An Annual Subscription offers a 50% cost savings on active user pricing while allowing your company to manage multiple Workspaces across your organization and maintain predictable cost for your Expensify activity.
7+
8+
_For pricing details, see [expensify.com/pricing](http://www.expensify.com/pricing), and find more ways to save with the Expensify Card here._
9+
10+
# How to set subscription size
11+
When you first create a subscription, the best practice is to set your subscription size by entering the average number of active users you expect to have each month for the next year. For example, if you expect to have an average of 10 users each month, even if they are not always the same users, set your subscription size to 10. No need to provision and deprovision access to your team, so you still enjoy flexible usage across the entire company!
12+
13+
If your Workspaces have more than 10 active users in a month, you will pay the unbundled Pay-per-use rate for the additional users. If you’d like to avoid this, you can enable Auto Increase so your subscription size increases based on Workspace user activity.
14+
15+
An ‘Active User’ is anyone who chats, creates, submits, approves, reimburses, or exports a report in Expensify. This includes actions taken by Copilots and any automated settings.
16+
17+
To set your subscription size, go to **Settings > Workspaces > Groups > Subscription**.
18+
19+
If you do not set a specific subscription size, this will be automatically updated based on your past activity:
20+
21+
* If you’ve never had activity in Expensify, your subscription size will be set after your first month. Work with your Setup Specialist or Account Manager to determine the best subscription size for your team!
22+
23+
* For existing Workspaces switching to an Annual Subscription, the subscription size is set to the number of active users on your last month’s billing history.
24+
25+
* If Auto Increase is not selected, and you have more active users than you’ve input as the subscription size, you will be billed for those at the Pay-per-use rate.
26+
27+
# How to adjust subscription size
28+
You can add users to your subscription at any time. However, note that when your subscription size is increased, you will start a new 12-month subscription at that new subscription size.
29+
30+
You can increase your subscription size manually or automatically.
31+
32+
* To manually increase the size, just update the number in your subscription settings (**Settings > Workspaces > Groups > Subscription**).
33+
34+
* To automatically increase your subscription size, enable **Auto Increase**. This feature manages your subscription by automatically increasing the count whenever there is activity that exceeds your subscription size. (**Settings > Workspaces > Groups > Subscription**)
35+
36+
Note: After increasing your subscription size, you won't be able to decrease it for the next 12 months. If your active user numbers tend to fluctuate, you might want to keep this feature disabled. This way, you'll only pay for additional active users in the months they are active. Keep in mind that increasing the subscription size will reset your 12-month subscription period.
37+
38+
# How to disable Auto Renew
39+
By default, your subscription is set to automatically renew after a year. To disable this, click the toggle from your subscription settings before the current subscription ends. (**Settings > Workspaces > Groups > Subscription**)
40+
41+
If Auto Renew is disabled, then the last bill at the annual rate will be issued on the date listed under the Auto Renew settings. For example, if your subscription expires on March 1, 2021, then February 2021 will be the last month billed at the annual rate. If you do not set a new subscription, March activity will be billed at the Pay-per-use rate.
42+
43+
We recommend that you review your user count annually on a proactive basis. Set a reminder to review your active user numbers a month before your subscription expires! If you’d like assistance determining your subscription number, please contact your Account Manager or [email protected].
44+
45+
If you need to decrease your subscription size, you can do this in the first billing month before you are billed. Using the example above, this would be during March 2021.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,81 @@
1+
---
2+
title: Distance Tracking in Expensify
3+
description: Learn how distance tracking works in Expensify!
4+
---
5+
6+
# Overview
7+
8+
Expensify provides a convenient feature for tracking your mileage-related expenses. You'll find all the essential information to begin logging your trips below.
9+
10+
# How to Use Distance Tracking
11+
## Mobile App
12+
13+
First, you’ll want to click the **+** in the top right corner.
14+
15+
If you select **Manually Create**, you’ll be prompted to enter your mileage, select a rate, and code the expense before clicking **Save**.
16+
17+
![Click manually create or odometer to create a distance request.](https://help.expensify.com/assets/images/ExpensifyHelp_CreateExpense_Mobile.png){:width="100%"}
18+
19+
If you select **Manually Create**:
20+
- Enter your mileage.
21+
- Select a rate.
22+
- Code the expense.
23+
- Click **Save**.
24+
25+
![Enter your mileage, rate, code the expense, and click save.](https://help.expensify.com/assets/images/ExpensifyHelp_ManualDistance_Mobile.png){:width="100%"}
26+
27+
If you select **Odometer**:
28+
- Enter your vehicle’s mileage reading before and after your trip.
29+
- Select your rate.
30+
- Code the expense.
31+
- Click **Save**.
32+
33+
![Etner your mileage readings, your rate, code the expense, and click save.](https://help.expensify.com/assets/images/ExpensifyHelp_Odometer_Mobile.png){:width="100%"}
34+
35+
The **Start GPS** option also exists on the mobile app. However, we’ve learned that most customers prefer to track their mileage after their trips (thus not needing to hit that start button!)
36+
37+
We’ve temporarily paused the development of GPS mileage tracking in the mobile app, and we recommend you use one of the above options instead!
38+
39+
40+
## Web
41+
42+
Navigate to the **Expenses** page, click **New Expense**, and review the two **Distance** options.
43+
44+
![Select manually create or create from map to create a new distance request.](https://help.expensify.com/assets/images/ExpensifyHelp_CreateExpense.png){:width="100%"}
45+
46+
If you select **Manually Create**:
47+
- Enter the number of miles for your trip.
48+
- Mileage rate is automatically selected based on your history, or manually select it if it's your first time.
49+
- Complete any other applicable coding fields.
50+
- Click **Save**.
51+
52+
![Enter the number of miles, select your rate, code the expense, and click save.](https://help.expensify.com/assets/images/ExpensifyHelp_ManualDistance.png){:width="100%"}
53+
54+
For **Create from Map** expenses:
55+
- Add your start and end location, and the distance will be calculated.
56+
- You can also click **Add Destination** for multiple stops.
57+
- Leave **Create Receipt** selected if you want a map receipt generated.
58+
- Click **Save**.
59+
60+
![Enter your start and end locations, and click save.](https://help.expensify.com/assets/images/ExpensifyHelp_ManualDistanceMap.png){:width="100%"}
61+
62+
Once you click **Save**, review the details from your map selection.
63+
- Select your rate.
64+
- Enter any other applicable coding.
65+
- Click **Save**.
66+
67+
![Select your rate, code the expense, and click save.](https://help.expensify.com/assets/images/ExpensifyHelp_ManualDistanceConfirm.png){:width="100%"}
68+
69+
# Mileage Tracking FAQs
70+
## **How can I change the rate of my mileage expenses?**
71+
You can change the rate by going to Settings > Workspaces > [Your Workspace] > Expenses > Distance > Add a Mileage Rate.
72+
If you submit mileage expenses on a group workspace, only workspace admins can do this.
73+
74+
## **Do you plan to add the "Create from Map" option to the mobile app or "Odometer" option to web?**
75+
Not now, but if that changes, you'll be the first to know!
76+
77+
## **Will you restart maintenance on the mobile app's GPS option anytime soon?**
78+
Not now, but if that changes, you'll be the first to know!
79+
80+
## **Does Expensify automatically update IRS Mileage rates?**
81+
We never automatically update mileage rates in Expensify because different companies want the new rates to become effective on different dates.

docs/articles/expensify-classic/get-paid-back/Mileage.md

-5
This file was deleted.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
---
2+
title: Importing Receipts from Various Platforms to Expensify
3+
description: Detailed guide on how to import receipts from multiple travel platforms into Expensify.
4+
---
5+
6+
# Overview
7+
You can automatically import receipts from many travel platforms into Expensify, to make tracking expenses while traveling for business a breeze. Read on to learn how to import receipts from Bolt Work, Spot Hero, Trainline, Grab, HotelTonight, and Kayak for Business.
8+
9+
## How to Connect to Bolt Work
10+
11+
### Set Up Bolt Work Profile
12+
- Open the Bolt app, go to the side navigation menu, and select Payment.
13+
- At the bottom, select Set up work profile and follow the instructions, entering your work email for verification.
14+
15+
### Link to Expensify
16+
- In the Bolt app, go to Work Rides.
17+
- Select Add expense provider, choose Expensify, and enter the associated email to receive a verification link.
18+
- Ensure you select your work ride profile as the payment method before booking.
19+
20+
## How to Connect to SpotHero
21+
22+
### Set up a Business Profile
23+
- Open the SpotHero app, click the hamburger icon, and go to Account Settings.
24+
- Click Set up Business Profile.
25+
- Specify the email connected to Expensify and set up your payment method.
26+
- Upon checkout, choose between Business and Personal Profiles in the "Payment Details" section.
27+
- If you want, you can set a weekly or monthly cadence for consolidated SpotHero expense reports in your Business Profile settings. This will batch all of your SpotHero expenses to import into Expensify at that cadence.
28+
29+
## How to Connect to Trainline
30+
- To send a ticket receipt to Expensify:
31+
- In the Trainline app, navigate to the My Tickets tab.
32+
- Tap Manage my booking > Expense receipt > Send to Expensify.
33+
- That’s it!
34+
35+
## How to Connect to Grab
36+
- In the Grab app, tap on your name, go to “Profiles”, and “Add a business profile”.
37+
- Follow instructions and enter your work email for verification.
38+
- In your profile, tap on Business > Expense Solution > Expensify > Save.
39+
- Before booking, select your Business profile and confirm.
40+
41+
## How to Connect to HotelTonight
42+
- In HotelTonight, go to the Bookings tab and select your booking.
43+
- Select Receipt > Expensify, enter your Expensify email, and send.
44+
45+
## How to Connect to Kayak for Business
46+
47+
### Admin Setup
48+
- Admins should go to “Company Settings” and click on “Connect to Expensify”.
49+
- Bookings made by employees will automatically be sent to Expensify.
50+
51+
### Traveler Setup
52+
- From your account settings, choose whether expenses should be sent to Expensify automatically or manually.
53+
- We recommend sending them automatically, so you can travel without even thinking about your expense reports.
54+
55+
# FAQ
56+
57+
**Q: What if I don’t have the option for Send to Expensify in Trainline?**
58+
59+
A: This can happen if the native iOS Mail app is not installed on an Apple device. However, you can still use the native iOS share to Expensify function for Trainline receipts.
60+
61+
**Q: Why should I choose automatic mode in Kayak for Business?**
62+
63+
A: Automatic mode is less effort as it’s easier to delete an expense in Expensify than to remember to forward a forgotten receipt.
64+
65+
**Q: Can I receive consolidated reports from SpotHero?**
66+
67+
A: Yes, you can set a weekly or monthly cadence for SpotHero expenses to be emailed in a consolidated report.
68+
69+
**Q: Do I need to select a specific profile before booking in Bolt Work and Grab?**
70+
71+
A: Yes, ensure you have selected your work or business profile as the payment method before booking.

0 commit comments

Comments
 (0)