2021-05-09 18:36:55 +02:00
|
|
|
import classes from './AppCard.module.css';
|
2021-05-14 18:51:56 +02:00
|
|
|
import Icon from '../../UI/Icons/Icon/Icon';
|
2021-06-11 15:33:06 +02:00
|
|
|
import { iconParser, urlParser } from '../../../utility';
|
2021-05-09 18:36:55 +02:00
|
|
|
|
2021-05-10 19:02:16 +02:00
|
|
|
import { App } from '../../../interfaces';
|
2021-06-23 14:15:14 +02:00
|
|
|
import { searchConfig } from '../../../utility';
|
2021-05-10 19:02:16 +02:00
|
|
|
|
|
|
|
interface ComponentProps {
|
|
|
|
app: App;
|
2021-05-13 17:21:52 +02:00
|
|
|
pinHandler?: Function;
|
2021-05-10 19:02:16 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
const AppCard = (props: ComponentProps): JSX.Element => {
|
2021-06-11 15:33:06 +02:00
|
|
|
const [displayUrl, redirectUrl] = urlParser(props.app.url);
|
2021-05-13 17:21:52 +02:00
|
|
|
|
2021-05-09 18:36:55 +02:00
|
|
|
return (
|
2021-06-13 01:06:42 +02:00
|
|
|
<a
|
|
|
|
href={redirectUrl}
|
2021-06-23 14:15:14 +02:00
|
|
|
target={searchConfig('openSameTab', false) ? '' : '_blank'}
|
2021-06-13 01:06:42 +02:00
|
|
|
rel='noreferrer'
|
|
|
|
className={classes.AppCard}
|
|
|
|
>
|
2021-05-09 18:36:55 +02:00
|
|
|
<div className={classes.AppCardIcon}>
|
2021-06-23 14:15:14 +02:00
|
|
|
{(/.(jpeg|jpg|png)$/).test(props.app.icon)
|
|
|
|
? <img
|
|
|
|
src={`/uploads/${props.app.icon}`}
|
|
|
|
alt={`${props.app.name} icon`}
|
|
|
|
className={classes.CustomIcon}
|
|
|
|
/>
|
|
|
|
: <Icon icon={iconParser(props.app.icon)} />
|
|
|
|
}
|
2021-05-09 18:36:55 +02:00
|
|
|
</div>
|
|
|
|
<div className={classes.AppCardDetails}>
|
2021-05-10 19:02:16 +02:00
|
|
|
<h5>{props.app.name}</h5>
|
2021-06-11 15:33:06 +02:00
|
|
|
<span>{displayUrl}</span>
|
2021-05-09 18:36:55 +02:00
|
|
|
</div>
|
2021-05-13 17:21:52 +02:00
|
|
|
</a>
|
2021-05-09 18:36:55 +02:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
export default AppCard;
|