Skip to content

Commit

Permalink
Merge remote-tracking branch 'upstream/main' into update-translation-…
Browse files Browse the repository at this point in the history
…pluralization-example
  • Loading branch information
brandonhenry committed Jun 4, 2024
2 parents 445e063 + 287cd6a commit 17c8998
Show file tree
Hide file tree
Showing 180 changed files with 2,800 additions and 839 deletions.
10 changes: 10 additions & 0 deletions .github/workflows/platformDeploy.yml
Original file line number Diff line number Diff line change
Expand Up @@ -352,6 +352,16 @@ jobs:
env:
CF_API_KEY: ${{ secrets.CLOUDFLARE_TOKEN }}

# Build a version of iOS and Android HybridApp if we are deploying to staging
hybridApp:
runs-on: ubuntu-latest
needs: validateActor
if: ${{ fromJSON(needs.validateActor.outputs.IS_DEPLOYER) }}
steps:
- name: 'Deploy HybridApp'
if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }}
uses: Expensify/Mobile-Deploy/.github/workflows/deploy.yml@main

postSlackMessageOnFailure:
name: Post a Slack message when any platform fails to build or deploy
runs-on: ubuntu-latest
Expand Down
36 changes: 18 additions & 18 deletions __mocks__/react-native-permissions.ts
Original file line number Diff line number Diff line change
Expand Up @@ -35,30 +35,30 @@ const requestNotifications: jest.Mock<Notification> = jest.fn((options: Record<s
status: RESULTS.GRANTED,
settings: Object.keys(options)
.filter((option: string) => notificationOptions.includes(option))
.reduce((acc: NotificationSettings, option: string) => ({...acc, [option]: true}), {
lockScreen: true,
notificationCenter: true,
}),
.reduce(
(acc: NotificationSettings, option: string) => {
acc[option] = true;
return acc;
},
{
lockScreen: true,
notificationCenter: true,
},
),
}));

const checkMultiple: jest.Mock<ResultsCollection> = jest.fn((permissions: string[]) =>
permissions.reduce(
(acc: ResultsCollection, permission: string) => ({
...acc,
[permission]: RESULTS.GRANTED,
}),
{},
),
permissions.reduce((acc: ResultsCollection, permission: string) => {
acc[permission] = RESULTS.GRANTED;
return acc;
}, {}),
);

const requestMultiple: jest.Mock<ResultsCollection> = jest.fn((permissions: string[]) =>
permissions.reduce(
(acc: ResultsCollection, permission: string) => ({
...acc,
[permission]: RESULTS.GRANTED,
}),
{},
),
permissions.reduce((acc: ResultsCollection, permission: string) => {
acc[permission] = RESULTS.GRANTED;
return acc;
}, {}),
);

