summaryrefslogtreecommitdiff
path: root/frontend/src/components/store/Store.tsx
diff options
context:
space:
mode:
Diffstat (limited to 'frontend/src/components/store/Store.tsx')
-rw-r--r--frontend/src/components/store/Store.tsx55
1 files changed, 55 insertions, 0 deletions
diff --git a/frontend/src/components/store/Store.tsx b/frontend/src/components/store/Store.tsx
new file mode 100644
index 00000000..ebb2bb8e
--- /dev/null
+++ b/frontend/src/components/store/Store.tsx
@@ -0,0 +1,55 @@
+import { SteamSpinner } from 'decky-frontend-lib';
+import { FC, useEffect, useState } from 'react';
+
+import PluginCard from './PluginCard';
+
+export interface StorePlugin {
+ artifact: string;
+ versions: {
+ [version: string]: string;
+ };
+ author: string;
+ description: string;
+ tags: string[];
+}
+
+const StorePage: FC<{}> = () => {
+ const [data, setData] = useState<StorePlugin[] | null>(null);
+
+ useEffect(() => {
+ (async () => {
+ const res = await fetch('https://beta.deckbrew.xyz/get_plugins', { method: 'GET' }).then((r) => r.json());
+ console.log(res);
+ setData(res);
+ })();
+ }, []);
+
+ return (
+ <div
+ style={{
+ marginTop: '40px',
+ height: 'calc( 100% - 40px )',
+ overflowY: 'scroll',
+ }}
+ >
+ <div
+ style={{
+ display: 'flex',
+ flexWrap: 'nowrap',
+ flexDirection: 'column',
+ height: '100%',
+ }}
+ >
+ {data === null ? (
+ <div style={{ height: '100%' }}>
+ <SteamSpinner />
+ </div>
+ ) : (
+ data.map((plugin: StorePlugin) => <PluginCard plugin={plugin} />)
+ )}
+ </div>
+ </div>
+ );
+};
+
+export default StorePage;