summaryrefslogtreecommitdiff
path: root/frontend/src
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src')
-rw-r--r--frontend/src/components/ExternalLink.tsx16
-rw-r--r--frontend/src/components/store/PluginCard.tsx5
-rw-r--r--frontend/src/components/store/Store.tsx9
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>