From ec41c6121956afc4eb33c9f21905cdce4c07a097 Mon Sep 17 00:00:00 2001 From: Party Wumpus <48649272+PartyWumpus@users.noreply.github.com> Date: Wed, 7 Feb 2024 17:38:08 +0000 Subject: Refactor plugin store and add sorting by downloads and release date (#547) * untested first commit * fix types & names * comment out built in sorting for now * rerun search when sort changes * fix ts complaints * use prettier * stop switch-case fall through * move spinner * use locale instead of hardcoded string * fix typo * add sorting by downloads & try using the data field in the dropdown for data * fix typing error * fix asc/desc in dropdown * fix asc/desc again. asc = smaller one go first aaaaa * I don't think i know what ascending means maybe * use props instead of children, like a normal component --- frontend/src/store.tsx | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) (limited to 'frontend/src/store.tsx') diff --git a/frontend/src/store.tsx b/frontend/src/store.tsx index 3fcfdb2f..8ab8f50a 100644 --- a/frontend/src/store.tsx +++ b/frontend/src/store.tsx @@ -7,6 +7,17 @@ export enum Store { Custom, } +export enum SortOptions { + name = 'name', + date = 'date', + downloads = 'downloads', +} + +export enum SortDirections { + ascending = 'asc', + descending = 'desc', +} + export interface StorePluginVersion { name: string; hash: string; @@ -36,10 +47,19 @@ export async function getStore(): Promise { return await getSetting('store', Store.Default); } -export async function getPluginList(): Promise { - let version = await DeckyPluginLoader.updateVersion(); +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.'); @@ -82,7 +102,7 @@ export async function getPluginList(): Promise { storeURL = 'https://plugins.deckbrew.xyz/plugins'; break; } - return fetch(storeURL, { + return fetch(storeURL + query, { method: 'GET', headers: { 'X-Decky-Version': version.current, -- cgit v1.2.3