Skip to content

Commit 2eea82d

Browse files
committed
merge main
2 parents 730a852 + 1426c4e commit 2eea82d

File tree

218 files changed

+2645
-1722
lines changed

Some content is hidden

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

218 files changed

+2645
-1722
lines changed

.github/scripts/printPodspec.rb

+35
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
#!/usr/bin/env ruby
2+
3+
# This file is a lightweight port of the `pod ipc spec` command.
4+
# It was built from scratch to imports some 3rd party functions before reading podspecs
5+
6+
require 'cocoapods'
7+
require 'json'
8+
9+
# Require 3rd party functions needed to parse podspecs. This code is copied from ios/Podfile
10+
def node_require(script)
11+
# Resolve script with node to allow for hoisting
12+
require Pod::Executable.execute_command('node', ['-p',
13+
"require.resolve(
14+
'#{script}',
15+
{paths: [process.argv[1]]},
16+
)", __dir__]).strip
17+
end
18+
node_require('react-native/scripts/react_native_pods.rb')
19+
node_require('react-native-permissions/scripts/setup.rb')
20+
21+
# Configure pod in silent mode
22+
Pod::Config.instance.silent = true
23+
24+
# Process command-line arguments
25+
podspec_files = ARGV
26+
27+
# Validate each podspec file
28+
podspec_files.each do |podspec_file|
29+
begin
30+
spec = Pod::Specification.from_file(podspec_file)
31+
puts(spec.to_pretty_json)
32+
rescue => e
33+
STDERR.puts "Failed to validate #{podspec_file}: #{e.message}"
34+
end
35+
end

.github/scripts/verifyPodfile.sh

+28-22
Original file line numberDiff line numberDiff line change
@@ -8,15 +8,20 @@ source scripts/shellUtils.sh
88

99
title "Verifying that Podfile.lock is synced with the project"
1010

11-
declare EXIT_CODE=0
11+
# Cleanup and exit
12+
# param - status code
13+
function cleanupAndExit {
14+
cd "$START_DIR" || exit 1
15+
exit "$1"
16+
}
1217

1318
# Check Provisioning Style. If automatic signing is enabled, iOS builds will fail, so ensure we always have the proper profile specified
1419
info "Verifying that automatic signing is not enabled"
1520
if grep -q 'PROVISIONING_PROFILE_SPECIFIER = "(NewApp) AppStore"' ios/NewExpensify.xcodeproj/project.pbxproj; then
1621
success "Automatic signing not enabled"
1722
else
1823
error "Error: Automatic provisioning style is not allowed!"
19-
EXIT_CODE=1
24+
cleanupAndExit 1
2025
fi
2126

2227
PODFILE_SHA=$(openssl sha1 ios/Podfile | awk '{print $2}')
@@ -29,7 +34,7 @@ if [[ "$PODFILE_SHA" == "$PODFILE_LOCK_SHA" ]]; then
2934
success "Podfile checksum verified!"
3035
else
3136
error "Podfile.lock checksum mismatch. Did you forget to run \`npx pod-install\`?"
32-
EXIT_CODE=1
37+
cleanupAndExit 1
3338
fi
3439

3540
info "Ensuring correct version of cocoapods is used..."
@@ -45,45 +50,46 @@ if [[ "$POD_VERSION_FROM_GEMFILE" == "$POD_VERSION_FROM_PODFILE_LOCK" ]]; then
4550
success "Cocoapods version from Podfile.lock matches cocoapods version from Gemfile"
4651
else
4752
error "Cocoapods version from Podfile.lock does not match cocoapods version from Gemfile. Please use \`npm run pod-install\` or \`bundle exec pod install\` instead of \`pod install\` to install pods."
48-
EXIT_CODE=1
53+
cleanupAndExit 1
4954
fi
5055

5156
info "Comparing Podfile.lock with node packages..."
5257

5358
# Retrieve a list of podspec directories as listed in the Podfile.lock
54-
SPEC_DIRS=$(yq '.["EXTERNAL SOURCES"].[].":path" | select( . == "*node_modules*")' < ios/Podfile.lock)
59+
if ! SPEC_DIRS=$(yq '.["EXTERNAL SOURCES"].[].":path" | select( . == "*node_modules*")' < ios/Podfile.lock); then
60+
error "Error: Could not parse podspec directories from Podfile.lock"
61+
cleanupAndExit 1
62+
fi
63+
64+
if ! read_lines_into_array PODSPEC_PATHS < <(npx react-native config | jq --raw-output '.dependencies[].platforms.ios.podspecPath | select ( . != null)'); then
65+
error "Error: could not parse podspec paths from react-native config command"
66+
cleanupAndExit 1
67+
fi
5568

5669
# Format a list of Pods based on the output of the config command
57-
FORMATTED_PODS=$( \
58-
jq --raw-output --slurp 'map((.name + " (" + .version + ")")) | .[]' <<< "$( \
59-
npx react-native config | \
60-
jq '.dependencies[].platforms.ios.podspecPath | select( . != null )' | \
61-
xargs -L 1 pod ipc spec --silent
62-
)"
63-
)
70+
if ! FORMATTED_PODS=$( \
71+
jq --raw-output --slurp 'map((.name + " (" + .version + ")")) | .[]' <<< "$(./.github/scripts/printPodspec.rb "${PODSPEC_PATHS[@]}")" \
72+
); then
73+
error "Error: could not parse podspecs at paths parsed from react-native config"
74+
cleanupAndExit 1
75+
fi
6476

