-
Notifications
You must be signed in to change notification settings - Fork 2.9k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge branch 'main' into issue-51894
- Loading branch information
Showing
449 changed files
with
11,826 additions
and
5,369 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -114,51 +114,6 @@ jobs: | |
env: | ||
BROWSERSTACK: ${{ secrets.BROWSERSTACK }} | ||
|
||
submitAndroid: | ||
name: Submit Android app for production review | ||
needs: prep | ||
if: ${{ github.ref == 'refs/heads/production' }} | ||
runs-on: ubuntu-latest | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
||
- name: Setup Ruby | ||
uses: ruby/[email protected] | ||
with: | ||
bundler-cache: true | ||
|
||
- name: Get Android native version | ||
id: getAndroidVersion | ||
run: echo "VERSION_CODE=$(grep -o 'versionCode\s\+[0-9]\+' android/app/build.gradle | awk '{ print $2 }')" >> "$GITHUB_OUTPUT" | ||
|
||
- name: Decrypt json w/ Google Play credentials | ||
run: gpg --batch --yes --decrypt --passphrase="${{ secrets.LARGE_SECRET_PASSPHRASE }}" --output android-fastlane-json-key.json android-fastlane-json-key.json.gpg | ||
working-directory: android/app | ||
|
||
- name: Submit Android build for review | ||
run: bundle exec fastlane android upload_google_play_production | ||
env: | ||
VERSION: ${{ steps.getAndroidVersion.outputs.VERSION_CODE }} | ||
|
||
- name: Warn deployers if Android production deploy failed | ||
if: ${{ failure() }} | ||
uses: 8398a7/action-slack@v3 | ||
with: | ||
status: custom | ||
custom_payload: | | ||
{ | ||
channel: '#deployer', | ||
attachments: [{ | ||
color: "#DB4545", | ||
pretext: `<!subteam^S4TJJ3PSL>`, | ||
text: `💥 Android production deploy failed. Please manually submit ${{ needs.prep.outputs.APP_VERSION }} in the <https://play.google.com/console/u/0/developers/8765590895836334604/app/4973041797096886180/releases/overview|Google Play Store>. 💥`, | ||
}] | ||
} | ||
env: | ||
GITHUB_TOKEN: ${{ github.token }} | ||
SLACK_WEBHOOK_URL: ${{ secrets.SLACK_WEBHOOK }} | ||
|
||
android_hybrid: | ||
name: Build and deploy Android HybridApp | ||
needs: prep | ||
|
@@ -431,12 +386,6 @@ jobs: | |
APPLE_DEMO_EMAIL: ${{ secrets.APPLE_DEMO_EMAIL }} | ||
APPLE_DEMO_PASSWORD: ${{ secrets.APPLE_DEMO_PASSWORD }} | ||
|
||
- name: Submit build for App Store review | ||
if: ${{ fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} | ||
run: bundle exec fastlane ios submit_for_review | ||
env: | ||
VERSION: ${{ steps.getIOSVersion.outputs.IOS_VERSION }} | ||
|
||
- name: Upload iOS build to Browser Stack | ||
if: ${{ !fromJSON(env.SHOULD_DEPLOY_PRODUCTION) }} | ||
run: curl -u "$BROWSERSTACK" -X POST "https://api-cloud.browserstack.com/app-live/upload" -F "file=@/Users/runner/work/App/App/New Expensify.ipa" | ||
|
@@ -730,7 +679,7 @@ jobs: | |
name: Post a Slack message when any platform fails to build or deploy | ||
runs-on: ubuntu-latest | ||
if: ${{ failure() }} | ||
needs: [buildAndroid, uploadAndroid, submitAndroid, android_hybrid, desktop, iOS, iOS_hybrid, web] | ||
needs: [buildAndroid, uploadAndroid, android_hybrid, desktop, iOS, iOS_hybrid, web] | ||
steps: | ||
- name: Checkout | ||
uses: actions/checkout@v4 | ||
|
@@ -745,21 +694,15 @@ jobs: | |
outputs: | ||
IS_AT_LEAST_ONE_PLATFORM_DEPLOYED: ${{ steps.checkDeploymentSuccessOnAtLeastOnePlatform.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED }} | ||
IS_ALL_PLATFORMS_DEPLOYED: ${{ steps.checkDeploymentSuccessOnAllPlatforms.outputs.IS_ALL_PLATFORMS_DEPLOYED }} | ||
needs: [buildAndroid, uploadAndroid, submitAndroid, android_hybrid, desktop, iOS, iOS_hybrid, web] | ||
needs: [buildAndroid, uploadAndroid, android_hybrid, desktop, iOS, iOS_hybrid, web] | ||
if: ${{ always() }} | ||
steps: | ||
- name: Check deployment success on at least one platform | ||
id: checkDeploymentSuccessOnAtLeastOnePlatform | ||
run: | | ||
isAtLeastOnePlatformDeployed="false" | ||
if [ ${{ github.ref }} == 'refs/heads/production' ]; then | ||
if [ "${{ needs.submitAndroid.result }}" == "success" ]; then | ||
isAtLeastOnePlatformDeployed="true" | ||
fi | ||
else | ||
if [ "${{ needs.uploadAndroid.result }}" == "success" ]; then | ||
isAtLeastOnePlatformDeployed="true" | ||
fi | ||
if [ "${{ needs.uploadAndroid.result }}" == "success" ]; then | ||
isAtLeastOnePlatformDeployed="true" | ||
fi | ||
if [ "${{ needs.iOS.result }}" == "success" ] || \ | ||
|
@@ -784,14 +727,8 @@ jobs: | |
isAllPlatformsDeployed="true" | ||
fi | ||
if [ ${{ github.ref }} == 'refs/heads/production' ]; then | ||
if [ "${{ needs.submitAndroid.result }}" != "success" ]; then | ||
isAllPlatformsDeployed="false" | ||
fi | ||
else | ||
if [ "${{ needs.uploadAndroid.result }}" != "success" ]; then | ||
isAllPlatformsDeployed="false" | ||
fi | ||
if [ "${{ needs.uploadAndroid.result }}" != "success" ]; then | ||
isAllPlatformsDeployed="false" | ||
fi | ||
echo "IS_ALL_PLATFORMS_DEPLOYED=$isAllPlatformsDeployed" >> "$GITHUB_OUTPUT" | ||
|
@@ -939,7 +876,7 @@ jobs: | |
name: Post a Slack message when all platforms deploy successfully | ||
runs-on: ubuntu-latest | ||
if: ${{ always() && fromJSON(needs.checkDeploymentSuccess.outputs.IS_ALL_PLATFORMS_DEPLOYED) }} | ||
needs: [prep, buildAndroid, uploadAndroid, submitAndroid, android_hybrid, desktop, iOS, iOS_hybrid, web, checkDeploymentSuccess, createPrerelease, finalizeRelease] | ||
needs: [prep, buildAndroid, uploadAndroid, android_hybrid, desktop, iOS, iOS_hybrid, web, checkDeploymentSuccess, createPrerelease, finalizeRelease] | ||
steps: | ||
- name: 'Announces the deploy in the #announce Slack room' | ||
uses: 8398a7/action-slack@v3 | ||
|
@@ -993,11 +930,11 @@ jobs: | |
postGithubComments: | ||
uses: ./.github/workflows/postDeployComments.yml | ||
if: ${{ always() && fromJSON(needs.checkDeploymentSuccess.outputs.IS_AT_LEAST_ONE_PLATFORM_DEPLOYED) }} | ||
needs: [prep, buildAndroid, uploadAndroid, submitAndroid, android_hybrid, desktop, iOS, iOS_hybrid, web, checkDeploymentSuccess, createPrerelease, finalizeRelease] | ||
needs: [prep, buildAndroid, uploadAndroid, android_hybrid, desktop, iOS, iOS_hybrid, web, checkDeploymentSuccess, createPrerelease, finalizeRelease] | ||
with: | ||
version: ${{ needs.prep.outputs.APP_VERSION }} | ||
env: ${{ github.ref == 'refs/heads/production' && 'production' || 'staging' }} | ||
android: ${{ github.ref == 'refs/heads/production' && needs.submitAndroid.result || needs.uploadAndroid.result }} | ||
android: ${{ github.ref == 'refs/heads/production' && needs.uploadAndroid.result }} | ||
android_hybrid: ${{ needs.android_hybrid.result }} | ||
ios: ${{ needs.iOS.result }} | ||
ios_hybrid: ${{ needs.iOS_hybrid.result }} | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
27 changes: 27 additions & 0 deletions
27
android/app/src/main/java/com/expensify/chat/navbar/NavBarManagerModule.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,27 @@ | ||
package com.expensify.chat.navbar | ||
|
||
import androidx.core.view.WindowInsetsControllerCompat | ||
import com.facebook.react.bridge.ReactApplicationContext | ||
import com.facebook.react.bridge.ReactContextBaseJavaModule | ||
import com.facebook.react.bridge.ReactMethod | ||
import com.facebook.react.bridge.UiThreadUtil; | ||
|
||
class NavBarManagerModule( | ||
private val mReactContext: ReactApplicationContext, | ||
) : ReactContextBaseJavaModule(mReactContext) { | ||
override fun getName(): String = "RNNavBarManager" | ||
|
||
@ReactMethod | ||
fun setButtonStyle(style: String) { | ||
UiThreadUtil.runOnUiThread { | ||
mReactContext.currentActivity?.window?.let { | ||
WindowInsetsControllerCompat(it, it.decorView).let { controller -> | ||
when (style) { | ||
"light" -> controller.isAppearanceLightNavigationBars = false | ||
"dark" -> controller.isAppearanceLightNavigationBars = true | ||
} | ||
} | ||
} | ||
} | ||
} | ||
} |
18 changes: 18 additions & 0 deletions
18
android/app/src/main/java/com/expensify/chat/navbar/NavBarManagerPackage.kt
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,18 @@ | ||
package com.expensify.chat.navbar | ||
|
||
import com.facebook.react.ReactPackage | ||
import com.facebook.react.bridge.NativeModule | ||
import com.facebook.react.bridge.ReactApplicationContext | ||
import com.facebook.react.uimanager.ViewManager | ||
|
||
class NavBarManagerPackage : ReactPackage { | ||
override fun createViewManagers(reactContext: ReactApplicationContext): List<ViewManager<*, *>> { | ||
return emptyList() | ||
} | ||
|
||
override fun createNativeModules(reactContext: ReactApplicationContext): List<NativeModule> { | ||
val modules: MutableList<NativeModule> = ArrayList() | ||
modules.add(NavBarManagerModule(reactContext)) | ||
return modules | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -9,9 +9,10 @@ You can create as many accounts as needed in order to test your changes directly | |
|
||
**Notes**: | ||
|
||
1. When testing chat functionality in the app please do this between accounts you or your fellow contributors own - **do not test chatting with Concierge**, as this diverts to our customer support team. Thank you. | ||
2. A member of our customer onboarding team gets auto-assigned to every new policy created by a non-paying account to help them set up. Please **do not interact with these teams, ask for calls, or support on your issues.** If you do need to test functionality inside the defaultRooms (#admins & #announce) for any issues you’re working on, please let them know that you are a contributor and don’t need assistance. They will proceed to ignore the chat. | ||
3. Please **do not post in any Expensify owned public room for testing** (e.g #exfy-roadmap, #new-expensify-feedback). These rooms include real customers and investors. You can create your own public rooms, or [use this test public room](https://staging.new.expensify.com/r/2091104345528462) on either staging or production. Thanks! | ||
1. When creating test accounts, include a `+` (plus sign) in the email address (e.g., [email protected]). This marks the account and their associated workspaces as test accounts in Expensify, ensuring Expensify Guides are not assigned to help with account setup. | ||
2. When testing chat functionality in the app please do this between accounts you or your fellow contributors own - **do not test chatting with Concierge**, as this diverts to our customer support team. Thank you. | ||
3. A member of our customer onboarding team gets auto-assigned to every new policy created by a non-paying account to help them set up. Please **do not interact with these teams, ask for calls, or support on your issues.** If you do need to test functionality inside the defaultRooms (#admins & #announce) for any issues you’re working on, please let them know that you are a contributor and don’t need assistance. They will proceed to ignore the chat. | ||
4. Please **do not post in any Expensify owned public room for testing** (e.g #exfy-roadmap, #new-expensify-feedback). These rooms include real customers and investors. You can create your own public rooms, or [use this test public room](https://staging.new.expensify.com/r/2091104345528462) on either staging or production. Thanks! | ||
|
||
#### Generating Multiple Test Accounts | ||
You can generate multiple test accounts by using a `+` postfix, for example if your email is [email protected], you can create multiple New Expensify accounts connected to the same email address by using [email protected], [email protected], etc. | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.