diff --git a/modules/filter/active-filter-button.tsx b/modules/filter/active-filter-button.tsx index 35928639e1..cd989d20a9 100644 --- a/modules/filter/active-filter-button.tsx +++ b/modules/filter/active-filter-button.tsx @@ -11,6 +11,7 @@ import { } from 'react-native' import Icon from 'react-native-vector-icons/Ionicons' import * as c from '@frogpond/colors' +import {platformPrefixIconName} from '../icon/platform-prefix-icon-name' type Props = { filter: FilterType @@ -25,11 +26,7 @@ export function ActiveFilterButton({ onRemove, style, }: Props): JSX.Element { - let iconName = Platform.select({ - ios: 'ios-close-circle', - android: 'md-close-circle', - default: '', - }) + let iconName = platformPrefixIconName('close-circle') let iconColor = c.label diff --git a/modules/filter/filter-toolbar-button.tsx b/modules/filter/filter-toolbar-button.tsx index a311ce324a..93e6ff68ad 100644 --- a/modules/filter/filter-toolbar-button.tsx +++ b/modules/filter/filter-toolbar-button.tsx @@ -13,6 +13,7 @@ import type {FilterType} from './types' import {FilterPopover} from './filter-popover' import * as c from '@frogpond/colors' import {Touchable} from '@frogpond/touchable' +import {platformPrefixIconName} from '../icon/platform-prefix-icon-name' const buttonStyles = StyleSheet.create({ button: { @@ -35,11 +36,7 @@ const buttonStyles = StyleSheet.create({ }, }) -const ICON_NAME = Platform.select({ - ios: 'ios-chevron-down', - android: 'md-chevron-down', - default: '', -}) +const ICON_NAME = platformPrefixIconName('chevron-down') type Props = { filter: FilterType diff --git a/modules/food-menu/food-item-row.tsx b/modules/food-menu/food-item-row.tsx index d5f57e88bd..795f973914 100644 --- a/modules/food-menu/food-item-row.tsx +++ b/modules/food-menu/food-item-row.tsx @@ -6,8 +6,9 @@ import {Detail, ListRow, Title} from '@frogpond/lists' import type {MasterCorIconMapType, MenuItemType} from './types' import * as c from '@frogpond/colors' import Icon from 'react-native-vector-icons/Ionicons' +import {platformPrefixIconName} from '../icon/platform-prefix-icon-name' -const specialsIcon = Platform.OS === 'ios' ? 'ios-star' : 'md-star' +const specialsIcon = platformPrefixIconName('star') type Props = { corIcons: MasterCorIconMapType diff --git a/modules/navigation-buttons/favorite.tsx b/modules/navigation-buttons/favorite.tsx index 269a9fd32e..f2cc2edb7c 100644 --- a/modules/navigation-buttons/favorite.tsx +++ b/modules/navigation-buttons/favorite.tsx @@ -3,15 +3,15 @@ import {Platform} from 'react-native' import Icon from 'react-native-vector-icons/Ionicons' import {Touchable} from '@frogpond/touchable' import {rightButtonStyles as styles} from './styles' +import {platformPrefixIconName} from '../icon/platform-prefix-icon-name' type Props = { onFavorite: () => unknown favorited: boolean } -const filled = Platform.OS === 'ios' ? 'ios-heart' : 'md-heart' -const outlined = - Platform.OS === 'ios' ? 'ios-heart-outline' : 'md-heart-outline' +const filled = platformPrefixIconName('heart') +const outlined = platformPrefixIconName('heart-outline') export function FavoriteButton(props: Props): JSX.Element { const icon = props.favorited ? filled : outlined diff --git a/modules/navigation-buttons/search.tsx b/modules/navigation-buttons/search.tsx index 07f06583be..8c873fe9a6 100644 --- a/modules/navigation-buttons/search.tsx +++ b/modules/navigation-buttons/search.tsx @@ -4,6 +4,7 @@ import Icon from 'react-native-vector-icons/Ionicons' import {Touchable} from '@frogpond/touchable' import {useTheme} from '@frogpond/app-theme' import {commonStyles, rightButtonStyles as styles} from './styles' +import {platformPrefixIconName} from '../icon/platform-prefix-icon-name' type Props = { onPress: () => void @@ -27,9 +28,7 @@ export function SearchButton(props: Props): JSX.Element { ) : ( )} diff --git a/source/views/sis/balances-acknowledgement.tsx b/source/views/sis/balances-acknowledgement.tsx index 99bb4f74a0..0ffffd5970 100644 --- a/source/views/sis/balances-acknowledgement.tsx +++ b/source/views/sis/balances-acknowledgement.tsx @@ -12,6 +12,7 @@ import { acknowledgeAcknowledgement, selectAcknowledgement, } from '../../redux/parts/settings' +import {platformPrefixIconName} from '../../../modules/icon/platform-prefix-icon-name' let Paragraph = Platform.OS === 'android' ? AndroidP : IosP let Ack = Platform.OS === 'android' ? AndroidAck : IosAck @@ -67,7 +68,7 @@ type AcknowledgementProps = React.PropsWithChildren<{ const TitleLeftIcon: React.FC<{size: number; color: string}> = (props) => { return ( - + ) } diff --git a/source/views/stoprint/components/error.tsx b/source/views/stoprint/components/error.tsx index b581e76754..48879aabe4 100644 --- a/source/views/stoprint/components/error.tsx +++ b/source/views/stoprint/components/error.tsx @@ -4,6 +4,7 @@ import Icon from 'react-native-vector-icons/Ionicons' import {NoticeView} from '@frogpond/notice' import * as c from '@frogpond/colors' import {openEmail} from '../../settings/screens/overview/support' +import {platformPrefixIconName} from '../../../../modules/icon/platform-prefix-icon-name' const ERROR_MESSAGE = "Make sure you are connected to the St. Olaf Network via eduroam or the VPN. If you are, please report this so we can make sure it doesn't happen again." @@ -15,11 +16,7 @@ type Props = { } export function StoPrintErrorView(props: Props): JSX.Element { - let iconName: string = - Platform.select({ - ios: 'ios-bug', - android: 'md-bug', - }) ?? 'ios-bug' + let iconName: string = platformPrefixIconName('bug') return ( { let {buttonText, description, header, onPress, text, onRefresh, refreshing} = props - let iconName = Platform.OS === 'ios' ? 'ios-print' : 'md-print' + let iconName = platformPrefixIconName('print') return ( ) @@ -51,7 +52,7 @@ export function ShowCalendarButton({ }: ShowCalendarButtonProps): JSX.Element { return ( ) diff --git a/source/views/streaming/radio/controller.tsx b/source/views/streaming/radio/controller.tsx index f62ac125aa..22c967aa05 100644 --- a/source/views/streaming/radio/controller.tsx +++ b/source/views/streaming/radio/controller.tsx @@ -19,6 +19,7 @@ import {ActionButton, CallButton, ShowCalendarButton} from './buttons' import {openUrl} from '@frogpond/open-url' import {useNavigation} from '@react-navigation/native' import {RadioScheduleParamList} from '../../../navigation/types' +import {platformPrefixIconName} from '../../../../modules/icon/platform-prefix-icon-name' // If you want to fix the inline player, switch to `true` const ALLOW_INLINE_PLAYER = false @@ -34,12 +35,12 @@ function PlayButton(props: PlayButtonProps): JSX.Element { const {state, onPlay, onPause, onLink} = props if (!ALLOW_INLINE_PLAYER) { - return + return } switch (state) { case 'paused': - return + return case 'checking': return ( @@ -47,10 +48,10 @@ function PlayButton(props: PlayButtonProps): JSX.Element { ) case 'playing': - return + return default: - return + return } }