diff options
Diffstat (limited to 'frontend/src')
| -rw-r--r-- | frontend/src/components/ExternalLink.tsx | 16 | ||||
| -rw-r--r-- | frontend/src/components/store/PluginCard.tsx | 5 | ||||
| -rw-r--r-- | frontend/src/components/store/Store.tsx | 9 |
3 files changed, 24 insertions, 6 deletions
diff --git a/frontend/src/components/ExternalLink.tsx b/frontend/src/components/ExternalLink.tsx new file mode 100644 index 00000000..a223fc77 --- /dev/null +++ b/frontend/src/components/ExternalLink.tsx @@ -0,0 +1,16 @@ +import { Navigation } from '@decky/ui'; +import { AnchorHTMLAttributes, FC } from 'react'; + +const ExternalLink: FC<AnchorHTMLAttributes<HTMLAnchorElement>> = (props) => { + return ( + <a + {...props} + onClick={(e) => { + e.preventDefault(); + props.onClick ? props.onClick(e) : props.href && Navigation.NavigateToExternalWeb(props.href); + }} + /> + ); +}; + +export default ExternalLink; diff --git a/frontend/src/components/store/PluginCard.tsx b/frontend/src/components/store/PluginCard.tsx index dd54aa65..6e2a3510 100644 --- a/frontend/src/components/store/PluginCard.tsx +++ b/frontend/src/components/store/PluginCard.tsx @@ -4,6 +4,7 @@ import { useTranslation } from 'react-i18next'; import { InstallType } from '../../plugin'; import { StorePlugin, StorePluginVersion, requestPluginInstall } from '../../store'; +import ExternalLink from '../ExternalLink'; interface PluginCardProps { plugin: StorePlugin; @@ -108,7 +109,7 @@ const PluginCard: FC<PluginCardProps> = ({ plugin }) => { }} > <i>{t('PluginCard.plugin_full_access')}</i>{' '} - <a + <ExternalLink className="deckyStoreCardDescriptionRootLink" href="https://deckbrew.xyz/root" target="_blank" @@ -118,7 +119,7 @@ const PluginCard: FC<PluginCardProps> = ({ plugin }) => { }} > deckbrew.xyz/root - </a> + </ExternalLink> </div> )} </div> diff --git a/frontend/src/components/store/Store.tsx b/frontend/src/components/store/Store.tsx index d6342bba..1094b243 100644 --- a/frontend/src/components/store/Store.tsx +++ b/frontend/src/components/store/Store.tsx @@ -14,6 +14,7 @@ import { useTranslation } from 'react-i18next'; import logo from '../../../assets/plugin_store.png'; import Logger from '../../logger'; import { SortDirections, SortOptions, Store, StorePlugin, getPluginList, getStore } from '../../store'; +import ExternalLink from '../ExternalLink'; import PluginCard from './PluginCard'; const logger = new Logger('Store'); @@ -207,7 +208,7 @@ const BrowseTab: FC<{ setPluginCount: Dispatch<SetStateAction<number | null>> }> <h2 style={{ margin: 0 }}>{t('Store.store_testing_warning.label')}</h2> <span> {`${t('Store.store_testing_warning.desc')} `} - <a + <ExternalLink href="https://decky.xyz/testing" target="_blank" style={{ @@ -215,7 +216,7 @@ const BrowseTab: FC<{ setPluginCount: Dispatch<SetStateAction<number | null>> }> }} > decky.xyz/testing - </a> + </ExternalLink> </span> </div> )} @@ -269,7 +270,7 @@ const AboutTab: FC<{}> = () => { <span className="deckyStoreAboutHeader">Testing</span> <span> {t('Store.store_testing_cta')}{' '} - <a + <ExternalLink href="https://decky.xyz/testing" target="_blank" style={{ @@ -277,7 +278,7 @@ const AboutTab: FC<{}> = () => { }} > decky.xyz/testing - </a> + </ExternalLink> </span> <span className="deckyStoreAboutHeader">{t('Store.store_contrib.label')}</span> <span>{t('Store.store_contrib.desc')}</span> |
