Skip to content

Commit

Permalink
Merge branch 'main' into arrow-feature-signed
Browse files Browse the repository at this point in the history
  • Loading branch information
JediWattson committed Nov 14, 2022
2 parents 5f49543 + 0de35b9 commit 6f02e04
Show file tree
Hide file tree
Showing 71 changed files with 508 additions and 1,224 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -311,7 +311,7 @@ This application is built with the following principles.
- The UI should never call any Onyx methods except for `Onyx.connect()`. That is the job of Actions (see next section).
- The UI always triggers an Action when something needs to happen (eg. a person inputs data, the UI triggers an Action with this data).
- The UI should be as flexible as possible when it comes to:
- Incomplete or missing data. Always assume data is incomplete or not there. For example, when a comment is pushed to the client from a pusher event, it's possible that Onyx does not have data for that report yet. That's OK. A partial report object is added to Onyx for the report key `report_1234 = {reportID: 1234, isUnread: true}`. Then there is code that monitors Onyx for reports with incomplete data, and calls `fetchChatReportsByIDs(1234)` to get the full data for that report. The UI should be able to gracefully handle the report object not being complete. In this example, the sidebar wouldn't display any report that does not have a report name.
- Incomplete or missing data. Always assume data is incomplete or not there. For example, when a comment is pushed to the client from a pusher event, it's possible that Onyx does not have data for that report yet. That's OK. A partial report object is added to Onyx for the report key `report_1234 = {reportID: 1234, isUnread: true}`. Then there is code that monitors Onyx for reports with incomplete data, and calls `openReport(1234)` to get the full data for that report. The UI should be able to gracefully handle the report object not being complete. In this example, the sidebar wouldn't display any report that does not have a report name.
- The order that actions are done in. All actions should be done in parallel instead of sequence.
- Parallel actions are asynchronous methods that don't return promises. Any number of these actions can be called at one time and it doesn't matter what order they happen in or when they complete.
- In-Sequence actions are asynchronous methods that return promises. This is necessary when one asynchronous method depends on the results from a previous asynchronous method. Example: Making an XHR to `command=CreateChatReport` which returns a reportID which is used to call `command=Get&rvl=reportStuff`.
Expand Down
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -156,8 +156,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1001022404
versionName "1.2.24-4"
versionCode 1001022600
versionName "1.2.26-0"
buildConfigField "boolean", "IS_NEW_ARCHITECTURE_ENABLED", isNewArchitectureEnabled().toString()