6577
# Check for uncommitted package removals
6678
# If they are listed in Podfile.lock but the directories don't exist they have been removed
6779
while read -r DIR; do
6880
if [[ ! -d "${DIR#../}" ]]; then
6981
error "Directory \`${DIR#../node_modules/}\` not found in node_modules. Did you forget to run \`npx pod-install\` after removing the package?"
70-
EXIT_CODE=1
82+
cleanupAndExit 1
7183
fi
7284
done <<< "$SPEC_DIRS"
7385

7486
# Check for uncommitted package additions/updates
7587
while read -r POD; do
7688
if ! grep -q "$POD" ./ios/Podfile.lock; then
7789
error "$POD not found in Podfile.lock. Did you forget to run \`npx pod-install\`?"
78-
EXIT_CODE=1
90+
cleanupAndExit 1
7991
fi
8092
done <<< "$FORMATTED_PODS"
8193

82-
if [[ "$EXIT_CODE" == 0 ]]; then
83-
success "Podfile.lock is up to date."
84-
fi
85-
86-
# Cleanup
87-
cd "$START_DIR" || exit 1
88-
89-
exit $EXIT_CODE
94+
success "Podfile.lock is up to date."
95+
cleanupAndExit 0

.nvmrc

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
20.13.0
1+
20.14.0

