From f788f2e3dea7800ed64e16b5d19bb957e3b26b5a Mon Sep 17 00:00:00 2001 From: Mathieu Acthernoene Date: Mon, 2 Oct 2023 19:31:29 +0200 Subject: [PATCH 1/6] Add isSamsungOneUI4 method --- .../chat/bootsplash/BootSplashModule.java | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashModule.java b/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashModule.java index c286ebf7a935..545134dde313 100644 --- a/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashModule.java +++ b/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashModule.java @@ -23,6 +23,7 @@ import com.facebook.react.common.ReactConstants; import com.facebook.react.module.annotations.ReactModule; import com.facebook.react.uimanager.PixelUtil; +import java.lang.reflect.Field; import java.util.HashMap; import java.util.Map; import java.util.Timer; @@ -47,6 +48,19 @@ public String getName() { return NAME; } + // From https://stackoverflow.com/a/61062773 + public static boolean isSamsungOneUI4() { + String name = "SEM_PLATFORM_INT"; + + try { + Field field = Build.VERSION.class.getDeclaredField(name); + int version = (field.getInt(null) - 90000) / 10000; + return version == 4; + } catch (Exception ignored) { + return false; + } + } + @Override public Map getConstants() { final HashMap constants = new HashMap<>(); From 30eb8d7ec4a3542939c789f820ac8a07854c1131 Mon Sep 17 00:00:00 2001 From: Mathieu Acthernoene Date: Mon, 2 Oct 2023 19:37:59 +0200 Subject: [PATCH 2/6] Move bootsplash logo from mipmap to drawable --- .../bootsplash_logo.png | Bin .../bootsplash_logo.png | Bin .../bootsplash_logo.png | Bin .../bootsplash_logo.png | Bin .../bootsplash_logo.png | Bin android/app/src/main/res/values/styles.xml | 2 +- 6 files changed, 1 insertion(+), 1 deletion(-) rename android/app/src/main/res/{mipmap-hdpi => drawable-hdpi}/bootsplash_logo.png (100%) rename android/app/src/main/res/{mipmap-mdpi => drawable-mdpi}/bootsplash_logo.png (100%) rename android/app/src/main/res/{mipmap-xhdpi => drawable-xhdpi}/bootsplash_logo.png (100%) rename android/app/src/main/res/{mipmap-xxhdpi => drawable-xxhdpi}/bootsplash_logo.png (100%) rename android/app/src/main/res/{mipmap-xxxhdpi => drawable-xxxhdpi}/bootsplash_logo.png (100%) diff --git a/android/app/src/main/res/mipmap-hdpi/bootsplash_logo.png b/android/app/src/main/res/drawable-hdpi/bootsplash_logo.png similarity index 100% rename from android/app/src/main/res/mipmap-hdpi/bootsplash_logo.png rename to android/app/src/main/res/drawable-hdpi/bootsplash_logo.png diff --git a/android/app/src/main/res/mipmap-mdpi/bootsplash_logo.png b/android/app/src/main/res/drawable-mdpi/bootsplash_logo.png similarity index 100% rename from android/app/src/main/res/mipmap-mdpi/bootsplash_logo.png rename to android/app/src/main/res/drawable-mdpi/bootsplash_logo.png diff --git a/android/app/src/main/res/mipmap-xhdpi/bootsplash_logo.png b/android/app/src/main/res/drawable-xhdpi/bootsplash_logo.png similarity index 100% rename from android/app/src/main/res/mipmap-xhdpi/bootsplash_logo.png rename to android/app/src/main/res/drawable-xhdpi/bootsplash_logo.png diff --git a/android/app/src/main/res/mipmap-xxhdpi/bootsplash_logo.png b/android/app/src/main/res/drawable-xxhdpi/bootsplash_logo.png similarity index 100% rename from android/app/src/main/res/mipmap-xxhdpi/bootsplash_logo.png rename to android/app/src/main/res/drawable-xxhdpi/bootsplash_logo.png diff --git a/android/app/src/main/res/mipmap-xxxhdpi/bootsplash_logo.png b/android/app/src/main/res/drawable-xxxhdpi/bootsplash_logo.png similarity index 100% rename from android/app/src/main/res/mipmap-xxxhdpi/bootsplash_logo.png rename to android/app/src/main/res/drawable-xxxhdpi/bootsplash_logo.png diff --git a/android/app/src/main/res/values/styles.xml b/android/app/src/main/res/values/styles.xml index 34d33d240458..aa0e8136957f 100644 --- a/android/app/src/main/res/values/styles.xml +++ b/android/app/src/main/res/values/styles.xml @@ -72,7 +72,7 @@ From c202b2263c6294f5a892d93b857b537bcd01cb73 Mon Sep 17 00:00:00 2001 From: Mathieu Acthernoene Date: Mon, 2 Oct 2023 19:42:22 +0200 Subject: [PATCH 3/6] Apply custom bootsplash layout for Samsung OneUI 4 --- .../chat/bootsplash/BootSplashDialog.java | 5 +++++ .../res/drawable/bootsplash_samsung_oneui_4.xml | 16 ++++++++++++++++ 2 files changed, 21 insertions(+) create mode 100644 android/app/src/main/res/drawable/bootsplash_samsung_oneui_4.xml diff --git a/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashDialog.java b/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashDialog.java index f5b1ceff60e2..b65cb7306a3d 100644 --- a/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashDialog.java +++ b/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashDialog.java @@ -6,6 +6,7 @@ import android.view.Window; import android.view.WindowManager.LayoutParams; import androidx.annotation.NonNull; +import com.expensify.chat.R; public class BootSplashDialog extends Dialog { @@ -26,6 +27,10 @@ protected void onCreate(Bundle savedInstanceState) { if (window != null) { window.setLayout(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT); + + if (BootSplashModule.isSamsungOneUI4()) { + window.setBackgroundDrawableResource(R.drawable.bootsplash_samsung_oneui_4); + } } super.onCreate(savedInstanceState); diff --git a/android/app/src/main/res/drawable/bootsplash_samsung_oneui_4.xml b/android/app/src/main/res/drawable/bootsplash_samsung_oneui_4.xml new file mode 100644 index 000000000000..f6213ad8143c --- /dev/null +++ b/android/app/src/main/res/drawable/bootsplash_samsung_oneui_4.xml @@ -0,0 +1,16 @@ + + + + + + + + + From 6ca78e6f542d91b9cbb20cd59ce4525e905ec951 Mon Sep 17 00:00:00 2001 From: Mathieu Acthernoene Date: Mon, 2 Oct 2023 19:49:03 +0200 Subject: [PATCH 4/6] Add logoSizeRatio constant --- __mocks__/react-native.js | 1 + .../java/com/expensify/chat/bootsplash/BootSplashModule.java | 1 + .../app/src/main/res/drawable/bootsplash_samsung_oneui_4.xml | 2 ++ src/libs/BootSplash/index.native.ts | 1 + src/libs/BootSplash/index.ts | 1 + src/libs/BootSplash/types.ts | 1 + 6 files changed, 7 insertions(+) diff --git a/__mocks__/react-native.js b/__mocks__/react-native.js index 006d1aee38af..1eeea877ca0f 100644 --- a/__mocks__/react-native.js +++ b/__mocks__/react-native.js @@ -28,6 +28,7 @@ jest.doMock('react-native', () => { BootSplash: { getVisibilityStatus: jest.fn(), hide: jest.fn(), + logoSizeRatio: 1, navigationBarHeight: 0, }, StartupTimer: {stop: jest.fn()}, diff --git a/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashModule.java b/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashModule.java index 545134dde313..7498fa6594fb 100644 --- a/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashModule.java +++ b/android/app/src/main/java/com/expensify/chat/bootsplash/BootSplashModule.java @@ -75,6 +75,7 @@ public Map getConstants() { ? Math.round(PixelUtil.toDIPFromPixel(resources.getDimensionPixelSize(heightResId))) : 0; + constants.put("logoSizeRatio", isSamsungOneUI4() ? 0.5 : 1); constants.put("navigationBarHeight", height); return constants; } diff --git a/android/app/src/main/res/drawable/bootsplash_samsung_oneui_4.xml b/android/app/src/main/res/drawable/bootsplash_samsung_oneui_4.xml index f6213ad8143c..9861004d368f 100644 --- a/android/app/src/main/res/drawable/bootsplash_samsung_oneui_4.xml +++ b/android/app/src/main/res/drawable/bootsplash_samsung_oneui_4.xml @@ -7,6 +7,8 @@ + { export default { hide, getVisibilityStatus: BootSplash.getVisibilityStatus, + logoSizeRatio: BootSplash.logoSizeRatio || 1, navigationBarHeight: BootSplash.navigationBarHeight || 0, }; diff --git a/src/libs/BootSplash/index.ts b/src/libs/BootSplash/index.ts index 24842fe631f4..e58763039129 100644 --- a/src/libs/BootSplash/index.ts +++ b/src/libs/BootSplash/index.ts @@ -30,5 +30,6 @@ function getVisibilityStatus(): Promise { export default { hide, getVisibilityStatus, + logoSizeRatio: 1, navigationBarHeight: 0, }; diff --git a/src/libs/BootSplash/types.ts b/src/libs/BootSplash/types.ts index 2329d5315817..b50b5a3397aa 100644 --- a/src/libs/BootSplash/types.ts +++ b/src/libs/BootSplash/types.ts @@ -1,6 +1,7 @@ type VisibilityStatus = 'visible' | 'hidden'; type BootSplashModule = { + logoSizeRatio: number; navigationBarHeight: number; hide: () => Promise; getVisibilityStatus: () => Promise; From 357d7b64e1619414da24ec46f4b35061050334a1 Mon Sep 17 00:00:00 2001 From: Mathieu Acthernoene Date: Mon, 2 Oct 2023 20:09:43 +0200 Subject: [PATCH 5/6] Apply logo size ratio on splash screen logo --- src/components/SplashScreenHider/index.native.js | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/components/SplashScreenHider/index.native.js b/src/components/SplashScreenHider/index.native.js index f4c234bb877d..dbfac3331484 100644 --- a/src/components/SplashScreenHider/index.native.js +++ b/src/components/SplashScreenHider/index.native.js @@ -18,6 +18,9 @@ const defaultProps = { function SplashScreenHider(props) { const {onHide} = props; + const logoSizeRatio = BootSplash.logoSizeRatio || 1; + const navigationBarHeight = BootSplash.navigationBarHeight || 0; + const opacity = useSharedValue(1); const scale = useSharedValue(1); @@ -64,15 +67,15 @@ function SplashScreenHider(props) { opacityStyle, { // Apply negative margins to center the logo on window (instead of screen) - marginBottom: -(BootSplash.navigationBarHeight || 0), + marginBottom: -navigationBarHeight, }, ]} > From 4daaf3b5bc70d65a3107ac2411ea6fea22d96401 Mon Sep 17 00:00:00 2001 From: Mathieu Acthernoene Date: Mon, 2 Oct 2023 20:23:39 +0200 Subject: [PATCH 6/6] Fix splash screen logo svg file --- assets/images/new-expensify-dark.svg | 37 +++++++--------------------- 1 file changed, 9 insertions(+), 28 deletions(-) diff --git a/assets/images/new-expensify-dark.svg b/assets/images/new-expensify-dark.svg index bcdb3c87f164..ad34f1d9dfce 100644 --- a/assets/images/new-expensify-dark.svg +++ b/assets/images/new-expensify-dark.svg @@ -1,29 +1,10 @@ - - - - - - - - - - - - - - - - - - + +