From 8bbfc7cdf92066ddc6ada3fc322242fe2a861211 Mon Sep 17 00:00:00 2001 From: Pau Solsona Date: Mon, 12 Feb 2024 21:32:34 +0100 Subject: [PATCH 1/3] Rough First pass --- .vscode/settings.json | 16 +++++++++++++++ package-lock.json | 25 ++++++++++++++++------- package.json | 2 +- src/routes/Library/Library.js | 4 +++- src/routes/Library/useLibrary.js | 1 + src/routes/Library/useSelectableInputs.js | 17 ++++++++++++++- src/types/Selectable.d.ts | 7 +++++++ src/types/models/Library.d.ts | 2 ++ 8 files changed, 64 insertions(+), 10 deletions(-) create mode 100644 .vscode/settings.json diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 000000000..4df4d759e --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,16 @@ +{ + "workbench.colorCustomizations": { + "commandCenter.border": "#e7e7e799", + "sash.hoverBorder": "#ab307e", + "statusBar.background": "#832561", + "statusBar.foreground": "#e7e7e7", + "statusBarItem.hoverBackground": "#ab307e", + "statusBarItem.remoteBackground": "#832561", + "statusBarItem.remoteForeground": "#e7e7e7", + "titleBar.activeBackground": "#832561", + "titleBar.activeForeground": "#e7e7e7", + "titleBar.inactiveBackground": "#83256199", + "titleBar.inactiveForeground": "#e7e7e799" + }, + "peacock.color": "#832561" +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 41c7b048f..d93e3ab8c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,7 +12,7 @@ "@babel/runtime": "7.16.0", "@sentry/browser": "6.13.3", "@stremio/stremio-colors": "5.0.1", - "@stremio/stremio-core-web": "0.46.3", + "@stremio/stremio-core-web": "file:../stremio-core-web", "@stremio/stremio-icons": "5.2.0", "@stremio/stremio-video": "0.0.33", "a-color-picker": "1.2.1", @@ -70,6 +70,21 @@ "workbox-webpack-plugin": "^6.5.3" } }, + "../stremio-core-web": { + "name": "@stremio/stremio-core-web", + "version": "0.46.3", + "license": "MIT", + "dependencies": { + "@babel/runtime": "7.16.0" + }, + "devDependencies": { + "@babel/cli": "7.16.8", + "@babel/core": "7.16.0", + "@babel/plugin-transform-runtime": "7.16.10", + "@babel/preset-env": "7.16.0", + "babel-plugin-bundled-import-meta": "0.3.2" + } + }, "node_modules/@babel/code-frame": { "version": "7.16.0", "dev": true, @@ -2969,12 +2984,8 @@ "license": "MIT" }, "node_modules/@stremio/stremio-core-web": { - "version": "0.46.3", - "resolved": "https://registry.npmjs.org/@stremio/stremio-core-web/-/stremio-core-web-0.46.3.tgz", - "integrity": "sha512-5us8KQQ0EJ2xjLukcLu3yia7fa8BIjxjOwbMebpSLGEomq6MzVQMmRGp/7rId2ggfIej2Zwf/GBVepZ2/nLE4A==", - "dependencies": { - "@babel/runtime": "7.16.0" - } + "resolved": "../stremio-core-web", + "link": true }, "node_modules/@stremio/stremio-icons": { "version": "5.2.0", diff --git a/package.json b/package.json index 8e9edfd35..ae476a11a 100755 --- a/package.json +++ b/package.json @@ -15,7 +15,7 @@ "@babel/runtime": "7.16.0", "@sentry/browser": "6.13.3", "@stremio/stremio-colors": "5.0.1", - "@stremio/stremio-core-web": "0.46.3", + "@stremio/stremio-core-web": "file:../stremio-core-web", "@stremio/stremio-icons": "5.2.0", "@stremio/stremio-video": "0.0.33", "a-color-picker": "1.2.1", diff --git a/src/routes/Library/Library.js b/src/routes/Library/Library.js index e45dd585a..8a13bb66c 100644 --- a/src/routes/Library/Library.js +++ b/src/routes/Library/Library.js @@ -47,7 +47,7 @@ const Library = ({ model, urlParams, queryParams }) => { const profile = useProfile(); const notifications = useNotifications(); const library = useLibrary(model, urlParams, queryParams); - const [typeSelect, sortSelect, paginationInput] = useSelectableInputs(library); + const [typeSelect, sortSelect,stateSelect, paginationInput] = useSelectableInputs(library); const [inputsModalOpen, openInputsModal, closeInputsModal] = useBinaryState(false); return ( @@ -57,6 +57,7 @@ const Library = ({ model, urlParams, queryParams }) => {
+
{ paginationInput !== null ? @@ -119,6 +120,7 @@ const Library = ({ model, urlParams, queryParams }) => { + : null diff --git a/src/routes/Library/useLibrary.js b/src/routes/Library/useLibrary.js index 8b6dee216..8a9db6f63 100644 --- a/src/routes/Library/useLibrary.js +++ b/src/routes/Library/useLibrary.js @@ -12,6 +12,7 @@ const useLibrary = (model, urlParams, queryParams) => { request: { type: typeof urlParams.type === 'string' ? urlParams.type : null, sort: queryParams.has('sort') ? queryParams.get('sort') : undefined, + stateFilter: queryParams.has('stateFilter') ? queryParams.get('stateFilter') : undefined, page: queryParams.has('page') ? parseInt(queryParams.get('page'), 10) : undefined } } diff --git a/src/routes/Library/useSelectableInputs.js b/src/routes/Library/useSelectableInputs.js index f98307479..fa04742f0 100644 --- a/src/routes/Library/useSelectableInputs.js +++ b/src/routes/Library/useSelectableInputs.js @@ -32,6 +32,21 @@ const mapSelectableInputs = (library, t) => { window.location = event.value; } }; + const stateSelect = { + title: t.string('SELECT_STATEFILTER'), + options: library.selectable.stateFilters + .map(({ stateFilter, deepLinks }) => ({ + value: deepLinks.library, + label: t.stringWithPrefix(stateFilter.toUpperCase(), 'STATEFILTER_') + })), + selected: library.selectable.stateFilters + .filter(({ selected }) => selected) + .map(({ deepLinks }) => deepLinks.library), + onSelect: (event) => { + window.location = event.value; + } + }; + const paginationInput = library.selectable.prevPage || library.selectable.nextPage ? { label: library.selected.request.page.toString(), @@ -46,7 +61,7 @@ const mapSelectableInputs = (library, t) => { } : null; - return [typeSelect, sortSelect, paginationInput]; + return [typeSelect, sortSelect,stateSelect, paginationInput]; }; const useSelectableInputs = (library) => { diff --git a/src/types/Selectable.d.ts b/src/types/Selectable.d.ts index 36d4be598..41b51594e 100644 --- a/src/types/Selectable.d.ts +++ b/src/types/Selectable.d.ts @@ -10,6 +10,13 @@ type SelectableSort = { deepLinks: T }; +type SelectableStateFilter = { + stateFilter: string, + selected: boolean, + deepLinks: T +}; + + type SelectableExtra = { isRequired: boolean, name: string, diff --git a/src/types/models/Library.d.ts b/src/types/models/Library.d.ts index 6599c2ccf..51fa5819c 100644 --- a/src/types/models/Library.d.ts +++ b/src/types/models/Library.d.ts @@ -17,12 +17,14 @@ type Library = { nextPage: LibraryPage, prevPage: LibraryPage, sorts: SelectableSort[], + stateFilters: SelectableStateFilter[], types: SelectableType[], }, selected: { request: { page: number, sort: string, + stateFilter: string, type: string | null, } } | null, From 10c6c7822a25ac7fbd7cf53427a00627b9ff9dc3 Mon Sep 17 00:00:00 2001 From: Pau Solsona Date: Mon, 12 Feb 2024 23:54:47 +0100 Subject: [PATCH 2/3] renamed --- src/routes/Library/useLibrary.js | 2 +- src/routes/Library/useSelectableInputs.js | 10 +++++----- src/types/Selectable.d.ts | 4 ++-- src/types/models/Library.d.ts | 4 ++-- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/routes/Library/useLibrary.js b/src/routes/Library/useLibrary.js index 8a9db6f63..e8298de6a 100644 --- a/src/routes/Library/useLibrary.js +++ b/src/routes/Library/useLibrary.js @@ -12,7 +12,7 @@ const useLibrary = (model, urlParams, queryParams) => { request: { type: typeof urlParams.type === 'string' ? urlParams.type : null, sort: queryParams.has('sort') ? queryParams.get('sort') : undefined, - stateFilter: queryParams.has('stateFilter') ? queryParams.get('stateFilter') : undefined, + watched: queryParams.has('watched') ? queryParams.get('watched') : undefined, page: queryParams.has('page') ? parseInt(queryParams.get('page'), 10) : undefined } } diff --git a/src/routes/Library/useSelectableInputs.js b/src/routes/Library/useSelectableInputs.js index fa04742f0..38f585bf2 100644 --- a/src/routes/Library/useSelectableInputs.js +++ b/src/routes/Library/useSelectableInputs.js @@ -33,13 +33,13 @@ const mapSelectableInputs = (library, t) => { } }; const stateSelect = { - title: t.string('SELECT_STATEFILTER'), - options: library.selectable.stateFilters - .map(({ stateFilter, deepLinks }) => ({ + title: t.string('SELECT_WATCHED'), + options: library.selectable.watcheds + .map(({ watched, deepLinks }) => ({ value: deepLinks.library, - label: t.stringWithPrefix(stateFilter.toUpperCase(), 'STATEFILTER_') + label: t.stringWithPrefix(watched.toUpperCase(), 'WATCHED_') })), - selected: library.selectable.stateFilters + selected: library.selectable.watcheds .filter(({ selected }) => selected) .map(({ deepLinks }) => deepLinks.library), onSelect: (event) => { diff --git a/src/types/Selectable.d.ts b/src/types/Selectable.d.ts index 41b51594e..814a25429 100644 --- a/src/types/Selectable.d.ts +++ b/src/types/Selectable.d.ts @@ -10,8 +10,8 @@ type SelectableSort = { deepLinks: T }; -type SelectableStateFilter = { - stateFilter: string, +type SelectableWatched = { + watched: string, selected: boolean, deepLinks: T }; diff --git a/src/types/models/Library.d.ts b/src/types/models/Library.d.ts index 51fa5819c..df826c566 100644 --- a/src/types/models/Library.d.ts +++ b/src/types/models/Library.d.ts @@ -17,14 +17,14 @@ type Library = { nextPage: LibraryPage, prevPage: LibraryPage, sorts: SelectableSort[], - stateFilters: SelectableStateFilter[], + watcheds: SelectableWatched[], types: SelectableType[], }, selected: { request: { page: number, sort: string, - stateFilter: string, + watched: string, type: string | null, } } | null, From 9944cb1fa4575ecb758cf3bc812e1ca91a160650 Mon Sep 17 00:00:00 2001 From: Pau Solsona Date: Tue, 13 Feb 2024 15:57:00 +0100 Subject: [PATCH 3/3] renamed to filter --- src/routes/Library/useLibrary.js | 2 +- src/routes/Library/useSelectableInputs.js | 8 ++++---- src/types/Selectable.d.ts | 4 ++-- src/types/models/Library.d.ts | 4 ++-- 4 files changed, 9 insertions(+), 9 deletions(-) diff --git a/src/routes/Library/useLibrary.js b/src/routes/Library/useLibrary.js index e8298de6a..22c7dee90 100644 --- a/src/routes/Library/useLibrary.js +++ b/src/routes/Library/useLibrary.js @@ -12,7 +12,7 @@ const useLibrary = (model, urlParams, queryParams) => { request: { type: typeof urlParams.type === 'string' ? urlParams.type : null, sort: queryParams.has('sort') ? queryParams.get('sort') : undefined, - watched: queryParams.has('watched') ? queryParams.get('watched') : undefined, + filter: queryParams.has('filter') ? queryParams.get('filter') : undefined, page: queryParams.has('page') ? parseInt(queryParams.get('page'), 10) : undefined } } diff --git a/src/routes/Library/useSelectableInputs.js b/src/routes/Library/useSelectableInputs.js index 38f585bf2..830b7de1c 100644 --- a/src/routes/Library/useSelectableInputs.js +++ b/src/routes/Library/useSelectableInputs.js @@ -33,13 +33,13 @@ const mapSelectableInputs = (library, t) => { } }; const stateSelect = { - title: t.string('SELECT_WATCHED'), - options: library.selectable.watcheds + title: t.string('SELECT_FILTER'), + options: library.selectable.filters .map(({ watched, deepLinks }) => ({ value: deepLinks.library, - label: t.stringWithPrefix(watched.toUpperCase(), 'WATCHED_') + label: t.stringWithPrefix(watched.toUpperCase(), 'FILTER_') })), - selected: library.selectable.watcheds + selected: library.selectable.filters .filter(({ selected }) => selected) .map(({ deepLinks }) => deepLinks.library), onSelect: (event) => { diff --git a/src/types/Selectable.d.ts b/src/types/Selectable.d.ts index 814a25429..b116bd036 100644 --- a/src/types/Selectable.d.ts +++ b/src/types/Selectable.d.ts @@ -10,8 +10,8 @@ type SelectableSort = { deepLinks: T }; -type SelectableWatched = { - watched: string, +type SelectableFilter = { + filter: string, selected: boolean, deepLinks: T }; diff --git a/src/types/models/Library.d.ts b/src/types/models/Library.d.ts index df826c566..a9d14774d 100644 --- a/src/types/models/Library.d.ts +++ b/src/types/models/Library.d.ts @@ -17,14 +17,14 @@ type Library = { nextPage: LibraryPage, prevPage: LibraryPage, sorts: SelectableSort[], - watcheds: SelectableWatched[], + filters: SelectableFilter[], types: SelectableType[], }, selected: { request: { page: number, sort: string, - watched: string, + filter: string, type: string | null, } } | null,