summaryrefslogtreecommitdiff
path: root/frontend/src/store.tsx
diff options
context:
space:
mode:
authorParty Wumpus <48649272+PartyWumpus@users.noreply.github.com>2024-02-07 17:38:08 +0000
committerGitHub <noreply@github.com>2024-02-07 17:38:08 +0000
commitfd4ed811be7871f85abbf6b8e86b8eb13b90cf94 (patch)
tree0a05e44942157ec0c7d5d1c1fe4df16b52391115 /frontend/src/store.tsx
parent3e4c255c5bbf70923e9b2fd831eef22d2b037dc1 (diff)
downloaddecky-loader-fd4ed811be7871f85abbf6b8e86b8eb13b90cf94.tar.gz
decky-loader-fd4ed811be7871f85abbf6b8e86b8eb13b90cf94.zip
Refactor plugin store and add sorting by downloads and release date (#547)v2.10.15-pre2
* 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
Diffstat (limited to 'frontend/src/store.tsx')
-rw-r--r--frontend/src/store.tsx24
1 files changed, 22 insertions, 2 deletions
diff --git a/frontend/src/store.tsx b/frontend/src/store.tsx
index fd458bef..ee32f0f9 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,11 +47,20 @@ export async function getStore(): Promise<Store> {
return await getSetting<Store>('store', Store.Default);
}
-export async function getPluginList(): Promise<StorePlugin[]> {
+export async function getPluginList(
+ sort_by: SortOptions | null = null,
+ sort_direction: SortDirections | null = null,
+): Promise<StorePlugin[]> {
let version = await window.DeckyPluginLoader.updateVersion();
let store = await getSetting<Store | null>('store', null);
let customURL = await getSetting<string>('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.');
@@ -62,7 +82,7 @@ export async function getPluginList(): Promise<StorePlugin[]> {
storeURL = 'https://plugins.deckbrew.xyz/plugins';
break;
}
- return fetch(storeURL, {
+ return fetch(storeURL + query, {
method: 'GET',
headers: {
'X-Decky-Version': version.current,