android/app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -107,8 +107,8 @@ android {
107107
minSdkVersion rootProject.ext.minSdkVersion
108108
targetSdkVersion rootProject.ext.targetSdkVersion
109109
multiDexEnabled rootProject.ext.multiDexEnabled
110-
versionCode 1001047911
111-
versionName "1.4.79-11"
110+
versionCode 1001048009
111+
versionName "1.4.80-9"
112112
// Supported language variants must be declared here to avoid from being removed during the compilation.
113113
// This also helps us to not include unnecessary language variants in the APK.
114114
resConfigs "en", "es"
+14
Loading
+18-1
Loading

assets/images/inbox.svg

+12
Loading

assets/images/money-search.svg

+16
Loading
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,27 @@
1+
---
2+
title: Add custom fields to reports and invoices
3+
description: Customize the fields that appear on a report or an invoice
4+
---
5+
<div id="expensify-classic" markdown="1">
6+
7+
Workspace Admins can add additional required fields to a report to include selections for project names, locations, trip information, and more.
8+
9+
{% include info.html %}
10+
You cannot create these report fields directly in Expensify if you are connected to an accounting integration (QuickBooks Online, QuickBooks Desktop, Intacct, Xero, or NetSuite). Please refer to the relevant article for instructions on creating fields within that system.
11+
{% include end-info.html %}
12+
13+
To create a custom field for a report,
14+
15+
1. Hover over Settings and select **Workspaces**.
16+
2. Select the desired workspace.
17+
3. Click the **Reports** tab on the left.
18+
4. Scroll down to the Report and Invoice Fields section.
19+
5. Under Add New Field, enter a Field Title.
20+
6. Click the dropdown for the Type field and select the desired selection method:
21+
- **Text**: Provides a text box to type in the requested information.
22+
- **Dropdown**: Provides a dropdown of options to choose from.
23+
- **Date**: Opens a calendar to select a date.
24+
7. Select the report type: **Expense Report** or **Invoice**.
25+
8. Click **Add**.
26+
27+
</div>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
title: Set default report title
3+
description: Set an automatic title for all reports
4+
---
5+
<div id="expensify-classic" markdown="1">
6+
7+
Workspace Admins can set a default report title for all reports created under a specific workspace. If desired, these titles can also be enforced to prevent employees from changing them.
8+
9+
1. Hover over Settings and select **Workspaces**.
10+
2. Select the desired workspace.
11+
3. Click the **Reports** tab on the left.
12+
4. Scroll down to the Default Report Title section.
13+
5. Configure the formula. You can use the example provided on the page as a guide or choose from more [report formula options](https://help.expensify.com/articles/expensify-classic/spending-insights/Custom-Templates).
14+
- Some formulas will automatically update the report title as changes are made to the report. For example, any formula related to dates, total amounts, workspace name, would adjust the title before the report is submitted for approval. Changes will not retroactively update report titles for reports which have been Approved or Reimbursed.
15+
6. If desired, enable the Enforce Default Report Title toggle. This will prevent employees from editing the default title.
16+
17+
</div>

ios/NewExpensify/Info.plist

+2-2
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
<key>CFBundlePackageType</key>
2020
<string>APPL</string>
2121
<key>CFBundleShortVersionString</key>
22-
<string>1.4.79</string>
22+
<string>1.4.80</string>
2323
<key>CFBundleSignature</key>
2424
<string>????</string>
2525
<key>CFBundleURLTypes</key>
@@ -40,7 +40,7 @@
4040
</dict>
4141
</array>
4242
<key>CFBundleVersion</key>
43-
<string>1.4.79.11</string>
43+
<string>1.4.80.9</string>
4444
<key>FullStory</key>
4545
<dict>
4646
<key>OrgId</key>

ios/NewExpensifyTests/Info.plist

+2-2
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@
1515
<key>CFBundlePackageType</key>
1616
<string>BNDL</string>
1717
<key>CFBundleShortVersionString</key>
18-
<string>1.4.79</string>
18+
<string>1.4.80</string>
1919
<key>CFBundleSignature</key>
2020
<string>????</string>
2121
<key>CFBundleVersion</key>
22-
<string>1.4.79.11</string>
22+
<string>1.4.80.9</string>
2323
</dict>
2424
</plist>

ios/NotificationServiceExtension/Info.plist

+2-2
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@
1111
<key>CFBundleName</key>
1212
<string>$(PRODUCT_NAME)</string>
1313
<key>CFBundleShortVersionString</key>
14-
<string>1.4.79</string>
14+
<string>1.4.80</string>
1515
<key>CFBundleVersion</key>
16-
<string>1.4.79.11</string>
16+
<string>1.4.80.9</string>
1717
<key>NSExtension</key>
1818
<dict>
1919
<key>NSExtensionPointIdentifier</key>

package-lock.json

+8-8
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

+4-4
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "new.expensify",
3-
"version": "1.4.79-11",
3+
"version": "1.4.80-9",
44
"author": "Expensify, Inc.",
55
"homepage": "https://new.expensify.com",
66
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
@@ -259,7 +259,7 @@
259259
"electron-builder": "24.13.2",
260260
"eslint": "^7.6.0",
261261
"eslint-config-airbnb-typescript": "^17.1.0",
262-
"eslint-config-expensify": "^2.0.49",
262+
"eslint-config-expensify": "^2.0.50",
263263
"eslint-config-prettier": "^8.8.0",
264264
"eslint-plugin-import": "^2.29.1",
265265
"eslint-plugin-jest": "^24.1.0",
@@ -329,7 +329,7 @@
329329
]
330330
},
331331
"engines": {
332-
"node": "20.13.0",
333-
"npm": "10.5.2"
332+
"node": "20.14.0",
333+
"npm": "10.7.0"
334334
}
335335
}

0 commit comments

Comments
 (0)