// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
import {Image} from 'expo-image';
import React, {useCallback, useMemo, useState} from 'react';
import CompassIcon from '@components/compass_icon';
import {useTheme} from '@context/theme';
import {changeOpacity, makeStyleSheetFromTheme} from '@utils/theme';
import {isValidUrl} from '@utils/url';
type OptionIconProps = {
icon: string;
iconColor?: string;
destructive?: boolean;
};
const getStyleSheet = makeStyleSheetFromTheme(() => {
return {
icon: {
fontSize: 24,
width: 24,
height: 24,
},
};
});
const OptionIcon = ({icon, iconColor, destructive}: OptionIconProps) => {
const theme = useTheme();
const styles = getStyleSheet(theme);
const [failedToLoadImage, setFailedToLoadImage] = useState(false);
const onErrorLoadingIcon = useCallback(() => {
setFailedToLoadImage(true);
}, []);
const iconAsSource = useMemo(() => {
return {uri: icon};
}, [icon]);
if (isValidUrl(icon) && !failedToLoadImage) {
return (
);
}
const iconName = failedToLoadImage ? 'power-plugin-outline' : icon;
return (
);
};
export default OptionIcon;