From 5da4872775af5cc6485ac13250d75a0e1a115c86 Mon Sep 17 00:00:00 2001 From: David Ashinsky Date: Thu, 2 Dec 2021 07:18:30 -0800 Subject: [PATCH] Restore react native override preference when live shopping ends. Summary: The current implementation of the prelive composer is setting the RN override preference to nil when live shopping ends. However, if the user had a previously set appearance override, this would clear it out. To resolve this, I cache the user's override preference before we override it, and restore it when live shopping ends. Additionally, I'm adding a missing callback to restore the override pref when live shopping is dismissed, but not cancelled. Changelog: [ReactiveNative][Appearance] - Add function to retrieve overridden RN appearance Differential Revision: D32564739 fbshipit-source-id: d0b4e06d2bbadad68f172d951609cba3e4587e5d --- React/CoreModules/RCTAppearance.h | 1 + React/CoreModules/RCTAppearance.mm | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/React/CoreModules/RCTAppearance.h b/React/CoreModules/RCTAppearance.h index d8c358522f..a099219af8 100644 --- a/React/CoreModules/RCTAppearance.h +++ b/React/CoreModules/RCTAppearance.h @@ -12,6 +12,7 @@ RCT_EXTERN void RCTEnableAppearancePreference(BOOL enabled); RCT_EXTERN void RCTOverrideAppearancePreference(NSString *const); +RCT_EXTERN NSString *RCTCurrentOverrideAppearancePreference(); RCT_EXTERN NSString *RCTColorSchemePreference(UITraitCollection *traitCollection); @interface RCTAppearance : RCTEventEmitter diff --git a/React/CoreModules/RCTAppearance.mm b/React/CoreModules/RCTAppearance.mm index 1d762b67cc..d8519ddfaa 100644 --- a/React/CoreModules/RCTAppearance.mm +++ b/React/CoreModules/RCTAppearance.mm @@ -30,6 +30,11 @@ void RCTOverrideAppearancePreference(NSString *const colorSchemeOverride) sColorSchemeOverride = colorSchemeOverride; } +NSString *RCTCurrentOverrideAppearancePreference() +{ + return sColorSchemeOverride; +} + NSString *RCTColorSchemePreference(UITraitCollection *traitCollection) { #if defined(__IPHONE_OS_VERSION_MAX_ALLOWED) && defined(__IPHONE_13_0) && \