Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/wildan-m/App into wildan/fi…
Browse files Browse the repository at this point in the history
…x/51296-chat-list-item
  • Loading branch information
wildan-m committed Feb 7, 2025
2 parents 1597c1c + d687284 commit 13ac634
Show file tree
Hide file tree
Showing 97 changed files with 1,522 additions and 818 deletions.
15 changes: 0 additions & 15 deletions .github/actions/composite/setupGitForOSBotifyApp/action.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,21 +24,6 @@ outputs:
runs:
using: composite
steps:
- name: Check if gpg encrypted private key is present
id: key_check
shell: bash
run: |
if [[ -f .github/workflows/OSBotify-private-key.asc.gpg ]]; then
echo "key_exists=true" >> "$GITHUB_OUTPUT"
fi
- name: Checkout
uses: actions/checkout@v4
if: steps.key_check.outputs.key_exists != 'true'
with:
sparse-checkout: |
.github
- name: Install 1Password CLI
uses: 1password/install-cli-action@v1

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,7 @@ GithubUtils.octokit.pulls
.then(({data: PR}) => {
if (!isEmptyObject(PR)) {
console.log(`Found matching pull request: ${PR.html_url}`);
console.log(`Pull request details: ${JSON.stringify(PR)}}`);
core.setOutput('MERGE_COMMIT_SHA', PR.merge_commit_sha);
core.setOutput('HEAD_COMMIT_SHA', PR.head?.sha);
core.setOutput('IS_MERGED', PR.merged);
Expand Down
1 change: 1 addition & 0 deletions .github/actions/javascript/getPullRequestDetails/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -11502,6 +11502,7 @@ GithubUtils_1.default.octokit.pulls
.then(({ data: PR }) => {
if (!(0, EmptyObject_1.isEmptyObject)(PR)) {
console.log(`Found matching pull request: ${PR.html_url}`);
console.log(`Pull request details: ${JSON.stringify(PR)}}`);
core.setOutput('MERGE_COMMIT_SHA', PR.merge_commit_sha);
core.setOutput('HEAD_COMMIT_SHA', PR.head?.sha);
core.setOutput('IS_MERGED', PR.merged);
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ We use 1Password for many secrets and in general use two different actions from
### Important note about Secrets
Secrets are available by default in most workflows. The exception to the rule is callable workflows. If a workflow is triggered by the `workflow_call` event, it will only have access to repo secrets if the workflow that called it passed in the secrets explicitly (for example, using `secrets: inherit`).

Furthermore, secrets are not accessible in actions. If you need to access a secret in an action, you must declare it as an input and pass it in. GitHub _should_ still obfuscate the value of the secret in workflow run logs.
Furthermore, secrets are not accessible in actions. If you need to access a secret in an action, _you must declare it as an input and pass it in_. GitHub _should_ still obfuscate the value of the secret in workflow run logs.

## Actions

Expand Down
11 changes: 8 additions & 3 deletions .github/workflows/cherryPick.yml
Original file line number Diff line number Diff line change
Expand Up @@ -43,7 +43,7 @@ jobs:

- name: Set up git for OSBotify
id: setupGitForOSBotify
uses: Expensify/App/.github/actions/composite/setupGitForOSBotifyApp@main
uses: ./.github/actions/composite/setupGitForOSBotifyApp
with:
OP_SERVICE_ACCOUNT_TOKEN: ${{ secrets.OP_SERVICE_ACCOUNT_TOKEN }}
OS_BOTIFY_APP_ID: ${{ secrets.OS_BOTIFY_APP_ID }}
Expand All @@ -56,14 +56,19 @@ jobs:
SEMVER_LEVEL: "PATCH"

- name: Fetch history of relevant refs
run: |
git fetch origin main staging --no-tags --shallow-exclude ${{ steps.getPreviousVersion.outputs.PREVIOUS_VERSION }}
run: git fetch origin main staging --no-tags --shallow-exclude ${{ steps.getPreviousVersion.outputs.PREVIOUS_VERSION }}

- name: Get version bump commit
id: getVersionBumpCommit
run: |
git switch main
VERSION_BUMP_COMMIT="$(git log --format='%H' --author='OSBotify' --grep 'Update version to ${{ needs.createNewVersion.outputs.NEW_VERSION }}')"
if [ -z "$VERSION_BUMP_COMMIT" ]; then
echo "::error::❌ Could not find version bump commit for ${{ needs.createNewVersion.outputs.NEW_VERSION }}"
git log --oneline
else
echo "::notice::👀 Found version bump commit $VERSION_BUMP_COMMIT"
fi
echo "VERSION_BUMP_SHA=$VERSION_BUMP_COMMIT" >> "$GITHUB_OUTPUT"
- name: Get merge commit for pull request to CP
Expand Down
2 changes: 1 addition & 1 deletion Mobile-Expensify
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -110,8 +110,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1009009419
versionName "9.0.94-19"
versionCode 1009009500
versionName "9.0.95-0"
// Supported language variants must be declared here to avoid from being removed during the compilation.
// This also helps us to not include unnecessary language variants in the APK.
resConfigs "en", "es"
Expand Down
2 changes: 1 addition & 1 deletion android/gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@
# Specifies the JVM arguments used for the daemon process.
# The setting is particularly useful for tweaking memory settings.
# Default value: -Xmx512m -XX:MaxMetaspaceSize=256m
org.gradle.jvmargs=-Xmx6g -XX:MaxMetaspaceSize=512m
org.gradle.jvmargs=-Xmx8g -XX:MaxMetaspaceSize=2048m

# When configured, Gradle will run in incubating parallel mode.
# This option should only be used with decoupled projects. More details, visit
Expand Down
87 changes: 87 additions & 0 deletions docs/articles/new-expensify/travel/Track-Travel-Analytics.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
---
title: Track Travel Analytics
description: Get insight into company travel bookings to ensure real-time duty of care reporting and travel policy compliance.
---
<div id="expensify-classic" markdown="1">

Expensify Travel provides insights into company travel bookings to ensure real-time duty of care reporting and travel policy compliance. These analytics help Workspace Admins:

- See global employee locations with a real-time employee location map
- Analyze travel spend based on details such as trip, traveler, or carrier
- Monitor booking trends and adherence to travel policy compliance
- Generate environmental, social, and governance (ESG) reporting

To view your analytics,

1. Click Travel in the left menu.
2. Click **Book or Manage Travel**.
3. Click the **Analytics** tab at the top of the screen.

From here, you can see a variety of reports, including the Duty of Care report, Spend, and ESG metrics.

## Duty of Care report

Duty of care is a legal obligation for employers to safeguard the health, safety, and well-being of their employees both in the office and during business trips. With Expensify’s Duty of Care analytics, you can view a global map showing real-time employee locations.

1. Click the **Analytics** tab at the top and select Travelers.
2. Use the map to see employee locations. If desired, you can use the filters above the map to show past and future trips, or travel booked to specific locations.

## Spend and compliance report

Workspace Admins can analyze travel data based on a variety of trip, traveler, and compliance attributes.

1. Click the **Analytics** tab at the top and select Company Reports.
2. Review the overview data, or select a specific report from the left menu.
3. Click the three dot menu on the right of the screen to download the report as a PDF.

## ESG report

Expensify Travel provides various ESG metrics, including carbon footprint analysis, sustainability scores, and ethical travel spending.

1. Click the **Analytics** tab at the top and select Company Reports.
2. Click **Air Manifest** in the left menu.
3. Review the CO2 Emissions column in the table.

</div>

<div id="new-expensify" markdown="1">

Expensify Travel provides insights into company travel bookings to ensure real-time duty of care reporting and travel policy compliance. These analytics help Workspace Admins:

- See global employee locations with a real-time employee location map
- Analyze travel spend based on details such as trip, traveler, or carrier
- Monitor booking trends and adherence to travel policy compliance
- Generate environmental, social, and governance (ESG) reporting

To view your analytics,

1. Click the + icon in the bottom left menu and select **Book travel**.
2. Click **Book Travel**.
3. Click the **Analytics** tab at the top of the screen.

From here, you can see a variety of reports, including the Duty of Care report, Spend, and ESG metrics.

## Duty of Care report

Duty of care is a legal obligation for employers to safeguard the health, safety, and well-being of their employees both in the office and during business trips. With Expensify’s Duty of Care analytics, you can view a global map showing real-time employee locations.

1. Click the **Analytics** tab at the top and select Travelers.
2. Use the map to see employee locations. If desired, you can use the filters above the map to show past and future trips, or travel booked to specific locations.

## Spend and compliance report

Workspace Admins can analyze travel data based on a variety of trip, traveler, and compliance attributes.

1. Click the **Analytics** tab at the top and select Company Reports.
2. Review the overview data, or select a specific report from the left menu.
3. Click the three dot menu on the right of the screen to download the report as a PDF.

## ESG report

Expensify Travel provides various ESG metrics, including carbon footprint analysis, sustainability scores, and ethical travel spending.

1. Click the **Analytics** tab at the top and select Company Reports.
2. Click **Air Manifest** in the left menu.
3. Review the CO2 Emissions column in the table.

</div>
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
---
title: Managing Workspace Members in New Expensify
description: Learn how to add, remove, and manage user roles in a New Expensify Workspace.
---

# Managing Workspace Members in New Expensify

Managing users in a New Expensify Workspace is essential for maintaining efficient expense tracking and ensuring the right individuals have appropriate access. This guide covers how to add, remove, and update user roles to streamline Workspace management.

## Overview

Managing users in a New Expensify Workspace allows administrators to control access, assign roles, and ensure the right individuals can submit and approve expenses efficiently.

### Key Advantages

- **Seamless user management** – Easily add, remove, or modify user roles.
- **Role-based permissions** – Assign different access levels to users for better control.
- **Efficient expense tracking** – Ensure only authorized users can interact with Workspace expenses.

## What Is a Workspace User?

A Workspace user is anyone added to a New Expensify Workspace. Their assigned role determines their permissions:

- **Member** – Users who submit and/or approve expenses.
- **Admin** – Users responsible for managing users, roles, and Workspace settings.
- **Auditor** – Users who need to review and comment on expense reports.

## How Do I Invite Users to a Workspace?

To add users to your Workspace:

1. From the **Workspace** view, press **Members** on the left.
2. Press **Invite Member**.
3. Use the search field to find the individual by name, email, or phone number. (You can select multiple people.)
4. Click **Next**.
5. *(Optional)* Click **Role** to change the user’s role type from the default (which is set to **Member**).
6. *(Optional)* Enter a custom message into the **Message** field.
7. Click **Invite**.

**Note:** You can also invite members from the Workspace’s **Profile** page by pressing **Share** to share the Workspace’s URL or QR code.

## How Do I Remove a User From a Workspace?

### Method One - Removing Members Individually

1. From the **Workspace** view, press **Members** on the left.
2. Click the member you want to remove.
3. Click **Remove from Workspace** on the right panel.
4. Confirm the removal by pressing **Remove** on the pop-up message.

### Method Two - Removing Multiple Workspace Members at Once

1. From the **Workspace** view, press **Members** on the left.
2. Select the checkbox next to each member you want to remove.
3. Click the **green dropdown arrow** on the top right.
4. Select **Remove Member/s**.
5. Confirm the removal by pressing **Remove** on the pop-up message.

## How Do I Change a User's Role in a Workspace?

To change an existing user’s role:

1. From the **Workspace** view, press **Members** on the left.
2. Click the member whose role you want to update.
3. Click **Roles** on the right-hand panel.
4. Select the new role for the user.

## How do I change the Workspace Owner?

To change the ownership of a workspace:

1. From the Workspace view, press Members on the left.
2. Click the member with the “Owner” tag next to their name.
3. Click Transfer Owner on the right-hand panel.
4. Click Continue.

# FAQ

## Why Can't I Invite a New User?

If you are unable to invite a new user, check the following:

- You must be an **Admin** to add new users.
- The email address entered must be valid and properly formatted.

## Can I Invite Multiple Users at Once?

Yes! To invite multiple users at once, you can:

- Use the search field to select multiple people (covered in detail in the **How do I invite users to a Workspace?** section).
- Upload them via spreadsheet:

1. From the **Workspace** view, press **Members** on the left.
2. Click the **three vertical dots** on the top right.
3. Select **Import via Spreadsheet**.
4. Drag and drop your spreadsheet into the right-hand panel or press **Upload File** to select your file for upload.

**Note:** You can use the **[spreadsheet import template](https://docs.google.com/spreadsheets/d/19fjknN-KOS74RjXDccXZGUNTm-utdV7Gvveo5EyrJLE/edit?gid=0#gid=0)** for formatting.
Binary file added docs/assets/images/perdiem_01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/images/perdiem_02.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/images/perdiem_03.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/images/perdiem_04.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/assets/images/perdiem_05.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
4 changes: 2 additions & 2 deletions ios/NewExpensify/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>9.0.94</string>
<string>9.0.95</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
Expand All @@ -44,7 +44,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>9.0.94.19</string>
<string>9.0.95.0</string>
<key>FullStory</key>
<dict>
<key>OrgId</key>
Expand Down
4 changes: 2 additions & 2 deletions ios/NewExpensifyTests/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -15,10 +15,10 @@
<key>CFBundlePackageType</key>
<string>BNDL</string>
<key>CFBundleShortVersionString</key>
<string>9.0.94</string>
<string>9.0.95</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>9.0.94.19</string>
<string>9.0.95.0</string>
</dict>
</plist>
4 changes: 2 additions & 2 deletions ios/NotificationServiceExtension/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,9 @@
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleShortVersionString</key>
<string>9.0.94</string>
<string>9.0.95</string>
<key>CFBundleVersion</key>
<string>9.0.94.19</string>
<string>9.0.95.0</string>
<key>NSExtension</key>
<dict>
<key>NSExtensionPointIdentifier</key>
Expand Down
4 changes: 2 additions & 2 deletions package-lock.json

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
"version": "9.0.94-19",
"version": "9.0.95-0",
"author": "Expensify, Inc.",
"homepage": "https://new.expensify.com",
"description": "New Expensify is the next generation of Expensify: a reimagination of payments based atop a foundation of chat.",
Expand Down
8 changes: 8 additions & 0 deletions src/CONST.ts
Original file line number Diff line number Diff line change
Expand Up @@ -6436,6 +6436,14 @@ const CONST = {
description: 'workspace.upgrade.perDiem.description' as const,
icon: 'PerDiem',
},
travel: {
id: 'travel' as const,
alias: 'travel',
name: 'Travel',
title: 'workspace.upgrade.travel.title' as const,
description: 'workspace.upgrade.travel.description' as const,
icon: 'Luggage',
},
};
},
REPORT_FIELD_TYPES: {
Expand Down
Loading

0 comments on commit 13ac634

Please sign in to comment.