Skip to content

Commit

Permalink
Merge branch 'main' of https://github.com/tienifr/App into fix/19034-…
Browse files Browse the repository at this point in the history
…wrong-avatar-iou-report-lhn
  • Loading branch information
tienifr committed May 24, 2023
2 parents 1132098 + d70b746 commit d073725
Show file tree
Hide file tree
Showing 105 changed files with 1,322 additions and 1,099 deletions.
14 changes: 14 additions & 0 deletions .eslintrc.js
Original file line number Diff line number Diff line change
Expand Up @@ -16,4 +16,18 @@ module.exports = {
globals: {
__DEV__: 'readonly',
},
rules: {
'no-restricted-imports': [
'error',
{
paths: [
{
name: 'react-native',
importNames: ['useWindowDimensions'],
message: 'Please use useWindowDimensions from src/hooks/useWindowDimensions instead',
},
],
},
],
},
};
4 changes: 2 additions & 2 deletions .github/workflows/platformDeploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -158,13 +158,13 @@ jobs:
bundler-cache: true

- uses: actions/cache@v3
id: cache-pods
with:
path: ios/Pods
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-

- name: Install cocoapods
if: ${{ !fromJSON(steps.cache-pods.outputs.cache-hit) }}
uses: nick-invision/retry@0711ba3d7808574133d713a0d92d2941be03a350
with:
timeout_minutes: 10
Expand Down
4 changes: 2 additions & 2 deletions .github/workflows/testBuild.yml
Original file line number Diff line number Diff line change
Expand Up @@ -141,13 +141,13 @@ jobs:
bundler-cache: true

- uses: actions/cache@v3
id: cache-pods
with:
path: ios/Pods
key: ${{ runner.os }}-pods-${{ hashFiles('**/Podfile.lock') }}
restore-keys: |
${{ runner.os }}-pods-

- name: Install cocoapods
if: ${{ !fromJSON(steps.cache-pods.outputs.cache-hit) }}
uses: nick-invision/retry@0711ba3d7808574133d713a0d92d2941be03a350
with:
timeout_minutes: 10
Expand Down
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1001031606
versionName "1.3.16-6"
versionCode 1001031701
versionName "1.3.17-1"
}

