diff options
| author | Party Wumpus <48649272+PartyWumpus@users.noreply.github.com> | 2024-02-07 17:38:08 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-02-07 17:38:08 +0000 |
| commit | fd4ed811be7871f85abbf6b8e86b8eb13b90cf94 (patch) | |
| tree | 0a05e44942157ec0c7d5d1c1fe4df16b52391115 /frontend/src/store.tsx | |
| parent | 3e4c255c5bbf70923e9b2fd831eef22d2b037dc1 (diff) | |
| download | decky-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.tsx | 24 |
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, |
