summaryrefslogtreecommitdiff
path: root/frontend/src/components/store/Store.tsx
diff options
context:
space:
mode:
authorAAGaming <aa@mail.catvibers.me>2022-08-21 16:41:25 -0400
committerAAGaming <aa@mail.catvibers.me>2022-08-21 16:41:25 -0400
commit8b3f569a09db9daf7748426f916a66591159928f (patch)
tree237cc3711c7098b30a7e7cda97db9e406b0f7db0 /frontend/src/components/store/Store.tsx
parent1930400032a850b833f5f71523008e326f40547a (diff)
downloaddecky-loader-8b3f569a09db9daf7748426f916a66591159928f.tar.gz
decky-loader-8b3f569a09db9daf7748426f916a66591159928f.zip
Add plugin updater, notification badge, fixesv2.0.5-pre15
Diffstat (limited to 'frontend/src/components/store/Store.tsx')
-rw-r--r--frontend/src/components/store/Store.tsx100
1 files changed, 5 insertions, 95 deletions
diff --git a/frontend/src/components/store/Store.tsx b/frontend/src/components/store/Store.tsx
index 16e6994f..fd582edd 100644
--- a/frontend/src/components/store/Store.tsx
+++ b/frontend/src/components/store/Store.tsx
@@ -1,111 +1,21 @@
-import { ModalRoot, SteamSpinner, showModal, staticClasses } from 'decky-frontend-lib';
+import { SteamSpinner } from 'decky-frontend-lib';
import { FC, useEffect, useState } from 'react';
+import { LegacyStorePlugin, StorePlugin, getLegacyPluginList, getPluginList } from '../../store';
import PluginCard from './PluginCard';
-export interface StorePluginVersion {
- name: string;
- hash: string;
-}
-
-export interface StorePlugin {
- id: number;
- name: string;
- versions: StorePluginVersion[];
- author: string;
- description: string;
- tags: string[];
-}
-
-export interface LegacyStorePlugin {
- artifact: string;
- versions: {
- [version: string]: string;
- };
- author: string;
- description: string;
- tags: string[];
-}
-
-export async function installFromURL(url: string) {
- const formData = new FormData();
- const splitURL = url.split('/');
- formData.append('name', splitURL[splitURL.length - 1].replace('.zip', ''));
- formData.append('artifact', url);
- await fetch('http://localhost:1337/browser/install_plugin', {
- method: 'POST',
- body: formData,
- credentials: 'include',
- headers: {
- Authentication: window.deckyAuthToken,
- },
- });
-}
-
-export function requestLegacyPluginInstall(plugin: LegacyStorePlugin, selectedVer: string) {
- showModal(
- <ModalRoot
- onOK={() => {
- const formData = new FormData();
- formData.append('name', plugin.artifact);
- formData.append('artifact', `https://github.com/${plugin.artifact}/archive/refs/tags/${selectedVer}.zip`);
- formData.append('version', selectedVer);
- formData.append('hash', plugin.versions[selectedVer]);
- fetch('http://localhost:1337/browser/install_plugin', {
- method: 'POST',
- body: formData,
- credentials: 'include',
- headers: {
- Authentication: window.deckyAuthToken,
- },
- });
- }}
- onCancel={() => {
- // do nothing
- }}
- >
- <div className={staticClasses.Title} style={{ flexDirection: 'column', boxShadow: 'unset' }}>
- Using legacy plugins
- </div>
- You are currently installing a <b>legacy</b> plugin. Legacy plugins are no longer supported and may have issues.
- Legacy plugins do not support gamepad input. To interact with a legacy plugin, you will need to use the
- touchscreen.
- </ModalRoot>,
- );
-}
-
-export async function requestPluginInstall(plugin: StorePlugin, selectedVer: StorePluginVersion) {
- const formData = new FormData();
- formData.append('name', plugin.name);
- formData.append('artifact', `https://cdn.tzatzikiweeb.moe/file/steam-deck-homebrew/versions/${selectedVer.hash}.zip`);
- formData.append('version', selectedVer.name);
- formData.append('hash', selectedVer.hash);
- await fetch('http://localhost:1337/browser/install_plugin', {
- method: 'POST',
- body: formData,
- credentials: 'include',
- headers: {
- Authentication: window.deckyAuthToken,
- },
- });
-}
-
const StorePage: FC<{}> = () => {
const [data, setData] = useState<StorePlugin[] | null>(null);
const [legacyData, setLegacyData] = useState<LegacyStorePlugin[] | null>(null);
useEffect(() => {
(async () => {
- const res = await fetch('https://beta.deckbrew.xyz/plugins', {
- method: 'GET',
- }).then((r) => r.json());
+ const res = await getPluginList();
console.log(res);
- setData(res.filter((x: StorePlugin) => x.name !== 'Example Plugin'));
+ setData(res);
})();
(async () => {
- const res = await fetch('https://plugins.deckbrew.xyz/get_plugins', {
- method: 'GET',
- }).then((r) => r.json());
+ const res = await getLegacyPluginList();
console.log(res);
setLegacyData(res);
})();