splits {
Expand Down
28 changes: 14 additions & 14 deletions docs/articles/other/Everything-About-Chat.md
Original file line number Diff line number Diff line change
Expand Up @@ -6,47 +6,47 @@ description: Everything you need to know about Expensify's Chat Features!
<!-- The lines above are required by Jekyll to process the .md file -->

# What is Expensify Chat?
Expensify Chat is the ideal way to collaborate on expenses or payment requests by communicating in real time with your accountant, clients, employees, friends, and family.
Expensify Chat is an ideal way to collaborate on expenses or payment requests by communicating in real-time with your accountant, clients, employees, or, friends.

With Expensify Chat, you can start a conversation about that missing receipt your employee forgot to submit or chat about splitting that electric bill with your roommates. Through eChat, you can even request money from your friends!
With Expensify Chat, you can start a conversation about that missing receipt your employee forgot to submit or chat about splitting that electric bill with your roommates. Through eChat, you can even request money from your friends after a night out on the town!

# How to use Chat in Expensify
Download NewExpensify from the [App Store](https://apps.apple.com/us/app/expensify-cash/id1530278510) or [Google Play](https://play.google.com/store/apps/details?id=com.expensify.chat) to use the chat function. You can also access your account at new.expensify.com from your favorite web browser.

After downloading the app, log into your new.expensify.com account (you’ll use the same username and password for your standard Expensify account). From there, you can customize your profile and start chatting immediately.
After downloading the app, log into your new.expensify.com account (you’ll use the same login information as your Expensify Classic account). From there, you can customize your profile and start chatting immediately.


## Start Chatting
Select **New Chat** to chat one-on-one or **New Group** to start a group chat.
## Workspace Chat Rooms
In addition to 1:1 and group chat, members of a Workspace will have access to two additional rooms; the #announce and #admins rooms.
In addition to 1:1 and group chat, members of a Workspace or Policy will have access to two additional rooms; the #announce and #admins rooms.
All workspace members are added to the #announce room by default. The #announce room lets you share important company announcements and have conversations between workspace members.

Workspace admins will have access to the #admins room. Use the #admins room to collaborate between admins and your dedicated Expensify Guide!
All workspace admins can access the #admins room. Use the #admins room to collaborate with the other admins on your policy, and chat with your dedicated Expensify Onboarding Guide. If you have a subscription of 10 or more users, you're automatically assigned an Account Manager. You can ask for help and collaborate with your Account Manager in this same #admins room. Anytime someone on your team, your dedicated setup specialist, or your dedicated account manager makes any changes to your Workspace settings, that update is logged in the #admins room.

# FAQs
## How do I add more than one person to a chat?
Creating a Group chat with multiple people is easy. Start by clicking the green chat **+** button and select **New Group**. Search for the people you want to invite and check the circle to the far right. Once you’ve selected everyone, click the **Create Group** button at the bottom of your screen.
Start by clicking the green chat **+** button and select **New Group**. Search for the people you want to invite and check the circle to the far right. Once you’ve selected everyone you want in the group chat, click the **Create Group** button at the bottom of your screen.

## Can I add people to an existing Group chat?
Adding people to an existing group chat isn’t possible right now, so you’ll need to make a new group chat with the latest additions.
Adding people to an existing group chat isn’t possible right now, so you’ll want to make a new group chat instead.

## Someone I don’t recognize is in my #admins room for my workspace; who is it?
After creating your workspace, you’ll have a dedicated Expensify specialist who will help you onboard and answer your questions. You can chat with them directly in the #admins room or request a call to talk to them over the phone.
After creating your workspace, you’ll have a dedicated Expensify specialist who will help you onboard and answer your questions. You can chat with them directly in the #admins room or request a call to talk to them over the phone. Later, once you've finished onboarding, if you have a subscription of 10 or more users, a dedicated Account Manager is added to your #admins room for ongoing product support.

## Can I force a chat to stay at the top of the chats list?
You sure can! Click on the chat you want to keep at the top of the list, and then click the small **pin** icon. From now on, your chat will stay pinned to the top of the chat list. If you want to unpin a chat, just click the **pin** icon again.
You sure can! Click on the chat you want to keep at the top of the list, and then click the small **pin** icon. If you want to unpin a chat, just click the **pin** icon again.

# Deep Dive
## Chat display, aka Priority Mode
The way your chats display in the left-hand menu is customizable, and we offer two different options; Most Recent mode and _#focus_ mode.
The way your chats display in the left-hand menu is customizable. We offer two different options; Most Recent mode and _#focus_ mode.

- Most Recent mode will display all chats by default, sorted by most recent, with your pinned chats at the top of the list.
- #focus mode will display only unread and pinned chats, all sorted alphabetically. This setting is perfect for when you need to heads down to focus on a crucial project.
- Most Recent mode will display all chats by default, sort them by the most recent, and keep your pinned chats at the top of the list.
- #focus mode will display only unread and pinned chats, and will sort them alphabetically. This setting is perfect for when you need to cut distractions and focus on a crucial project.

You can find your display mode by clicking on your User Icon > Preferences > Priority Mode.

## Inviting someone to Expensify Chat
If the person you want to chat with doesn’t appear in your contact list, simply type their email or phone number to invite them to chat! They will receive an email with instructions and can reply directly to it to start chatting with you.
If the person you want to chat with doesn’t appear in your contact list, simply type their email or phone number to invite them to chat! From there, they will receive an email with instructions and a link to create an account.

All they have to do is click the link, and a new.expensify.com account will be set up automatically for them (if they don't have one already), and they can start chatting immediately!
Once they click the link, a new.expensify.com account is set up for them automatically (if they don't have one already), and they can start chatting with you immediately!
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,7 @@ As a bootstrapped startup, you communicate with your team all day. Similarly, if
1. Click on your avatar
2. Select *Workspaces*
3. Click on your workspace
4. Select *Manage Members*
4. Select *Members*
5. Click *Invite*, and enter each team member’s email address

By inviting your team, all members of your team will have access to unlimited receipt capture via SmartScan, and you’ll all have access to our free chat tool, which makes it easy to chat about your project and the expenses you’ve captured to help accelerate your project.
Expand All @@ -52,7 +52,7 @@ Here’s how to set it up:
1. Click on your *avatar*
2. Select *Workspaces*
3. Click on your workspace name
4. At the bottom, select *Connect bank account*
4. At the bottom, select *Bank account*
5. Select your bank and enter your online login credentials

Once this is done, you are all set to begin the process of enabling the Expensify Card. Not just for you, but if you have a co-founder, you can also issue them a card.
Expand All @@ -65,7 +65,7 @@ Here’s how to enable the Expensify Card:
1. Click on your *avatar*
2. Select *Workspaces*
3. Click on your workspace
4. Select *Issue Cards*
4. Select *Cards*
5. Next, you’ll be redirected to expensify.com
6. Set a SmartLimit > $0
7. We’ll also ask you for your mailing address to send you a physical Expensify Card
Expand All @@ -82,7 +82,7 @@ To view and pay bills:
1. Click on your *avatar*
2. Select *Workspaces*
3. Click on your workspace
4. Select *Pay bills*
4. Select *Bills*

When you have bills to pay you can click *View all bills* under the *Manage your bills* box and we’ll keep a neatly organized list of all of the bills you can pay via ACH directly from your Expensify account.

Expand Down
4 changes: 2 additions & 2 deletions docs/articles/send-money/workspaces/The-Free-Plan.md
Original file line number Diff line number Diff line change
Expand Up @@ -25,12 +25,12 @@ Once you’ve created your Workspace, you will receive a message from Concierge

Once you’ve completed your company setup, you should have completed the following tasks:

- Connected a business bank account (Settings menu > Click **_Connect bank account_** and follow the prompts).
- Connected a business bank account (Settings menu > Click **_Bank account_** and follow the prompts).
- Invited members to the workspace
- Assigned Expensify Cards

# Inviting Members to the Free Plan:
- Navigate to the Settings Menu and click **_Manage members_** to invite your team. You can invite employees one at a time, or you can invite multiple users by listing out their email addresses separated by a comma
- Navigate to the Settings Menu and click **_Members_** to invite your team. You can invite employees one at a time, or you can invite multiple users by listing out their email addresses separated by a comma
- To use the Expensify Card, you must invite them to your workspace via your company email address (i.e., [email protected] and NOT [email protected]).

# Managing the Free Plan
Expand Down
4 changes: 2 additions & 2 deletions ios/NewExpensify/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.3.16</string>
<string>1.3.17</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
Expand All @@ -30,7 +30,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>1.3.16.6</string>
<string>1.3.17.1</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>LSApplicationQueriesSchemes</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>1.3.16</string>
<string>1.3.17</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.3.16.6</string>
<string>1.3.17.1</string>
</dict>
</plist>
16 changes: 8 additions & 8 deletions package-lock.json

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

4 changes: 2 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
"version": "1.3.16-6",
"version": "1.3.17-1",
"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 Expand Up @@ -76,7 +76,7 @@
"babel-polyfill": "^6.26.0",
"dom-serializer": "^0.2.2",
"domhandler": "^4.3.0",
"expensify-common": "git+ssh://[email protected]/Expensify/expensify-common.git#77b3790c00be80ec2d3ac3db59c24b9e3ad68eb0",
"expensify-common": "git+ssh://[email protected]/Expensify/expensify-common.git#68abe48ad71a98604fdbf5e8e960023ed5807ec2",
"fbjs": "^3.0.2",
"html-entities": "^1.3.1",
"htmlparser2": "^7.2.0",
Expand Down
38 changes: 35 additions & 3 deletions src/CONST.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ const keyInputEscape = lodashGet(KeyCommand, 'constants.keyInputEscape', 'keyInp
const keyInputEnter = lodashGet(KeyCommand, 'constants.keyInputEnter', 'keyInputEnter');
const keyInputUpArrow = lodashGet(KeyCommand, 'constants.keyInputUpArrow', 'keyInputUpArrow');
const keyInputDownArrow = lodashGet(KeyCommand, 'constants.keyInputDownArrow', 'keyInputDownArrow');
const keyInputLeftArrow = lodashGet(KeyCommand, 'constants.keyInputLeftArrow', 'keyInputLeftArrow');
const keyInputRightArrow = lodashGet(KeyCommand, 'constants.keyInputRightArrow', 'keyInputRightArrow');

// describes if a shortcut key can cause navigation
const KEYBOARD_SHORTCUT_NAVIGATION_TYPE = 'NAVIGATION_SHORTCUT';
Expand Down Expand Up @@ -398,6 +400,26 @@ const CONST = {
[PLATFORM_IOS]: {input: keyInputDownArrow},
},
},
ARROW_LEFT: {
descriptionKey: null,
shortcutKey: 'ArrowLeft',
modifiers: [],
trigger: {
DEFAULT: {input: keyInputLeftArrow},
[PLATFORM_OS_MACOS]: {input: keyInputLeftArrow},
[PLATFORM_IOS]: {input: keyInputLeftArrow},
},
},
ARROW_RIGHT: {
descriptionKey: null,
shortcutKey: 'ArrowRight',
modifiers: [],
trigger: {
DEFAULT: {input: keyInputRightArrow},
[PLATFORM_OS_MACOS]: {input: keyInputRightArrow},
[PLATFORM_IOS]: {input: keyInputRightArrow},
},
},
TAB: {
descriptionKey: null,
shortcutKey: 'Tab',
Expand Down Expand Up @@ -579,6 +601,11 @@ const CONST = {
DAILY: 'daily',
ALWAYS: 'always',
},
// Options for which room members can post
WRITE_CAPABILITIES: {
ALL: 'all',
ADMINS: 'admins',
},
VISIBILITY: {
PUBLIC: 'public',
PUBLIC_ANNOUNCE: 'public_announce',
Expand Down Expand Up @@ -801,6 +828,7 @@ const CONST = {
SMALL_CONTAINER_HEIGHT_FACTOR: 2.5,
MIN_AMOUNT_OF_ITEMS: 3,
MAX_AMOUNT_OF_ITEMS: 5,
HERE_TEXT: '@here',
},
COMPOSER_MAX_HEIGHT: 125,
CHAT_FOOTER_MIN_HEIGHT: 65,
Expand Down Expand Up @@ -1080,14 +1108,17 @@ const CONST = {
HAS_COLON_ONLY_AT_THE_BEGINNING: /^:[^:]+$/,
HAS_AT_MOST_TWO_AT_SIGNS: /^@[^@]*@?[^@]*$/,

// eslint-disable-next-line no-misleading-character-class
NEW_LINE_OR_WHITE_SPACE_OR_EMOJI: /[\n\s\p{Extended_Pictographic}\u200d\u{1f1e6}-\u{1f1ff}\u{1f3fb}-\u{1f3ff}\u{e0020}-\u{e007f}\u20E3\uFE0F]|[#*0-9]\uFE0F?\u20E3/gu,
SPECIAL_CHAR_OR_EMOJI:
// eslint-disable-next-line no-misleading-character-class
/[\n\s,/?"{}[\]()&^%$#<>!*\p{Extended_Pictographic}\u200d\u{1f1e6}-\u{1f1ff}\u{1f3fb}-\u{1f3ff}\u{e0020}-\u{e007f}\u20E3\uFE0F]|[#*0-9]\uFE0F?\u20E3/gu,

// Define the regular expression pattern to match a string starting with a colon and ending with a space or newline character
EMOJI_REPLACER: /^:[^\n\r]+?(?=$|\s)/,

// Define the regular expression pattern to match a string starting with an at sign and ending with a space or newline character
MENTION_REPLACER: /^@[^\n\r]*?(?=$|\s)/,
MENTION_REPLACER:
// eslint-disable-next-line no-misleading-character-class
/^@[^\n\r]*?(?=$|[\s,/?"{}[\]()&^%$#<>!*\p{Extended_Pictographic}\u200d\u{1f1e6}-\u{1f1ff}\u{1f3fb}-\u{1f3ff}\u{e0020}-\u{e007f}\u20E3\uFE0F]|[#*0-9]\uFE0F?\u20E3)/u,

MERGED_ACCOUNT_PREFIX: /^(MERGED_\d+@)/,
},
Expand Down Expand Up @@ -2381,6 +2412,7 @@ const CONST = {
ACTIVE: 'active',
DISABLED: 'disabled',
},
SPACE_CHARACTER_WIDTH: 4,

// This ID is used in SelectionScraper.js to query the DOM for UnreadActionIndicator's
// div and then remove it from copied contents in the getHTMLOfSelection() method.
Expand Down
Loading

0 comments on commit d073725

Please sign in to comment.