-
Notifications
You must be signed in to change notification settings - Fork 4.3k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[RNMobile] Ensure uploaded audio is always visible within Audio block #55627
Changes from 6 commits
4a307dd
1548559
1fcb337
f324625
3906599
531089c
4c29c2f
bab1437
e83f5c6
190bbd0
51490f0
771a02f
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
@@ -9,12 +9,13 @@ import { | |||||||||||||||||||||||||||||||||||||||||||
Platform, | ||||||||||||||||||||||||||||||||||||||||||||
} from 'react-native'; | ||||||||||||||||||||||||||||||||||||||||||||
import { default as VideoPlayer } from 'react-native-video'; | ||||||||||||||||||||||||||||||||||||||||||||
import { colord } from 'colord'; | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
/** | ||||||||||||||||||||||||||||||||||||||||||||
* WordPress dependencies | ||||||||||||||||||||||||||||||||||||||||||||
*/ | ||||||||||||||||||||||||||||||||||||||||||||
import { View } from '@wordpress/primitives'; | ||||||||||||||||||||||||||||||||||||||||||||
import { Icon } from '@wordpress/components'; | ||||||||||||||||||||||||||||||||||||||||||||
import { Icon, useGlobalStyles } from '@wordpress/components'; | ||||||||||||||||||||||||||||||||||||||||||||
import { withPreferredColorScheme } from '@wordpress/compose'; | ||||||||||||||||||||||||||||||||||||||||||||
import { __ } from '@wordpress/i18n'; | ||||||||||||||||||||||||||||||||||||||||||||
import { audio, warning } from '@wordpress/icons'; | ||||||||||||||||||||||||||||||||||||||||||||
|
@@ -70,14 +71,30 @@ function Player( { | |||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const containerStyle = getStylesFromColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
const useEditorColorScheme = ( baseStyle, darkStyle ) => { | ||||||||||||||||||||||||||||||||||||||||||||
const globalStyles = useGlobalStyles(); | ||||||||||||||||||||||||||||||||||||||||||||
const editorColors = globalStyles?.baseColors?.color; | ||||||||||||||||||||||||||||||||||||||||||||
const editorBackgroundColor = editorColors?.background; | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
if ( typeof editorBackgroundColor === 'undefined' ) { | ||||||||||||||||||||||||||||||||||||||||||||
return getStylesFromColorScheme( baseStyle, darkStyle ); | ||||||||||||||||||||||||||||||||||||||||||||
} | ||||||||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. I noticed that
gutenberg/packages/components/src/mobile/global-styles-context/utils.native.js Lines 226 to 236 in 531089c
gutenberg/packages/components/src/mobile/global-styles-context/utils.native.js Lines 260 to 268 in 531089c
You can check this by using the theme There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. For some reason, I only reproduce the issue I mentioned above when using the iOS simulator. On an actual device, themes and colors are parsed properly 🙃. In any case, adding the condition for the case I mentioned, when values can't be parsed, would still be applicable. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. @fluiddot, @dcalhoun, thank you both! It's strange that this is specific to iOS (not Android) and only reproducible on a simulator. 🤔 I also had trouble reproducing myself, but did not that the editor's background isn't always being displayed on an iOS simulator for me. It feels like there's something more to be dug into here. Regardless, I've added a check for the "undefined" string, to resolve this case from the code Carlos pointed out: e83f5c6 (also viewable in the refactored function in 190bbd0). Let me know if that resolves this issue for you! |
||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const isEditorBackgroundDark = colord( editorBackgroundColor ).isDark(); | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
return isEditorBackgroundDark | ||||||||||||||||||||||||||||||||||||||||||||
? { ...baseStyle, ...darkStyle } | ||||||||||||||||||||||||||||||||||||||||||||
: baseStyle; | ||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const containerStyle = useEditorColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
styles.container, | ||||||||||||||||||||||||||||||||||||||||||||
styles.containerDark | ||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const iconStyle = getStylesFromColorScheme( styles.icon, styles.iconDark ); | ||||||||||||||||||||||||||||||||||||||||||||
const iconStyle = useEditorColorScheme( styles.icon, styles.iconDark ); | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const iconDisabledStyle = getStylesFromColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
const iconDisabledStyle = useEditorColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
styles.iconDisabled, | ||||||||||||||||||||||||||||||||||||||||||||
styles.iconDisabledDark | ||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||
|
@@ -89,7 +106,7 @@ function Player( { | |||||||||||||||||||||||||||||||||||||||||||
...( isDisabled && iconDisabledStyle ), | ||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const iconContainerStyle = getStylesFromColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
const iconContainerStyle = useEditorColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
styles.iconContainer, | ||||||||||||||||||||||||||||||||||||||||||||
styles.iconContainerDark | ||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||
|
@@ -99,17 +116,14 @@ function Player( { | |||||||||||||||||||||||||||||||||||||||||||
...( isIOS ? styles.titleContainerIOS : styles.titleContainerAndroid ), | ||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const titleStyle = getStylesFromColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
styles.title, | ||||||||||||||||||||||||||||||||||||||||||||
styles.titleDark | ||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||
const titleStyle = useEditorColorScheme( styles.title, styles.titleDark ); | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const uploadFailedStyle = getStylesFromColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
const uploadFailedStyle = useEditorColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
styles.uploadFailed, | ||||||||||||||||||||||||||||||||||||||||||||
styles.uploadFailedDark | ||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const subtitleStyle = getStylesFromColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
const subtitleStyle = useEditorColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
styles.subtitle, | ||||||||||||||||||||||||||||||||||||||||||||
styles.subtitleDark | ||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||
|
@@ -119,7 +133,7 @@ function Player( { | |||||||||||||||||||||||||||||||||||||||||||
...( isUploadFailed && uploadFailedStyle ), | ||||||||||||||||||||||||||||||||||||||||||||
}; | ||||||||||||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||||||||||||
const buttonBackgroundStyle = getStylesFromColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
const buttonBackgroundStyle = useEditorColorScheme( | ||||||||||||||||||||||||||||||||||||||||||||
styles.buttonBackground, | ||||||||||||||||||||||||||||||||||||||||||||
styles.buttonBackgroundDark | ||||||||||||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||||||||||||
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
useEditorColorScheme
provides functionality that I presume might be needed on other blocks, as choosing styles based on the background seems a common issue across blocks. I wonder if we should move it as a utility related to global styles. WDYT?There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's a good point! I've gone ahead to refactor the function in 190bbd0, with that reusability in mind.
I also wanted to highlight that this might be a short-term patch, as I plan to re-open the discussion of how we handle block-based/dark-mode colours in the long-term with the team.