Skip to content

Commit 5f7cdd6

Browse files
committed
Merge branch 'main' into statement-close-date-be
2 parents 8ba52ad + 5eca224 commit 5f7cdd6

90 files changed

Lines changed: 786 additions & 474 deletions

File tree

Some content is hidden

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

.github/actions/javascript/proposalPoliceComment/index.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11639,6 +11639,7 @@ async function run() {
1163911639
console.log('commentsResponse', commentsResponse);
1164011640
core.endGroup();
1164111641
let didFindDuplicate = false;
11642+
let originalProposal;
1164211643
for (const previousProposal of commentsResponse) {
1164311644
const isProposal = !!previousProposal.body?.includes(CONST_1.default.PROPOSAL_KEYWORD);
1164411645
const previousProposalCreatedAt = new Date(previousProposal.created_at).getTime();
@@ -11664,13 +11665,14 @@ async function run() {
1166411665
if (similarityPercentage >= 90) {
1166511666
console.log(`Found duplicate with ${similarityPercentage}% similarity.`);
1166611667
didFindDuplicate = true;
11668+
originalProposal = previousProposal;
1166711669
break;
1166811670
}
1166911671
}
1167011672
}
1167111673
if (didFindDuplicate) {
1167211674
const duplicateCheckWithdrawMessage = proposalPolice_1.default.getDuplicateCheckWithdrawMessage();
11673-
const duplicateCheckNoticeMessage = proposalPolice_1.default.getDuplicateCheckNoticeMessage(newProposalAuthor);
11675+
const duplicateCheckNoticeMessage = proposalPolice_1.default.getDuplicateCheckNoticeMessage(newProposalAuthor, originalProposal?.html_url);
1167411676
// If a duplicate proposal is detected, update the comment to withdraw it
1167511677
console.log('ProposalPolice™ withdrawing duplicated proposal...');
1167611678
await GithubUtils_1.default.octokit.issues.updateComment({
@@ -12557,8 +12559,9 @@ const PROPOSAL_POLICE_TEMPLATES = {
1255712559
getDuplicateCheckWithdrawMessage: () => {
1255812560
return '#### 🚫 Duplicated proposal withdrawn by 🤖 ProposalPolice.';
1255912561
},
12560-
getDuplicateCheckNoticeMessage: (proposalAuthor) => {
12561-
return `⚠️ @${proposalAuthor} Your proposal is a duplicate of an already existing proposal and has been automatically withdrawn to prevent spam. Please review the existing proposals before submitting a new one.`;
12562+
getDuplicateCheckNoticeMessage: (proposalAuthor, originalProposalURL) => {
12563+
const existingProposalWithURL = originalProposalURL ? `[existing proposal](${originalProposalURL})` : 'existing proposal';
12564+
return `⚠️ @${proposalAuthor} Your proposal is a duplicate of an already ${existingProposalWithURL} and has been automatically withdrawn to prevent spam. Please review the existing proposals before submitting a new one.`;
1256212565
},
1256312566
};
1256412567
exports["default"] = PROPOSAL_POLICE_TEMPLATES;

.github/actions/javascript/proposalPoliceComment/proposalPoliceComment.ts

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import {context} from '@actions/github';
44
import type {IssueCommentCreatedEvent, IssueCommentEditedEvent, IssueCommentEvent} from '@octokit/webhooks-types';
55
import {format} from 'date-fns';
66
import {toZonedTime} from 'date-fns-tz';
7+
import type {TupleToUnion} from 'type-fest';
78
import {convertToNumber} from '@github/libs/ActionUtils';
89
import CONST from '@github/libs/CONST';
910
import GithubUtils from '@github/libs/GithubUtils';
@@ -91,6 +92,7 @@ async function run() {
9192
core.endGroup();
9293

9394
let didFindDuplicate = false;
95+
let originalProposal: TupleToUnion<typeof commentsResponse> | undefined;
9496
for (const previousProposal of commentsResponse) {
9597
const isProposal = !!previousProposal.body?.includes(CONST.PROPOSAL_KEYWORD);
9698
const previousProposalCreatedAt = new Date(previousProposal.created_at).getTime();
@@ -117,14 +119,15 @@ async function run() {
117119
if (similarityPercentage >= 90) {
118120
console.log(`Found duplicate with ${similarityPercentage}% similarity.`);
119121
didFindDuplicate = true;
122+
originalProposal = previousProposal;
120123
break;
121124
}
122125
}
123126
}
124127

125128
if (didFindDuplicate) {
126129
const duplicateCheckWithdrawMessage = PROPOSAL_POLICE_TEMPLATES.getDuplicateCheckWithdrawMessage();
127-
const duplicateCheckNoticeMessage = PROPOSAL_POLICE_TEMPLATES.getDuplicateCheckNoticeMessage(newProposalAuthor);
130+
const duplicateCheckNoticeMessage = PROPOSAL_POLICE_TEMPLATES.getDuplicateCheckNoticeMessage(newProposalAuthor, originalProposal?.html_url);
128131
// If a duplicate proposal is detected, update the comment to withdraw it
129132
console.log('ProposalPolice™ withdrawing duplicated proposal...');
130133
await GithubUtils.octokit.issues.updateComment({

.github/workflows/unused-styles.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ on:
55
pull_request:
66
types: [opened, synchronize]
77
branches-ignore: [staging, production]
8-
paths: ['src', '.github/workflows/unused-styles.yml', 'scripts/findUnusedStyles.ts']
8+
paths: ['src/**', '.github/workflows/unused-styles.yml', 'scripts/findUnusedStyles.ts']
99

1010
concurrency:
1111
group: ${{ github.ref == 'refs/heads/main' && format('{0}-{1}', github.ref, github.sha) || github.ref }}-unused-styles

Mobile-Expensify

android/app/build.gradle

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,8 @@ android {
114114
minSdkVersion rootProject.ext.minSdkVersion
115115
targetSdkVersion rootProject.ext.targetSdkVersion
116116
multiDexEnabled rootProject.ext.multiDexEnabled
117-
versionCode 1009018803
118-
versionName "9.1.88-3"
117+
versionCode 1009018901
118+
versionName "9.1.89-1"
119119
// Supported language variants must be declared here to avoid from being removed during the compilation.
120120
// This also helps us to not include unnecessary language variants in the APK.
121121
resConfigs "en", "es"

cspell.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -273,6 +273,7 @@
273273
"Highlightable",
274274
"Hoverable",
275275
"HRMS",
276+
"HSBCSGS",
276277
"hybridapp",
277278
"Hydronics",
278279
"iaco",

docs/articles/expensify-classic/bank-accounts-and-payments/bank-accounts/Connect-Personal-Bank-Account.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,4 +52,8 @@ However, if you encounter an error during this process, you can close the pop-up
5252

5353
Some banks, such as Chase, may display masked or tokenized account numbers when connected via Plaid. This is a security feature implemented by the bank and does not indicate any setup error. As long as the connection was successful and you see your account listed in your **Wallet**, reimbursements should process correctly.
5454

55+
## Why can't I add my HSBC bank account details in Singapore?
56+
57+
You can. HSBC typically includes the **branch code** which is the final three digits of the Swift Code (HSBCSGS2XXX) in their "Account Number". If you see figures like "146172002492", please drop first 3 digit (146) which is the Branch Code.
58+
5559
</div>

docs/articles/new-expensify/wallet-and-payments/Connect-a-Personal-Bank-Account.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -80,6 +80,10 @@ No. Expensify does not charge you to add or use a personal account. It’s inclu
8080

8181
## Are there countries where personal bank accounts aren’t supported?
8282

83-
Yes. Expensify supports personal bank accounts from 190+ countries, but there’s a small number not supported. The full list of supported countries is available when adding a personal bank account.
83+
Yes. Expensify supports personal bank accounts from 190+ countries, but there’s a small number not supported. The full list of supported countries is available when adding a personal bank account.
84+
85+
## Why can't I add my HSBC bank account details in Singapore?
86+
87+
You can. HSBC typically includes the **branch code** which is the final three digits of the Swift Code (HSBCSGS2XXX) in their "Account Number". If you see figures like "146172002492", please drop first 3 digit (146) which is the Branch Code.
8488

8589
</div>

help/ref/r/index.md

Lines changed: 1 addition & 56 deletions
Original file line numberDiff line numberDiff line change
@@ -1,59 +1,4 @@
11
---
22
layout: product
3-
title: Expensify Chat
3+
title: Inbox Overview
44
---
5-
6-
7-
# Chat
8-
9-
Chat is the foundation of New Expensify. Every expense, expense report, workspace, or member has an associated "chat", which you can use to record additional details, or collaborate with others. Every chat has the following components:
10-
11-
## Header
12-
13-
This shows who you are chatting with (or what you are chatting about). You can press the header for more details on the chat, or additional actions to take upon it.
14-
15-
## Comments
16-
17-
The core of the chat are its comments, which come in many forms:
18-
19-
- **Text** – Rich text messages stored securely and delivered via web, app, email, or SMS.
20-
- **Images & Documents** – Insert photos, screenshots, movies, PDFs, or more, using copy/paste, drag/drop, or the attach button.
21-
- **Expenses** – Share an expense in the chat, either to simply track and document it, or to submit for reimbursement.
22-
- **Tasks** – Record a task, and optionally assign it to someone (or yourself!).
23-
24-
## Actions
25-
26-
Hover (or long press) on a comment to see additional options, including:
27-
28-
- **React** – Throw a ♥️😂🔥 like on anything!
29-
- **Reply in thread** – Go deeper by creating a new chat on any comment.
30-
- **Mark unread** – Flag it for reading later, at your convenience.
31-
32-
## Composer
33-
34-
Use the composer at the bottom to write new messages:
35-
36-
- **Markdown** – Format text using **bold**, *italics*, and [more](https://help.expensify.com/articles/new-expensify/chat/Send-and-format-chat-messages).
37-
- **Mention** – Invite or tag anyone in the world to any chat by putting an `@` in front of their email address or phone number (e.g., **@awong@marslink.web**, or **@415-867-5309**).
38-
39-
---
40-
41-
# Inbox
42-
43-
The Inbox is a prioritized "to do" list, highlighting exactly what you need to do next. It consists of:
44-
45-
## Priorities
46-
47-
At the top of the Inbox are the most important tasks you should do first, which include:
48-
49-
- Expense reports waiting on you
50-
- Tasks assigned to you
51-
- Chats that have mentioned you
52-
- Anything you have pinned
53-
54-
## Chats
55-
56-
Beneath the priorities are a list of chats (with unread chats highlighted in bold), in one of two view modes:
57-
58-
- **Most Recent** – Lists every chat, ordered by whichever was most recently active.
59-
- **Focus** – Only lists chats with unread messages, sorted alphabetically.

help/ref/workspaces/:policyID/company-cards/index.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,4 +17,4 @@ Already have business credit cards? You can connect them to Expensify to automat
1717

1818
---
1919

20-
More details on connecting your company card program can be found here ➡️ **[Company Card Settings](https://help.expensify.com/articles/new-expensify/connect-credit-cards/Company-Card-Settings)**.
20+
More details on connecting your company card program can be found here ➡️ [Company Card Settings](https://help.expensify.com/articles/new-expensify/connect-credit-cards/Company-Card-Settings).

0 commit comments

Comments
 (0)