From 5a212e95fc2dfb6725b6996b4a72a2acd8a6b942 Mon Sep 17 00:00:00 2001 From: Beebles <102569435+beebls@users.noreply.github.com> Date: Wed, 7 Aug 2024 16:57:21 -0600 Subject: feat(motd): add motd component (untested) --- frontend/src/store.tsx | 138 ------------------------------------------------- 1 file changed, 138 deletions(-) delete mode 100644 frontend/src/store.tsx (limited to 'frontend/src/store.tsx') diff --git a/frontend/src/store.tsx b/frontend/src/store.tsx deleted file mode 100644 index dfd9b04b..00000000 --- a/frontend/src/store.tsx +++ /dev/null @@ -1,138 +0,0 @@ -import { compare } from 'compare-versions'; - -import { InstallType, Plugin, installPlugin, installPlugins } from './plugin'; -import { getSetting, setSetting } from './utils/settings'; - -export enum Store { - Default, - Testing, - Custom, -} - -export enum SortOptions { - name = 'name', - date = 'date', - downloads = 'downloads', -} - -export enum SortDirections { - ascending = 'asc', - descending = 'desc', -} - -export interface StorePluginVersion { - name: string; - hash: string; - artifact: string | undefined | null; -} - -export interface StorePlugin { - id: number; - name: string; - versions: StorePluginVersion[]; - author: string; - description: string; - tags: string[]; - image_url: string; -} - -export interface PluginInstallRequest { - plugin: string; - selectedVer: StorePluginVersion; - installType: InstallType; -} - -// name: version -export type PluginUpdateMapping = Map; - -export async function getStore(): Promise { - return await getSetting('store', Store.Default); -} - -export async function getPluginList( - sort_by: SortOptions | null = null, - sort_direction: SortDirections | null = null, -): Promise { - let version = await window.DeckyPluginLoader.updateVersion(); - let store = await getSetting('store', null); - let customURL = await getSetting('store-url', 'https://plugins.deckbrew.xyz/plugins'); - - let query: URLSearchParams | string = new URLSearchParams(); - sort_by && query.set('sort_by', sort_by); - sort_direction && query.set('sort_direction', sort_direction); - query = '?' + String(query); - - let storeURL; - if (store === null) { - console.log('Could not get store, using Default.'); - await setSetting('store', Store.Default); - store = Store.Default; - } - switch (+store) { - case Store.Default: - storeURL = 'https://plugins.deckbrew.xyz/plugins'; - break; - case Store.Testing: - storeURL = 'https://testing.deckbrew.xyz/plugins'; - break; - case Store.Custom: - storeURL = customURL; - break; - default: - console.error('Somehow you ended up without a standard URL, using the default URL.'); - storeURL = 'https://plugins.deckbrew.xyz/plugins'; - break; - } - return fetch(storeURL + query, { - method: 'GET', - headers: { - 'X-Decky-Version': version.current, - }, - }).then((r) => r.json()); -} - -export async function installFromURL(url: string) { - const splitURL = url.split('/'); - await installPlugin(url, splitURL[splitURL.length - 1].replace('.zip', '')); -} - -export async function requestPluginInstall(plugin: string, selectedVer: StorePluginVersion, installType: InstallType) { - const artifactUrl = selectedVer.artifact ?? pluginUrl(selectedVer.hash); - await installPlugin(artifactUrl, plugin, selectedVer.name, selectedVer.hash, installType); -} - -export async function requestMultiplePluginInstalls(requests: PluginInstallRequest[]) { - await installPlugins( - requests.map(({ plugin, installType, selectedVer }) => ({ - name: plugin, - artifact: selectedVer.artifact ?? pluginUrl(selectedVer.hash), - version: selectedVer.name, - hash: selectedVer.hash, - install_type: installType, - })), - ); -} - -export async function checkForPluginUpdates(plugins: Plugin[]): Promise { - const serverData = await getPluginList(); - const updateMap = new Map(); - for (let plugin of plugins) { - const remotePlugin = serverData?.find((x) => x.name == plugin.name); - //FIXME: Ugly hack since plugin.version might be null during evaluation, - //so this will set the older version possible - const curVer = plugin.version ? plugin.version : '0.0'; - if ( - remotePlugin && - remotePlugin.versions?.length > 0 && - plugin.version != remotePlugin?.versions?.[0]?.name && - compare(remotePlugin?.versions?.[0]?.name, curVer, '>') - ) { - updateMap.set(plugin.name, remotePlugin.versions[0]); - } - } - return updateMap; -} - -function pluginUrl(hash: string) { - return `https://cdn.tzatzikiweeb.moe/file/steam-deck-homebrew/versions/${hash}.zip`; -} -- cgit v1.2.3