diff --git a/src/view/com/composer/text-input/TextInput.tsx b/src/view/com/composer/text-input/TextInput.tsx index 1cf0f2bc4a..778439259e 100644 --- a/src/view/com/composer/text-input/TextInput.tsx +++ b/src/view/com/composer/text-input/TextInput.tsx @@ -19,6 +19,7 @@ import PasteInput, { PasteInputRef, } from '@mattermost/react-native-paste-input' +import {isAndroid} from '#/platform/detection' import {POST_IMG_MAX} from 'lib/constants' import {usePalette} from 'lib/hooks/usePalette' import {downloadAndResize} from 'lib/media/manip' @@ -183,11 +184,30 @@ export const TextInput = forwardRef(function TextInputImpl( ) const inputTextStyle = React.useMemo(() => { - return normalizeTextStyles([a.text_lg, a.leading_snug, t.atoms.text], { - fontScale: fonts.scaleMultiplier, - fontFamily: fonts.family, - flags: {}, - }) + const style = normalizeTextStyles( + [a.text_xl, a.leading_snug, t.atoms.text], + { + fontScale: fonts.scaleMultiplier, + fontFamily: fonts.family, + flags: {}, + }, + ) + + /* + * `PasteInput` appears to prefer no `lineHeight` + */ + style.lineHeight = undefined + + /* + * Android impl of `PasteInput` doesn't support the array syntax for `fontVariant` + */ + if (isAndroid) { + // @ts-ignore + style.fontVariant = style.fontVariant + ? style.fontVariant.join(' ') + : undefined + } + return style }, [t, fonts]) const textDecorated = useMemo(() => { diff --git a/src/view/com/composer/text-input/TextInput.web.tsx b/src/view/com/composer/text-input/TextInput.web.tsx index c2be0444b9..9b9ace68c8 100644 --- a/src/view/com/composer/text-input/TextInput.web.tsx +++ b/src/view/com/composer/text-input/TextInput.web.tsx @@ -259,16 +259,21 @@ export const TextInput = React.forwardRef(function TextInputImpl( flags: {}, }, ) - // TipTap component isn't a RN View, need to convert some props - esb + /* + * TipTap component isn't a RN View and while it seems to convert + * `fontSize` to `px`, it doesn't convert `lineHeight`. + * + * `lineHeight` should always be defined here, this is defensive. + */ // @ts-ignore - style.lineHeight = style.lineHeight += 'px' + style.lineHeight = style.lineHeight ? (style.lineHeight += 'px') : undefined return style }, [t, fonts]) return ( <> - {/* @ts-ignore inputStyle is fine - esb */} + {/* @ts-ignore inputStyle is fine */}