if (isNewArchitectureEnabled()) {
Expand Down
8 changes: 8 additions & 0 deletions contributingGuides/CONTRIBUTING.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,14 @@ New contributors are limited to working on one job at a time, however experience

Please be aware that compensation for any support in solving an issue is provided **entirely at Expensify’s discretion**. Personal time or resources applied towards investigating a proposal **will not guarantee compensation**. Compensation is only guaranteed to those who **[propose a solution and get hired for that job](https://github.com/Expensify/App/blob/main/contributingGuides/CONTRIBUTING.md#propose-a-solution-for-the-job)**. We understand there may be cases where a selected proposal may take inspiration from a previous proposal. Unfortunately, it’s not possible for us to evaluate every individual case and we have no process that can efficiently do so. Issues with higher rewards come with higher risk factors so try to keep things civil and make the best proposal you can. Once again, **any information provided may not necessarily lead to you getting hired for that issue or compensated in any way.**

**Important:** Payment amounts are variable, dependent on when your PR is merged. Your PR will be reviewed by a Contributor+ (C+) team member and an internal engineer. All tests must pass and all code must pass lint checks before a merge.

**Payment timeline** all based on the day the contributor has an accepted proposal and is assigned to the Github issue
- Merged PR within 3 business days - 50% **bonus**
- Merged PR within 6 business days - 0% bonus
- Merged PR within 9 business days - 50% **penalty**
- No PR within 12 business days - **Contract terminated**

## Finding Jobs
There are two ways you can find a job that you can contribute to:

Expand Down
27 changes: 27 additions & 0 deletions contributingGuides/HOW_TO_BECOME_A_CONTRIBUTOR_PLUS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
## What is a Contributor+ (C+)?
C+ are contributors who are experienced at working with Expensify and have gained the confidence of the internal Expensify team. Accordingly, they are allocated additional opportunities and responsibilities:
- They review proposed solutions in external GitHub issues, validate them, and make recommendations to an internal Contributor Manager Engineer (CME).
- Once a proposal has been accepted by a CME, the C+ will be the first person to review the pull request associated with that proposal.

## Why would someone want to be a C+
- C+ are compensated the same price as the contributor for reviewing proposals and the associated PR. (ie. if a job is listed at $1000, that’s how much the C+ will make if they review both the proposals and PR). If regressions are found that should have* been caught after the PR has been approved, C+ payment is reduced by 50% for each regression found.
- * Should have = C+ should have caught the bug by fully following the PR checklist. If C+ skips a step or completed the checklist incompletely, payment will be cut in half.
- C+ can also work on jobs as a contributor
- Earning potential is variable, it depends on how much a C+ wants to work and other jobs they’re hired for. We’ve seen C+ make ~$100k/year.
- There isn’t a set number of hours a C+ needs to work in a week. Proposals and PRs reviews are expected to be addressed within 24 hours on weekdays.
- Dedicated #contributor-plus Slack room to discuss issues, processes and proposals.
- If C+ ever applies to work at Expensify, they’ve got a leg up on the competition because they're familiar with the company and processes. View job openings at https://we.are.expensify.com.

## Requirements to join C+
- Have had 10 PRs deployed to production without regressions.
- Follow our Code of Conduct, Contributing.md and README.md docs and processes.
- Comment and fix bugs in a timely manner.
- Clear communicator
- Bonus points:
- Help other contributors by commenting on their issues.
- Actively involved in the #expensify-open-source slack channel
- Adheres to the PR review guidelines

## How to join?

Email contributors@expensify.com and include "C+ Team Application" in the subject line if you’re interested in joining.
2 changes: 1 addition & 1 deletion docs/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ bundle install

The [docs](https://github.com/Expensify/App/tree/main/docs) folder will contain the following main folders:

- *_layouts*: Contains HTML templates used by Jekyll to create pages in the static site. For now it has only one file ([default.html](https://github.com/Expensify/App/blob/main/docs/_layouts/default.html)) which will render the common HTML elements and the assets on every page.
- *_layouts*: Contains HTML templates used by Jekyll to create pages in the static site. For now, it has only one file ([default.html](https://github.com/Expensify/App/blob/main/docs/_layouts/default.html)) which will render the common HTML elements and the assets on every page.
- *_includes*: Contains HTML content that can be reused on different pages. [Includes](https://jekyllrb.com/docs/includes/) can accept parameters and be nested, so they are quite powerful.
- *assets*: Contains the three sub-folders css, images, and js. The css folder can contain either .css or .sass files (where SASS files will be processed by Jekyll and it will generate a CSS file in an output folder also generated by Jekyll).
- *hubs*: Contains hubs that display various related articles, optionally grouped by sub-topic within the hub.
Expand Down
6 changes: 3 additions & 3 deletions docs/_data/routes.yml
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
home:
href: home
title: Welcome to the New Expensify!
title: Welcome to ExpensifyHelp!
description: Find the answers to all of your questions about receipts, expenses, corporate cards, or anything else in the spend management universe.

# Hubs are comprised of sections and articles. Sections contain multiple related articles, but there can be standalone articles as well
hubs:
- href: send-money
title: Send money
description: With only a couple of clicks, send money to your friends or coworkers using NewExpensify.
description: With only a couple of clicks, send money to your friends or coworkers.
icon: /assets/images/send.svg
articles:
- href: Request-and-Send-Money
Expand All @@ -27,7 +27,7 @@ hubs:
- href: request-money
title: Request money
icon: /assets/images/money-circle.svg
description: Request money for work expenses, bills, or a night out with friends using NewExpensify.
description: Request money for work expenses, bills, or a night out with friends.
articles:
- href: Request-and-Send-Money
title: Request and Send Money
Expand Down
4 changes: 2 additions & 2 deletions docs/_includes/hub-card.html
Original file line number Diff line number Diff line change
Expand Up @@ -6,8 +6,8 @@
<img class="icon" src="{{ hub.icon }}" alt="{{ hub.href }}"/>
</div>
<div class="body">
<h3 class="title">{{ hub.title }}</h3>
<p class="description">{{ hub.description }}</p>
<h3 class="title with-margin">{{ hub.title }}</h3>
<p class="description with-min-height">{{ hub.description }}</p>
</div>
</div>
</a>
2 changes: 1 addition & 1 deletion docs/_layouts/default.html
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ <h1 class="title">
<!-- Concierge button at the bottom of the page -->
<a class="card get-help" href="{{ CONCIERGE_CHAT_URL }}" target="_blank">
<div class="body">
<h3 class="title">Didn't find what you were looking for?</h3>
<h3 class="title with-margin">Didn't find what you were looking for?</h3>
<p class="description">Concierge is here to answer all your questions.</p>
</div>
<div class="submit-button">
Expand Down
22 changes: 18 additions & 4 deletions docs/_sass/_main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -390,12 +390,12 @@ button {
.cards-group {
display: grid;
grid-template-columns: auto;
row-gap: 12px;
column-gap: 4%;
row-gap: 20px;
column-gap: 20px;
padding-bottom: 20px;

@include breakpoint($breakpoint-desktop) {
grid-template-columns: 48% 48%;
grid-template-columns: auto auto;
}
}

Expand Down Expand Up @@ -456,12 +456,26 @@ button {
h3.title {
padding: 0;
margin: 0;

&.with-margin {
margin: 0 0 4px 0;
}
}



p.description {
padding: 0;
margin: 16px 0 0 0;
margin: 0;
font-weight: normal;

&.with-min-height {
min-height: 68px;

@include breakpoint($breakpoint-tablet) {
min-height: 48px;
}
}
}
}

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.2.24</string>
<string>1.2.26</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
Expand All @@ -30,7 +30,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>1.2.24.4</string>
<string>1.2.26.0</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.2.24</string>
<string>1.2.26</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.2.24.4</string>
<string>1.2.26.0</string>
</dict>
</plist>
30 changes: 15 additions & 15 deletions package-lock.json

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

6 changes: 3 additions & 3 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "new.expensify",
"version": "1.2.24-4",
"version": "1.2.26-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 Expand Up @@ -67,7 +67,7 @@
"dom-serializer": "^0.2.2",
"domhandler": "^4.3.0",
"dotenv": "^8.2.0",
"expensify-common": "git+https://github.com/Expensify/expensify-common.git#6010b3c49a16f63ee9cecc0c720f6d10395775ef",
"expensify-common": "git+https://github.com/Expensify/expensify-common.git#805a4c34debc7e27b14e33847ac4df4d59b6d878",
"fbjs": "^3.0.2",
"file-loader": "^6.0.0",
"html-entities": "^1.3.1",
Expand Down Expand Up @@ -97,7 +97,7 @@
"react-native-image-picker": "^4.8.5",
"react-native-image-size": "git+https://github.com/Expensify/react-native-image-size#6b5ab5110dc3ed554f8eafbc38d7d87c17147972",
"react-native-modal": "^13.0.0",
"react-native-onyx": "1.0.27",
"react-native-onyx": "1.0.29",
"react-native-pdf": "^6.6.2",
"react-native-performance": "^2.0.0",
"react-native-permissions": "^3.0.1",
Expand Down
6 changes: 2 additions & 4 deletions src/CONST.js
Original file line number Diff line number Diff line change
Expand Up @@ -265,9 +265,6 @@ const CONST = {
REMOVED_FROM_POLICY: 'removedFromPolicy',
POLICY_DELETED: 'policyDeleted',
},
ERROR: {
INACCESSIBLE_REPORT: 'Report not found',
},
MESSAGE: {
TYPE: {
COMMENT: 'COMMENT',
Expand Down Expand Up @@ -318,6 +315,7 @@ const CONST = {
MAX_ROOM_NAME_LENGTH: 80,
LAST_MESSAGE_TEXT_MAX_LENGTH: 200,
OWNER_EMAIL_FAKE: '__FAKE__',
DEFAULT_REPORT_NAME: 'Chat Report',
},
COMPOSER: {
MAX_LINES: 16,
Expand Down Expand Up @@ -351,7 +349,6 @@ const CONST = {
SEARCH_RENDER: 'search_render',
HOMEPAGE_INITIAL_RENDER: 'homepage_initial_render',
REPORT_INITIAL_RENDER: 'report_initial_render',
HOMEPAGE_REPORTS_LOADED: 'homepage_reports_loaded',
SWITCH_REPORT: 'switch_report',
SIDEBAR_LOADED: 'sidebar_loaded',
COLD: 'cold',
Expand Down Expand Up @@ -576,6 +573,7 @@ const CONST = {
STEP: {
// In the order they appear in the Wallet flow
ADDITIONAL_DETAILS: 'AdditionalDetailsStep',
ADDITIONAL_DETAILS_KBA: 'AdditionalDetailsKBAStep',
ONFIDO: 'OnfidoStep',
TERMS: 'TermsStep',
ACTIVATE: 'ActivateStep',
Expand Down
2 changes: 0 additions & 2 deletions src/ROUTES.js
Original file line number Diff line number Diff line change
Expand Up @@ -107,7 +107,6 @@ export default {
WORKSPACE_INVOICES: 'workspace/:policyID/invoices',
WORKSPACE_TRAVEL: 'workspace/:policyID/travel',
WORKSPACE_MEMBERS: 'workspace/:policyID/members',
WORKSPACE_BANK_ACCOUNT: 'workspace/:policyID/bank-account',
WORKSPACE_NEW_ROOM: 'workspace/new-room',
getWorkspaceInitialRoute: policyID => `workspace/${policyID}`,
getWorkspaceInviteRoute: policyID => `workspace/${policyID}/invite`,
Expand All @@ -118,7 +117,6 @@ export default {
getWorkspaceInvoicesRoute: policyID => `workspace/${policyID}/invoices`,
getWorkspaceTravelRoute: policyID => `workspace/${policyID}/travel`,
getWorkspaceMembersRoute: policyID => `workspace/${policyID}/members`,
getWorkspaceBankAccountRoute: policyID => `workspace/${policyID}/bank-account`,
getRequestCallRoute: taskID => `request-call/${taskID}`,
REQUEST_CALL: 'request-call/:taskID',

Expand Down
Loading

0 comments on commit 6f02e04

Please sign in to comment.