export {
Expand Down
4 changes: 2 additions & 2 deletions android/app/build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -107,8 +107,8 @@ android {
minSdkVersion rootProject.ext.minSdkVersion
targetSdkVersion rootProject.ext.targetSdkVersion
multiDexEnabled rootProject.ext.multiDexEnabled
versionCode 1001047802
versionName "1.4.78-2"
versionCode 1001047900
versionName "1.4.79-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
13 changes: 13 additions & 0 deletions assets/images/check-circle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions assets/images/checkmark-circle.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 23 additions & 0 deletions assets/images/crosshair.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
3 changes: 3 additions & 0 deletions babel.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,9 @@ const defaultPlugins = [
'@babel/transform-runtime',
'@babel/plugin-proposal-class-properties',

// This will serve to map the classes correctly in FullStory
'@fullstory/babel-plugin-annotate-react',

// We use `transform-class-properties` for transforming ReactNative libraries and do not use it for our own
// source code transformation as we do not use class property assignment.
'transform-class-properties',
Expand Down
4 changes: 2 additions & 2 deletions docs/_sass/_main.scss
Original file line number Diff line number Diff line change
Expand Up @@ -941,8 +941,8 @@ button {
}

#platform-tabs > .active {
color: var(--color-button-text);
background-color: var(--color-button-success-background);
color: var(--color-text);
background-color: var(--color-button-background);
}

.hidden {
Expand Down
27 changes: 0 additions & 27 deletions docs/articles/new-expensify/chat/Expensify-Chat-For-Admins.md

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ Before completing this process, you’ll want to:
New cards will have the same limit as the existing cards. Each cardholder’s current physical and virtual cards will remain active until a Domain Admin or the cardholder deactivates it.

{% include info.html %}
Cards won’t be issued to any employees who don’t currently have them. In this case, you’ll need to <a href="[url](https://help.expensify.com/articles/expensify-classic/expensify-card/Set-Up-the-Expensify-Visa%C2%AE-Commercial-Card-for-your-Company#:~:text=we%20have%20them.-,How%20to%20issue%20cards,-After%20you%E2%80%99ve%20been)">issue a new card</a>.
Cards won’t be issued to any employees who don’t currently have them. In this case, you’ll need to [issue a new card](https://help.expensify.com/articles/expensify-classic/expensify-card/Set-Up-the-Expensify-Visa%C2%AE-Commercial-Card-for-your-Company)
{% include end-info.html %}

{% include faq-begin.md %}
Expand Down
46 changes: 28 additions & 18 deletions docs/assets/js/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,30 @@ const tocbotOptions = {
scrollContainer: 'content-area',
};

function selectNewExpensify(newExpensifyTab, newExpensifyContent, expensifyClassicTab, expensifyClassicContent) {
newExpensifyTab.classList.add('active');
newExpensifyContent.classList.remove('hidden');

expensifyClassicTab.classList.remove('active');
expensifyClassicContent.classList.add('hidden');
window.tocbot.refresh({
...tocbotOptions,
contentSelector: '#new-expensify',
});
}

function selectExpensifyClassic(newExpensifyTab, newExpensifyContent, expensifyClassicTab, expensifyClassicContent) {
expensifyClassicTab.classList.add('active');
expensifyClassicContent.classList.remove('hidden');

newExpensifyTab.classList.remove('active');
newExpensifyContent.classList.add('hidden');
window.tocbot.refresh({
...tocbotOptions,
contentSelector: '#expensify-classic',
});
}

window.addEventListener('DOMContentLoaded', () => {
injectFooterCopywrite();

Expand All @@ -219,8 +243,10 @@ window.addEventListener('DOMContentLoaded', () => {
let contentSelector = '.article-toc-content';
if (expensifyClassicContent) {
contentSelector = '#expensify-classic';
selectExpensifyClassic(newExpensifyTab, newExpensifyContent, expensifyClassicTab, expensifyClassicContent);
} else if (newExpensifyContent) {
contentSelector = '#new-expensify';
selectNewExpensify(newExpensifyTab, newExpensifyContent, expensifyClassicTab, expensifyClassicContent);
}

if (window.tocbot) {
Expand All @@ -232,28 +258,12 @@ window.addEventListener('DOMContentLoaded', () => {

// eslint-disable-next-line es/no-optional-chaining
expensifyClassicTab?.addEventListener('click', () => {
expensifyClassicTab.classList.add('active');
expensifyClassicContent.classList.remove('hidden');

newExpensifyTab.classList.remove('active');
newExpensifyContent.classList.add('hidden');
window.tocbot.refresh({
...tocbotOptions,
contentSelector: '#expensify-classic',
});
selectExpensifyClassic(newExpensifyTab, newExpensifyContent, expensifyClassicTab, expensifyClassicContent);
});

// eslint-disable-next-line es/no-optional-chaining
newExpensifyTab?.addEventListener('click', () => {
newExpensifyTab.classList.add('active');
newExpensifyContent.classList.remove('hidden');

expensifyClassicTab.classList.remove('active');
expensifyClassicContent.classList.add('hidden');
window.tocbot.refresh({
...tocbotOptions,
contentSelector: '#new-expensify',
});
selectNewExpensify(newExpensifyTab, newExpensifyContent, expensifyClassicTab, expensifyClassicContent);
});

document.getElementById('header-button').addEventListener('click', toggleHeaderMenu);
Expand Down
4 changes: 2 additions & 2 deletions ios/NewExpensify/Info.plist
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,7 @@
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleShortVersionString</key>
<string>1.4.78</string>
<string>1.4.79</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleURLTypes</key>
Expand All @@ -40,7 +40,7 @@
</dict>
</array>
<key>CFBundleVersion</key>
<string>1.4.78.2</string>
<string>1.4.79.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>1.4.78</string>
<string>1.4.79</string>
<key>CFBundleSignature</key>
<string>????</string>
<key>CFBundleVersion</key>
<string>1.4.78.2</string>
<string>1.4.79.0</string>
</dict>
</plist>
Loading

0 comments on commit 17c8998

Please sign in to comment.