From c61bc43cd0ee54e41443329d67c6313c2da41af8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 14 Oct 2024 12:09:16 +0200 Subject: [PATCH 001/323] First Commit: Poddy Setup --- .gitignore | 24 + README.md | 184 +- eslint.config.js | 38 + favicon/apple-touch-icon.png | Bin 0 -> 5842 bytes favicon/favicon-48x48.png | Bin 0 -> 1296 bytes favicon/favicon.ico | Bin 0 -> 15086 bytes favicon/favicon.svg | 1 + favicon/site.webmanifest | 21 + favicon/web-app-manifest-192x192.png | Bin 0 -> 6210 bytes favicon/web-app-manifest-512x512.png | Bin 0 -> 27998 bytes index.html | 17 + package-lock.json | 4371 ++++++++++++++++++++++++++ package.json | 28 + public/vite.svg | 1 + src/App.css | 42 + src/App.jsx | 12 + src/assets/react.svg | 1 + src/index.css | 68 + src/main.jsx | 10 + vite.config.js | 7 + 20 files changed, 4646 insertions(+), 179 deletions(-) create mode 100644 .gitignore create mode 100644 eslint.config.js create mode 100644 favicon/apple-touch-icon.png create mode 100644 favicon/favicon-48x48.png create mode 100644 favicon/favicon.ico create mode 100644 favicon/favicon.svg create mode 100644 favicon/site.webmanifest create mode 100644 favicon/web-app-manifest-192x192.png create mode 100644 favicon/web-app-manifest-512x512.png create mode 100644 index.html create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/vite.svg create mode 100644 src/App.css create mode 100644 src/App.jsx create mode 100644 src/assets/react.svg create mode 100644 src/index.css create mode 100644 src/main.jsx create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md index 180f3e063..f768e33fc 100644 --- a/README.md +++ b/README.md @@ -1,182 +1,8 @@ -# 🎵 PODCAST APP | PORTFOLIO PIECE 💿 -[DJS11] Starter Instructions for the Final Portfolio Piece Submission 🚀 +# React + Vite +This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. - -**Table of Contents** - -- [🤖 Technology](#-technology) -- [📦Data](#data) - - [Relationships](#relationships) - - [Endpoints](#endpoints) - - [Genre Titles](#genre-titles) -- [🧑 User Stories](#user-stories) - -## 🤖 Technology - -**You will be required to complete this project using React and a build-process to manage all the complexity involved.** - -You are welcome to use any other technology that you are comfortable with as well as React. It is recommended that you use TypeScript as well, however you are welcome to avoid TypeScript entirely if you do not feel comfortable with it’s usage just yet. - -## 📦Data - -**Data consists of three basic semantic units** - -- `SHOW`: A specific podcast that contains a single or several `SEASON` -- `SEASON`: A collection of `EPISODE` released across a specific timespan -- `EPISODE`: Corresponds to a specific MP3 file that user can listen - -However, the following information is also exposed via the API - -- `PREVIEW`: A summarised version of a `SHOW` that only contains basic information. Usually exposed when an array of different `SHOW` information is requested. -- `GENRE`: Information related to a (one of many) genres that can be assigned to a `SHOW` - -### Relationships - -The following chart indicates the relations between units of data. It uses Entity Relationship mapping. In order to understand the meaning of symbols in the chart please read [the overview on the Mermaid.js documentation](https://mermaid.js.org/syntax/entityRelationshipDiagram.html). - -Note that the text between the units indicates what properties map to one another. It is separated by means of three underscores (`___`). The value before the underscores is the mapping from the parent object, whereas the values after the underscore is the mapping from the child object. - -_Note that is some cases there is no way to infer the parent from the child itself , in those cases just the parent map is noted, with no value after the underscores_. - -```mermaid -erDiagram - -PREVIEW { - number id - string title - string description - number seasons - string image - array genreIds - updated string -} - -SHOW { - number id - string title - string description - array seasons -} - -SEASON { - number id - string title - string image - array episodes -} - -EPISODE { - number id - string file - string title -} - -GENRE { - number id - string title - string description - array showIds -} - -PREVIEW ||--|| SHOW: id___id -PREVIEW }|--|{ GENRE: genreIds___showIds -SHOW }|--|{ GENRE: genreIds___showIds -SHOW ||--|{ SEASON: seasons___ -SEASON ||--|{ EPISODE: episodes___ - -``` - -### Endpoints - -Data can be called via a `fetch` request to the following three endpoints. Note that there is not always a one-to-one mapping between endpoints and actual data structures. Also note that ***``** indicates where the dynamic ID for the requested item should be placed. For example: `[https://podcast-api.netlify.app/genre/3](https://podcast-api.netlify.app/genre/3)`* - -| URL | | -| --- | --- | -| `https://podcast-api.netlify.app` | Returns an array of PREVIEW | -| `https://podcast-api.netlify.app/genre/` | Returns a GENRE object | -| `https://podcast-api.netlify.app/id/` | Returns a SHOW object with several SEASON and EPISODE objects directly embedded within | - -### Genre Titles - -Since genre information is only exposed on `PREVIEW` by means of the specific `GENRE` id, it is recommended that you include the mapping between genre id values and title in your code itself: - -| ID | Title | -| --- | --- | -| 1 | Personal Growth | -| 2 | Investigative Journalism | -| 3 | History | -| 4 | Comedy | -| 5 | Entertainment | -| 6 | Business | -| 7 | Fiction | -| 8 | News | -| 9 | Kids and Family | - -## 🧑 User Stories - -Please refer to the DJS rubric found in your dashboard spreadsheet for more detail. - -# CORE PROJECT REQUIREMENTS ✅ - -| CODE | CATEGORY | USER STORIES | DIFFICULTY | TOTAL | -|------|----------------------------|--------------------------------------------------------------------------------------------------------------------------------|------------|-------| -| P3.1 | Setup and Deployment | Project is deployed to a custom Netlify URL | Medium | 2 | -| P3.2 | | User sees a custom icon in the tab window. All favicon information has been created an added correctly via realfavicongenerator.net | Easy | 1 | -| P3.3 | | Metatag information has been created and added via metatags.io. Be mindful to manually replace all URL values (especially image URL) to absolute Netlify URL values (you will need to deploy to Netlify first) | Easy | 1 | -| P3.4 | UI/UX | User sees the name of all available shows on the platform | Easy | 1 | -| P3.5 | | User sees shows sorted alphabetically when the app loads (default sorting) | Hard | 3 | -| P3.6 | | User has a way to listen to any episode in a season for a show (note there is a single placeholder audio track for all shows) | Medium | 2 | -| P3.7 | | User is able to see a view where only episodes for a specific selected season are shown (Note that this can be a page view, a modal, or toggle dropdown - up to developer's design choice) | Medium | 2 | -| P3.8 | | User is able to toggle between different seasons for the same show | Hard | 3 | -| P3.9 | | User sees preview image of shows when browsing | Easy | 1 | -| P3.10| | User sees the amount of seasons as a number in a show when browsing | Easy | 1 | -| P3.11| | User sees a human-readable date to when a show was last updated | Easy | 1 | -| P3.12| | User sees what genres (as genre titles) a show is associated with when browsing | Medium | 2 | -| P3.13| | User sees a preview image of seasons for a specific show (Note some Shows have different images for each Season) | Easy | 1 | -| P3.14| | User sees the amount of episodes as a number for a season | Easy | 1 | -| P3.15| | User is able to go back to a show view from a season-specific view | Easy | 1 | -| P3.16| Data Fetching and State Management | All show data loaded via a fetch call from the API (Note no podcast data should be hardcoded in the application) | Medium | 2 | -| P3.17| | When viewing a specific show, data is loaded via fetch from individual show endpoint | Medium | 2 | -| P3.18| | There is a loading state while initial data is being loaded | Medium | 2 | -| P3.19| | There is a loading state while new data is being loaded | Hard | 3 | -| P3.20| User Interaction | User is able to mark specific episodes as favourites so that they can find them again (Note the requirement is that a specific episode of a specific season of a specific show is to be favourited) | Hard | 3 | -| P3.21| | User can visit a view where they see all their favourite episode | Hard | 3 | -| P3.22| | User is able to see the associated show and season when an episode is in favourites | Hard | 3 | -| P3.23| | Related by season/show episodes are grouped together in favourites | Hard | 3 | -| P3.24| | User is able to remove episodes from their favourites | Medium | 2 | -| P3.25| | User sees the date and time that they added something as a favourite | Medium | 2 | -| P3.26| | User is able to arrange favourites based on title from A-Z | Medium | 2 | -| P3.27| | User is able to arrange favourites based on title from Z-A | Medium | 2 | -| P3.28| | User is able to arrange favourites starting with the most recently updated | Medium | 2 | -| P3.29| | User is able to arrange favourites starting with the furthest back updated | Medium | 2 | -| P3.30| | User is able to arrange lists of shows based on title from A-Z | Medium | 2 | -| P3.31| | User is able to arrange lists of shows based on title from Z-A | Medium | 2 | -| P3.32| | User is able to arrange list showing the most recently updated (Newly updated Shows) | Medium | 2 | -| P3.33| | User is able to arrange list of shows from least recently updated (Oldest updated Shows) | Medium | 2 | -| P3.34| | Audio player is always visible so that user can listen to episodes while browsing | Medium | 2 | -| P3.35| | Audio player must show listening progress | Medium | 2 | -| P3.36| | User receives a notification that confirms they want to close the page when audio is playing | Medium | 2 | -| P3.37| | User can filter shows by genre | Hard | 3 | -| P3.38| Persistence and Storage | App remembers and shows what episodes user listened to all the way through. | Hard | 3 | -| P3.39| | Favourites must be persisted in localStorage | Hard | 3 | -| P3.40| | User has the option to "reset" all their progress, effectively removing their entire listening history. (Note marks are awarded only for "resetting" entire listening history) | Hard | 3 | -| P3.41| Overall Assessment | The project has a good appearance and Desktop layout when opened in a web browser. | Easy | 3 | -| P3.42| | The project is easy to navigate and interact with through a web browser. | Easy | 3 | -| P3.43| | The project's commit history shows short and clear commit messages. | Easy | 3 | -| P3.44| | The project displays well on different devices and all screen sizes, ensuring usability on tablets | Hard | 4 | -| P3.45| | The README file includes a comprehensive introduction to the project, setup instructions, usage examples, and contact information. | Easy | 3 | -| P3.46| | The project loads and functions without ANY bugs (Completed user stories possess no bugs whatsoever) | Hard | 4 | -| P3.47| | Well organized project structure & clean readable code | Medium | 3 | - -# STRETCH GOALS 💪 - -| CODE | CATEGORY | USER STORIES | DIFFICULTY | TOTAL | -|------|----------------------------|--------------------------------------------------------------------------------------------------------------------------------|------------|-------| -| P3.48| Additional Features | The project has extra features that make for a good user-experience | Hard | 3 | -| P3.49| | User is presented with a sliding carousel of possible shows they might be interested in on the landing page | Hard | 3 | -| P3.50| | User is able to filter shows based on title by means of a text input | Hard | 3 | -| P3.51| | User is able to find shows based on fuzzy matching of concepts | Hard | 3 | -| P3.52| | App displays the exact timestamp location of where they left off any episode | Hard | 3 | - +Currently, two official plugins are available: +- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh +- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh diff --git a/eslint.config.js b/eslint.config.js new file mode 100644 index 000000000..238d2e4e6 --- /dev/null +++ b/eslint.config.js @@ -0,0 +1,38 @@ +import js from '@eslint/js' +import globals from 'globals' +import react from 'eslint-plugin-react' +import reactHooks from 'eslint-plugin-react-hooks' +import reactRefresh from 'eslint-plugin-react-refresh' + +export default [ + { ignores: ['dist'] }, + { + files: ['**/*.{js,jsx}'], + languageOptions: { + ecmaVersion: 2020, + globals: globals.browser, + parserOptions: { + ecmaVersion: 'latest', + ecmaFeatures: { jsx: true }, + sourceType: 'module', + }, + }, + settings: { react: { version: '18.3' } }, + plugins: { + react, + 'react-hooks': reactHooks, + 'react-refresh': reactRefresh, + }, + rules: { + ...js.configs.recommended.rules, + ...react.configs.recommended.rules, + ...react.configs['jsx-runtime'].rules, + ...reactHooks.configs.recommended.rules, + 'react/jsx-no-target-blank': 'off', + 'react-refresh/only-export-components': [ + 'warn', + { allowConstantExport: true }, + ], + }, + }, +] diff --git a/favicon/apple-touch-icon.png b/favicon/apple-touch-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..42707e0fa6824fffa3cc45e58d7473eab713aec7 GIT binary patch literal 5842 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 XTfa2JfmH@Sq$Yr=Ae5^VEkpkY=noTB literal 0 HcmV?d00001 diff --git a/favicon/favicon-48x48.png b/favicon/favicon-48x48.png new file mode 100644 index 0000000000000000000000000000000000000000..5144809e9cf31f5003599e2cd9d379bd2d229281 GIT binary patch literal 1296 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 \ No newline at end of file diff --git a/favicon/site.webmanifest b/favicon/site.webmanifest new file mode 100644 index 000000000..de8400a95 --- /dev/null +++ b/favicon/site.webmanifest @@ -0,0 +1,21 @@ +{ + "name": "Poddy", + "short_name": "Poddy", + "icons": [ + { + "src": "/web-app-manifest-192x192.png", + "sizes": "192x192", + "type": "image/png", + "purpose": "maskable" + }, + { + "src": "/web-app-manifest-512x512.png", + "sizes": "512x512", + "type": "image/png", + "purpose": "maskable" + } + ], + "theme_color": "#ffffff", + "background_color": "#000000", + "display": "standalone" +} \ No newline at end of file diff --git a/favicon/web-app-manifest-192x192.png b/favicon/web-app-manifest-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..780659b5eb18c6cfad2afd1b238facf02e79edd7 GIT binary patch literal 6210 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 + + + + + + + + + + Poddy + + +
+ + + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..500dc710a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,4371 @@ +{ + "name": "poddy", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "poddy", + "version": "0.0.0", + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@eslint/js": "^9.11.1", + "@types/react": "^18.3.10", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.2", + "eslint": "^9.11.1", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.12", + "globals": "^15.9.0", + "vite": "^5.4.8" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", + "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/highlight": "^7.25.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.8.tgz", + "integrity": "sha512-ZsysZyXY4Tlx+Q53XdnOFmqwfB9QDTHYxaZYajWRoBLuLEAwI2UIbtxOjWh/cFaa9IKUlcB+DDuoskLuKu56JA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.8.tgz", + "integrity": "sha512-Oixnb+DzmRT30qu9d3tJSQkxuygWm32DFykT4bRoORPa9hZ/L4KhVB/XiRm6KG+roIEM7DBQlmg27kw2HZkdZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/helper-compilation-targets": "^7.25.7", + "@babel/helper-module-transforms": "^7.25.7", + "@babel/helpers": "^7.25.7", + "@babel/parser": "^7.25.8", + "@babel/template": "^7.25.7", + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.8", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", + "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.7", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^3.0.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.7.tgz", + "integrity": "sha512-DniTEax0sv6isaw6qSQSfV4gVRNtw2rte8HHM45t9ZR0xILaufBRNkpMifCRiAPyvL4ACD6v0gfCwCmtOQaV4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/compat-data": "^7.25.7", + "@babel/helper-validator-option": "^7.25.7", + "browserslist": "^4.24.0", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", + "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.7.tgz", + "integrity": "sha512-k/6f8dKG3yDz/qCwSM+RKovjMix563SLxQFo0UhRNo239SP6n9u5/eLtKD6EAjwta2JHJ49CsD8pms2HdNiMMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.25.7", + "@babel/helper-simple-access": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "@babel/traverse": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.25.7.tgz", + "integrity": "sha512-eaPZai0PiqCi09pPs3pAFfl/zYgGaE6IdXtYvmf0qlcDTd3WCtO7JWCcRd64e0EQrcYgiHibEZnOGsSY4QSgaw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.25.7.tgz", + "integrity": "sha512-FPGAkJmyoChQeM+ruBGIDyrT2tKfZJO8NcxdC+CWNJi7N8/rZpSxK7yvBJ5O/nF1gfu5KzN7VKG3YVSLFfRSxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/traverse": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", + "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", + "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.25.7.tgz", + "integrity": "sha512-ytbPLsm+GjArDYXJ8Ydr1c/KJuutjF2besPNbIZnZ6MKUxi/uTA22t2ymmA4WFjZFpjiAMO0xuuJPqK2nvDVfQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.7.tgz", + "integrity": "sha512-Sv6pASx7Esm38KQpF/U/OXLwPPrdGHNKoeblRxgZRLXnAtnkEe4ptJPDtAZM7fBLadbc1Q07kQpSiGQ0Jg6tRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", + "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-validator-identifier": "^7.25.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", + "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.25.8" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-self": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.25.7.tgz", + "integrity": "sha512-JD9MUnLbPL0WdVK8AWC7F7tTG2OS6u/AKKnsK+NdRhUiVdnzyR1S3kKQCaRLOiaULvUiqK6Z4JQE635VgtCFeg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-transform-react-jsx-source": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.25.7.tgz", + "integrity": "sha512-S/JXG/KrbIY06iyJPKfxr0qRxnhNOdkNXYBl/rmwgDd72cQLH9tEGkDm/yJPGvcSIUoikzfjMios9i+xT/uv9w==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-plugin-utils": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", + "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/types": "^7.25.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", + "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.25.7", + "@babel/generator": "^7.25.7", + "@babel/parser": "^7.25.7", + "@babel/template": "^7.25.7", + "@babel/types": "^7.25.7", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.25.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", + "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/helper-string-parser": "^7.25.7", + "@babel/helper-validator-identifier": "^7.25.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "license": "MIT", + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint/config-array": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.18.0.tgz", + "integrity": "sha512-fTxvnS1sRMu3+JjXwJG0j/i4RT9u4qJ+lqS/yCGap4lH4zZGzQ7tu+xZqQmcMZq5OBZDL4QRxQzRjkWcGt8IVw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@eslint/object-schema": "^2.1.4", + "debug": "^4.3.1", + "minimatch": "^3.1.2" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/core": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@eslint/core/-/core-0.6.0.tgz", + "integrity": "sha512-8I2Q8ykA4J0x0o7cg67FPVnehcqWTBehu/lmY+bolPFHGjh49YzGBMXTvpqVgEbBdvNCSxj6iFgiIyHzf03lzg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-3.1.0.tgz", + "integrity": "sha512-4Bfj15dVJdoy3RfZmmo86RK1Fwzn6SstsvK9JS+BaVKqC6QQQQyXekNaC+g+LKNgkQ+2VhGAzm6hO40AhMR3zQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^10.0.1", + "globals": "^14.0.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/globals": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-14.0.0.tgz", + "integrity": "sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@eslint/js": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-9.12.0.tgz", + "integrity": "sha512-eohesHH8WFRUprDNyEREgqP6beG6htMeUYeCpkEgBCieCMme5r9zFWjzAJp//9S+Kub4rqE+jXe9Cp1a7IYIIA==", + "dev": true, + "license": "MIT", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/object-schema": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-2.1.4.tgz", + "integrity": "sha512-BsWiH1yFGjXXS2yvrf5LyuoSIIbPrGUWob917o+BTKuZ7qJdxX8aJLRxs1fS9n6r7vESrq1OUqb68dANcFXuQQ==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@eslint/plugin-kit": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", + "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "levn": "^0.4.1" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + } + }, + "node_modules/@humanfs/core": { + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", + "integrity": "sha512-2cbWIHbZVEweE853g8jymffCA+NCMiuqeECeBBLm8dg2oFdjuGJhgN4UAbI+6v0CKbbhvtXA4qV8YR5Ji86nmw==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanfs/node": { + "version": "0.16.5", + "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.5.tgz", + "integrity": "sha512-KSPA4umqSG4LHYRodq31VDwKAvaTF4xmVlzM8Aeh4PlU1JQ3IG0wiA8C25d3RQ9nJyM3mBHyI53K06VVL/oFFg==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "@humanfs/core": "^0.19.0", + "@humanwhocodes/retry": "^0.3.0" + }, + "engines": { + "node": ">=18.18.0" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/retry": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", + "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": ">=18.18" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", + "integrity": "sha512-Q6HJd7Y6xdB48x8ZNVDOqsbh2uByBhgK8PiQgPhwkIw/HC/YX5Ghq2mQY5sRMZWHb3VsFkWooUVOZHKr7DmDIA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.24.0.tgz", + "integrity": "sha512-ijLnS1qFId8xhKjT81uBHuuJp2lU4x2yxa4ctFPtG+MqEE6+C5f/+X/bStmxapgmwLwiL3ih122xv8kVARNAZA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.24.0.tgz", + "integrity": "sha512-bIv+X9xeSs1XCk6DVvkO+S/z8/2AMt/2lMqdQbMrmVpgFvXlmde9mLcbQpztXm1tajC3raFDqegsH18HQPMYtA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.24.0.tgz", + "integrity": "sha512-X6/nOwoFN7RT2svEQWUsW/5C/fYMBe4fnLK9DQk4SX4mgVBiTA9h64kjUYPvGQ0F/9xwJ5U5UfTbl6BEjaQdBQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.24.0.tgz", + "integrity": "sha512-0KXvIJQMOImLCVCz9uvvdPgfyWo93aHHp8ui3FrtOP57svqrF/roSSR5pjqL2hcMp0ljeGlU4q9o/rQaAQ3AYA==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.24.0.tgz", + "integrity": "sha512-it2BW6kKFVh8xk/BnHfakEeoLPv8STIISekpoF+nBgWM4d55CZKc7T4Dx1pEbTnYm/xEKMgy1MNtYuoA8RFIWw==", + "cpu": [ + "arm" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.24.0.tgz", + "integrity": "sha512-i0xTLXjqap2eRfulFVlSnM5dEbTVque/3Pi4g2y7cxrs7+a9De42z4XxKLYJ7+OhE3IgxvfQM7vQc43bwTgPwA==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.24.0.tgz", + "integrity": "sha512-9E6MKUJhDuDh604Qco5yP/3qn3y7SLXYuiC0Rpr89aMScS2UAmK1wHP2b7KAa1nSjWJc/f/Lc0Wl1L47qjiyQw==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.24.0.tgz", + "integrity": "sha512-2XFFPJ2XMEiF5Zi2EBf4h73oR1V/lycirxZxHZNc93SqDN/IWhYYSYj8I9381ikUFXZrz2v7r2tOVk2NBwxrWw==", + "cpu": [ + "ppc64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.24.0.tgz", + "integrity": "sha512-M3Dg4hlwuntUCdzU7KjYqbbd+BLq3JMAOhCKdBE3TcMGMZbKkDdJ5ivNdehOssMCIokNHFOsv7DO4rlEOfyKpg==", + "cpu": [ + "riscv64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.24.0.tgz", + "integrity": "sha512-mjBaoo4ocxJppTorZVKWFpy1bfFj9FeCMJqzlMQGjpNPY9JwQi7OuS1axzNIk0nMX6jSgy6ZURDZ2w0QW6D56g==", + "cpu": [ + "s390x" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.24.0.tgz", + "integrity": "sha512-ZXFk7M72R0YYFN5q13niV0B7G8/5dcQ9JDp8keJSfr3GoZeXEoMHP/HlvqROA3OMbMdfr19IjCeNAnPUG93b6A==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.24.0.tgz", + "integrity": "sha512-w1i+L7kAXZNdYl+vFvzSZy8Y1arS7vMgIy8wusXJzRrPyof5LAb02KGr1PD2EkRcl73kHulIID0M501lN+vobQ==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.24.0.tgz", + "integrity": "sha512-VXBrnPWgBpVDCVY6XF3LEW0pOU51KbaHhccHw6AS6vBWIC60eqsH19DAeeObl+g8nKAz04QFdl/Cefta0xQtUQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.24.0.tgz", + "integrity": "sha512-xrNcGDU0OxVcPTH/8n/ShH4UevZxKIO6HJFK0e15XItZP2UcaiLFd5kiX7hJnqCbSztUF8Qot+JWBC/QXRPYWQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.24.0.tgz", + "integrity": "sha512-fbMkAF7fufku0N2dE5TBXcNlg0pt0cJue4xBRE2Qc5Vqikxr4VCgKj/ht6SMdFcOacVA9rqF70APJ8RN/4vMJw==", + "cpu": [ + "x64" + ], + "dev": true, + "license": "MIT", + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/prop-types": { + "version": "15.7.13", + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", + "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/react": { + "version": "18.3.11", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", + "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/prop-types": "*", + "csstype": "^3.0.2" + } + }, + "node_modules/@types/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-qW1Mfv8taImTthu4KoXgDfLuk4bydU6Q/TkADnDWWHwi4NX4BR+LWfTp2sVmTqRrsHvyDDTelgelxJ+SsejKKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, + "node_modules/@vitejs/plugin-react": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.2.tgz", + "integrity": "sha512-hieu+o05v4glEBucTcKMK3dlES0OeJlD9YVOAPraVMOInBCwzumaIFiUjr4bHK7NPgnAHgiskUoceKercrN8vg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@babel/core": "^7.25.2", + "@babel/plugin-transform-react-jsx-self": "^7.24.7", + "@babel/plugin-transform-react-jsx-source": "^7.24.7", + "@types/babel__core": "^7.20.5", + "react-refresh": "^0.14.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "peerDependencies": { + "vite": "^4.2.0 || ^5.0.0" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "license": "MIT", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "license": "MIT", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true, + "license": "Python-2.0" + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/browserslist": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.0.tgz", + "integrity": "sha512-Rmb62sR1Zpjql25eSanFGEhAxcFwfA1K0GuQcLoaJBAcENegrQut3hYdhXFF1obQfiDyqIW/cLM5HSJ/9k884A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "caniuse-lite": "^1.0.30001663", + "electron-to-chromium": "^1.5.28", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001668", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001668.tgz", + "integrity": "sha512-nWLrdxqCdblixUO+27JtGJJE/txpJlyUy5YN1u53wLZkP0emYCo5zgS6QYft7VUYR42LGgi/S5hdLZTrnyIddw==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "CC-BY-4.0" + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true, + "license": "MIT" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true, + "license": "MIT" + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true, + "license": "MIT" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "license": "MIT", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "dev": true, + "license": "MIT" + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "license": "Apache-2.0", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/electron-to-chromium": { + "version": "1.5.36", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.36.tgz", + "integrity": "sha512-HYTX8tKge/VNp6FGO+f/uVDmUkq+cEfcxYhKf15Akc4M5yxt5YmorwlAitKWjWhWQnKcDRBAQKXkhqqXMqcrjw==", + "dev": true, + "license": "ISC" + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.1.0.tgz", + "integrity": "sha512-/SurEfycdyssORP/E+bj4sEu1CWw4EmLDsHynHwSXQ7utgbrMRWW195pTrCjFgFCddf/UkYm3oqKPRq5i8bJbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.4", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.3", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/eslint": { + "version": "9.12.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-9.12.0.tgz", + "integrity": "sha512-UVIOlTEWxwIopRL1wgSQYdnVDcEvs2wyaO6DGo5mXqe3r16IoCNWkR29iHhyaP4cICWjbgbmFUGAhh0GJRuGZw==", + "dev": true, + "license": "MIT", + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.11.0", + "@eslint/config-array": "^0.18.0", + "@eslint/core": "^0.6.0", + "@eslint/eslintrc": "^3.1.0", + "@eslint/js": "9.12.0", + "@eslint/plugin-kit": "^0.2.0", + "@humanfs/node": "^0.16.5", + "@humanwhocodes/module-importer": "^1.0.1", + "@humanwhocodes/retry": "^0.3.1", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^8.1.0", + "eslint-visitor-keys": "^4.1.0", + "espree": "^10.2.0", + "esquery": "^1.5.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^8.0.0", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://eslint.org/donate" + }, + "peerDependencies": { + "jiti": "*" + }, + "peerDependenciesMeta": { + "jiti": { + "optional": true + } + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.37.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", + "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react-hooks": { + "version": "5.1.0-rc-fb9a90fa48-20240614", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-hooks/-/eslint-plugin-react-hooks-5.1.0-rc-fb9a90fa48-20240614.tgz", + "integrity": "sha512-xsiRwaDNF5wWNC4ZHLut+x/YcAxksUd9Rizt7LaEn3bV8VyYRpXnRJQlLOfYaVy9esk4DFP4zPPnoNVjq5Gc0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "eslint": "^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0-0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-react-refresh": { + "version": "0.4.12", + "resolved": "https://registry.npmjs.org/eslint-plugin-react-refresh/-/eslint-plugin-react-refresh-0.4.12.tgz", + "integrity": "sha512-9neVjoGv20FwYtCP6CB1dzR1vr57ZDNOXst21wd2xJ/cTlM2xLq0GWVlSNTdMn/4BtP6cHYBMCSp1wFBJ9jBsg==", + "dev": true, + "license": "MIT", + "peerDependencies": { + "eslint": ">=7" + } + }, + "node_modules/eslint-scope": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-8.1.0.tgz", + "integrity": "sha512-14dSvlhaVhKKsa9Fx1l8A17s7ah7Ef7wCakJ10LYk6+GYmP9yDti2oq2SEwcyndt6knfcZyhyxwY3i9yL78EQw==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.1.0.tgz", + "integrity": "sha512-Q7lok0mqMUSf5a/AdAZkA5a/gHcO6snwQClVNNvFKCAVlxXucdU8pKydU5ZVZjBx5xr37vGbFFWtLQYreLzrZg==", + "dev": true, + "license": "Apache-2.0", + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "license": "MIT", + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true, + "license": "MIT" + }, + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/eslint/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/espree": { + "version": "10.2.0", + "resolved": "https://registry.npmjs.org/espree/-/espree-10.2.0.tgz", + "integrity": "sha512-upbkBJbckcCNBDBDXEbuhjbP68n+scUd3k/U2EkyM9nw+I/jPiL4cLF/Al06CF96wRltFda16sxDFrxsI1v0/g==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "acorn": "^8.12.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^4.1.0" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || >=21.1.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "license": "BSD-3-Clause", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "license": "BSD-2-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true, + "license": "MIT" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true, + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", + "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "flat-cache": "^4.0.0" + }, + "engines": { + "node": ">=16.0.0" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "license": "MIT", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", + "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", + "dev": true, + "license": "MIT", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.4" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true, + "license": "ISC" + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "license": "MIT", + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/globals": { + "version": "15.11.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-15.11.0.tgz", + "integrity": "sha512-yeyNSjdbyVaWurlwCpcA6XNBrHTMIeDdj0/hnvX/OLJ9ekOXYbLsLinH/MucQyGvNnXhidTdNhTtJaffL2sMfw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "license": "MIT", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "license": "MIT", + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true, + "license": "MIT" + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true, + "license": "ISC" + }, + "node_modules/iterator.prototype": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.3.tgz", + "integrity": "sha512-FW5iMbeQ6rBGm/oKgzq2aW4KvAGpxPzYES8N4g4xNXUKpL1mclMvOe+76AcLDTvD+Ze+sOpVhgdAQEKF4L9iGQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "license": "MIT" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "license": "MIT", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", + "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", + "dev": true, + "license": "MIT", + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true, + "license": "MIT" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true, + "license": "MIT" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "license": "MIT", + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "license": "MIT", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "license": "MIT", + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "license": "ISC", + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "license": "MIT" + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true, + "license": "MIT" + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true, + "license": "MIT" + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "license": "MIT", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "license": "MIT", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true, + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true, + "license": "ISC" + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true, + "license": "MIT" + }, + "node_modules/react-refresh": { + "version": "0.14.2", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", + "integrity": "sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", + "integrity": "sha512-vqlC04+RQoFalODCbCumG2xIOvapzVMHwsyIGM/SIE8fRhFFsXeH8/QQ+s0T0kDAhKc4k30s73/0ydkHQz6HlQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/rollup": { + "version": "4.24.0", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.24.0.tgz", + "integrity": "sha512-DOmrlGSXNk1DM0ljiQA+i+o0rSLhtii1je5wgk60j49d1jHT5YYttBv1iWOnYSTG+fZZESUOSNiAl89SIet+Cg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.24.0", + "@rollup/rollup-android-arm64": "4.24.0", + "@rollup/rollup-darwin-arm64": "4.24.0", + "@rollup/rollup-darwin-x64": "4.24.0", + "@rollup/rollup-linux-arm-gnueabihf": "4.24.0", + "@rollup/rollup-linux-arm-musleabihf": "4.24.0", + "@rollup/rollup-linux-arm64-gnu": "4.24.0", + "@rollup/rollup-linux-arm64-musl": "4.24.0", + "@rollup/rollup-linux-powerpc64le-gnu": "4.24.0", + "@rollup/rollup-linux-riscv64-gnu": "4.24.0", + "@rollup/rollup-linux-s390x-gnu": "4.24.0", + "@rollup/rollup-linux-x64-gnu": "4.24.0", + "@rollup/rollup-linux-x64-musl": "4.24.0", + "@rollup/rollup-win32-arm64-msvc": "4.24.0", + "@rollup/rollup-win32-ia32-msvc": "4.24.0", + "@rollup/rollup-win32-x64-msvc": "4.24.0", + "fsevents": "~2.3.2" + } + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "license": "MIT", + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "license": "MIT", + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "license": "MIT", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true, + "license": "MIT" + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "license": "MIT", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz", + "integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "license": "MIT", + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.0" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "license": "BSD-2-Clause", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/vite": { + "version": "5.4.8", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", + "integrity": "sha512-FqrItQ4DT1NC4zCUqMB4c4AZORMKIa0m8/URVCZ77OZ/QSNeJ54bU1vrFADbDsuwfIPcgknRkmqakQcgnL4GiQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "license": "ISC", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "license": "MIT", + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "license": "MIT", + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true, + "license": "ISC" + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..181249614 --- /dev/null +++ b/package.json @@ -0,0 +1,28 @@ +{ + "name": "poddy", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "lint": "eslint .", + "preview": "vite preview" + }, + "dependencies": { + "react": "^18.3.1", + "react-dom": "^18.3.1" + }, + "devDependencies": { + "@eslint/js": "^9.11.1", + "@types/react": "^18.3.10", + "@types/react-dom": "^18.3.0", + "@vitejs/plugin-react": "^4.3.2", + "eslint": "^9.11.1", + "eslint-plugin-react": "^7.37.0", + "eslint-plugin-react-hooks": "^5.1.0-rc.0", + "eslint-plugin-react-refresh": "^0.4.12", + "globals": "^15.9.0", + "vite": "^5.4.8" + } +} diff --git a/public/vite.svg b/public/vite.svg new file mode 100644 index 000000000..e7b8dfb1b --- /dev/null +++ b/public/vite.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/App.css b/src/App.css new file mode 100644 index 000000000..b9d355df2 --- /dev/null +++ b/src/App.css @@ -0,0 +1,42 @@ +#root { + max-width: 1280px; + margin: 0 auto; + padding: 2rem; + text-align: center; +} + +.logo { + height: 6em; + padding: 1.5em; + will-change: filter; + transition: filter 300ms; +} +.logo:hover { + filter: drop-shadow(0 0 2em #646cffaa); +} +.logo.react:hover { + filter: drop-shadow(0 0 2em #61dafbaa); +} + +@keyframes logo-spin { + from { + transform: rotate(0deg); + } + to { + transform: rotate(360deg); + } +} + +@media (prefers-reduced-motion: no-preference) { + a:nth-of-type(2) .logo { + animation: logo-spin infinite 20s linear; + } +} + +.card { + padding: 2em; +} + +.read-the-docs { + color: #888; +} diff --git a/src/App.jsx b/src/App.jsx new file mode 100644 index 000000000..a645d78d0 --- /dev/null +++ b/src/App.jsx @@ -0,0 +1,12 @@ +import './App.css' + +function App() { + + return ( + <> +

Hello World

+ + ) +} + +export default App diff --git a/src/assets/react.svg b/src/assets/react.svg new file mode 100644 index 000000000..6c87de9bb --- /dev/null +++ b/src/assets/react.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/index.css b/src/index.css new file mode 100644 index 000000000..6119ad9a8 --- /dev/null +++ b/src/index.css @@ -0,0 +1,68 @@ +:root { + font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; + line-height: 1.5; + font-weight: 400; + + color-scheme: light dark; + color: rgba(255, 255, 255, 0.87); + background-color: #242424; + + font-synthesis: none; + text-rendering: optimizeLegibility; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; +} + +a { + font-weight: 500; + color: #646cff; + text-decoration: inherit; +} +a:hover { + color: #535bf2; +} + +body { + margin: 0; + display: flex; + place-items: center; + min-width: 320px; + min-height: 100vh; +} + +h1 { + font-size: 3.2em; + line-height: 1.1; +} + +button { + border-radius: 8px; + border: 1px solid transparent; + padding: 0.6em 1.2em; + font-size: 1em; + font-weight: 500; + font-family: inherit; + background-color: #1a1a1a; + cursor: pointer; + transition: border-color 0.25s; +} +button:hover { + border-color: #646cff; +} +button:focus, +button:focus-visible { + outline: 4px auto -webkit-focus-ring-color; +} + +@media (prefers-color-scheme: light) { + :root { + color: #213547; + background-color: #ffffff; + } + a:hover { + color: #747bff; + } + button { + background-color: #f9f9f9; + } +} diff --git a/src/main.jsx b/src/main.jsx new file mode 100644 index 000000000..89f91e54d --- /dev/null +++ b/src/main.jsx @@ -0,0 +1,10 @@ +import { StrictMode } from 'react' +import { createRoot } from 'react-dom/client' +import App from './App.jsx' +import './index.css' + +createRoot(document.getElementById('root')).render( + + + , +) diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 000000000..5a33944a9 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,7 @@ +import { defineConfig } from 'vite' +import react from '@vitejs/plugin-react' + +// https://vitejs.dev/config/ +export default defineConfig({ + plugins: [react()], +}) From 2b674c770ec470b98fdd9bdbf2dc728c23ae4570 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 14 Oct 2024 12:58:17 +0200 Subject: [PATCH 002/323] Feat: Implement Meta tags from metatags.io --- index.html | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/index.html b/index.html index c8baef701..48d5811f9 100644 --- a/index.html +++ b/index.html @@ -1,14 +1,34 @@ - + + + Poddy + + + + + + + + + + + + + + + + + +
From 7134b79de3b01a4682dc39046bf6f2ba1acf3251 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 14 Oct 2024 16:12:55 +0200 Subject: [PATCH 003/323] Feat: Install and configure MUI --- index.html | 2 +- package-lock.json | 679 ++++++++++++++++++++++++++++-- package.json | 5 + src/App.css | 42 -- src/App.jsx | 7 +- src/components/Content.jsx | 7 + src/components/PlaybackFooter.jsx | 7 + src/components/SearchAppBar.jsx | 88 ++++ src/index.css | 68 --- src/main.jsx | 23 +- src/theme.js | 15 + 11 files changed, 787 insertions(+), 156 deletions(-) create mode 100644 src/components/Content.jsx create mode 100644 src/components/PlaybackFooter.jsx create mode 100644 src/components/SearchAppBar.jsx create mode 100644 src/theme.js diff --git a/index.html b/index.html index 48d5811f9..d17bf44c4 100644 --- a/index.html +++ b/index.html @@ -2,7 +2,7 @@ - + diff --git a/package-lock.json b/package-lock.json index 500dc710a..5f49cbf77 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,6 +8,11 @@ "name": "poddy", "version": "0.0.0", "dependencies": { + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@fontsource/roboto": "^5.1.0", + "@mui/icons-material": "^6.1.3", + "@mui/material": "^6.1.3", "react": "^18.3.1", "react-dom": "^18.3.1" }, @@ -42,7 +47,6 @@ "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.25.7.tgz", "integrity": "sha512-0xZJFNE5XMpENsgfHYTw8FbX4kv53mFLn2i3XPoq69LyhYSCBJtitaHx9QnsVTrsogI4Z3+HtEfZ2/GFPOtf5g==", - "dev": true, "license": "MIT", "dependencies": { "@babel/highlight": "^7.25.7", @@ -97,7 +101,6 @@ "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.7.tgz", "integrity": "sha512-5Dqpl5fyV9pIAD62yK9P7fcA768uVPUyrQmqpqstHWgMma4feF1x/oFysBCVZLY5wJ2GkMUCdsNDnGZrPoR6rA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.25.7", @@ -130,7 +133,6 @@ "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.25.7.tgz", "integrity": "sha512-o0xCgpNmRohmnoWKQ0Ij8IdddjyBFE4T2kagL/x6M3+4zUgc+4qTOUBoNe4XxDskt1HPKO007ZPiMgLDq2s7Kw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/traverse": "^7.25.7", @@ -187,7 +189,6 @@ "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.25.7.tgz", "integrity": "sha512-CbkjYdsJNHFk8uqpEkpCvRs3YRp9tY6FmFY7wLMSYuGYkrdUi7r2lc4/wqsvlHoMznX3WJ9IP8giGPq68T/Y6g==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -197,7 +198,6 @@ "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.25.7.tgz", "integrity": "sha512-AM6TzwYqGChO45oiuPqwL2t20/HdMC1rTPAesnBCgPCSF1x3oN9MVUwQV2iyz4xqWrctwK5RNC8LV22kaQCNYg==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.9.0" @@ -231,7 +231,6 @@ "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.25.7.tgz", "integrity": "sha512-iYyACpW3iW8Fw+ZybQK+drQre+ns/tKpXbNESfrhNnPLIklLbXr7MYJ6gPEd0iETGLOK+SxMjVvKb/ffmk+FEw==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-validator-identifier": "^7.25.7", @@ -247,7 +246,6 @@ "version": "7.25.8", "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.8.tgz", "integrity": "sha512-HcttkxzdPucv3nNFmfOOMfFf64KgdJVqm1KaCm25dPGMLElo9nsLvXeJECQg8UzPuBGLyTSA0ZzqCtDSzKTEoQ==", - "dev": true, "license": "MIT", "dependencies": { "@babel/types": "^7.25.8" @@ -291,11 +289,22 @@ "@babel/core": "^7.0.0-0" } }, + "node_modules/@babel/runtime": { + "version": "7.25.7", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.7.tgz", + "integrity": "sha512-FjoyLe754PMiYsFaN5C94ttGiOmBNYTf6pLr4xXHAT5uctHb092PBszndLDR5XA/jghQvn4n7JMHl7dmTgbm9w==", + "license": "MIT", + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, "node_modules/@babel/template": { "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.7.tgz", "integrity": "sha512-wRwtAgI3bAS+JGU2upWNL9lSlDcRCqD05BZ1n3X2ONLH1WilFP6O1otQjeMK/1g0pvYcXC7b/qVUB1keofjtZA==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.25.7", @@ -310,7 +319,6 @@ "version": "7.25.7", "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.7.tgz", "integrity": "sha512-jatJPT1Zjqvh/1FyJs6qAHL+Dzb7sTb+xr7Q+gM1b+1oBsMsQQ4FkVKb6dFlJvLlVssqkRzV05Jzervt9yhnzg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.25.7", @@ -329,7 +337,6 @@ "version": "11.12.0", "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -339,7 +346,6 @@ "version": "7.25.8", "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.8.tgz", "integrity": "sha512-JWtuCu8VQsMladxVz/P4HzHUGCAwpuqacmowgXFs5XjxIgKuNjnLokQzuVjlTvIzODaDmpjT3oxcC48vyk9EWg==", - "dev": true, "license": "MIT", "dependencies": { "@babel/helper-string-parser": "^7.25.7", @@ -350,6 +356,170 @@ "node": ">=6.9.0" } }, + "node_modules/@emotion/babel-plugin": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.12.0.tgz", + "integrity": "sha512-y2WQb+oP8Jqvvclh8Q55gLUyb7UFvgv7eJfsj7td5TToBrIUtPay2kMrZi4xjq9qw2vD0ZR5fSho0yqoFgX7Rw==", + "license": "MIT", + "dependencies": { + "@babel/helper-module-imports": "^7.16.7", + "@babel/runtime": "^7.18.3", + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/serialize": "^1.2.0", + "babel-plugin-macros": "^3.1.0", + "convert-source-map": "^1.5.0", + "escape-string-regexp": "^4.0.0", + "find-root": "^1.1.0", + "source-map": "^0.5.7", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==", + "license": "MIT" + }, + "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "license": "MIT", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@emotion/cache": { + "version": "11.13.1", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.13.1.tgz", + "integrity": "sha512-iqouYkuEblRcXmylXIwwOodiEK5Ifl7JcX7o6V4jI3iW4mLXX3dmt5xwBtIkJiQEXFAI+pC8X0i67yiPkH9Ucw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0", + "@emotion/sheet": "^1.4.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", + "stylis": "4.2.0" + } + }, + "node_modules/@emotion/hash": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.2.tgz", + "integrity": "sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==", + "license": "MIT" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.3.1.tgz", + "integrity": "sha512-/ACwoqx7XQi9knQs/G0qKvv5teDMhD7bXYns9N/wM8ah8iNb8jZ2uNO0YOgiq2o2poIvVtJS2YALasQuMSQ7Kw==", + "license": "MIT", + "dependencies": { + "@emotion/memoize": "^0.9.0" + } + }, + "node_modules/@emotion/memoize": { + "version": "0.9.0", + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.9.0.tgz", + "integrity": "sha512-30FAj7/EoJ5mwVPOWhAyCX+FPfMDrVecJAM+Iw9NRoSl4BBAQeqj4cApHHUXOVvIPgLVDsCFoz/hGD+5QQD1GQ==", + "license": "MIT" + }, + "node_modules/@emotion/react": { + "version": "11.13.3", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.13.3.tgz", + "integrity": "sha512-lIsdU6JNrmYfJ5EbUCf4xW1ovy5wKQ2CkPRM4xogziOxH1nXxBSjpC9YqbFAP7circxMfYp+6x676BqWcEiixg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/cache": "^11.13.0", + "@emotion/serialize": "^1.3.1", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0", + "@emotion/weak-memoize": "^0.4.0", + "hoist-non-react-statics": "^3.3.1" + }, + "peerDependencies": { + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/serialize": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.3.2.tgz", + "integrity": "sha512-grVnMvVPK9yUVE6rkKfAJlYZgo0cu3l9iMC77V7DW6E1DUIrU68pSEXRmFZFOFB1QFo57TncmOcvcbMDWsL4yA==", + "license": "MIT", + "dependencies": { + "@emotion/hash": "^0.9.2", + "@emotion/memoize": "^0.9.0", + "@emotion/unitless": "^0.10.0", + "@emotion/utils": "^1.4.1", + "csstype": "^3.0.2" + } + }, + "node_modules/@emotion/sheet": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.4.0.tgz", + "integrity": "sha512-fTBW9/8r2w3dXWYM4HCB1Rdp8NLibOw2+XELH5m5+AkWiL/KqYX6dc0kKYlaYyKjrQ6ds33MCdMPEwgs2z1rqg==", + "license": "MIT" + }, + "node_modules/@emotion/styled": { + "version": "11.13.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.13.0.tgz", + "integrity": "sha512-tkzkY7nQhW/zC4hztlwucpT8QEZ6eUzpXDRhww/Eej4tFfO0FxQYWRyg/c5CCXa4d/f174kqeXYjuQRnhzf6dA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.12.0", + "@emotion/is-prop-valid": "^1.3.0", + "@emotion/serialize": "^1.3.0", + "@emotion/use-insertion-effect-with-fallbacks": "^1.1.0", + "@emotion/utils": "^1.4.0" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@emotion/unitless": { + "version": "0.10.0", + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.10.0.tgz", + "integrity": "sha512-dFoMUuQA20zvtVTuxZww6OHoJYgrzfKM1t52mVySDJnMSEa08ruEvdYQbhvyu6soU+NeLVd3yKfTfT0NeV6qGg==", + "license": "MIT" + }, + "node_modules/@emotion/use-insertion-effect-with-fallbacks": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.1.0.tgz", + "integrity": "sha512-+wBOcIV5snwGgI2ya3u99D7/FJquOIniQT1IKyDsBmEgwvpxMNeS65Oib7OnE2d2aY+3BU4OiH+0Wchf8yk3Hw==", + "license": "MIT", + "peerDependencies": { + "react": ">=16.8.0" + } + }, + "node_modules/@emotion/utils": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.4.1.tgz", + "integrity": "sha512-BymCXzCG3r72VKJxaYVwOXATqXIZ85cuvg0YOUDxMGNrKc1DJRZk8MgV5wyXRyEayIMd4FuXJIUgTBXvDNW5cA==", + "license": "MIT" + }, + "node_modules/@emotion/weak-memoize": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.4.0.tgz", + "integrity": "sha512-snKqtPW01tN0ui7yu9rGv69aJXr/a/Ywvl11sUjNtEcRc+ng/mQriFL0wLXMef74iHa/EkftbDzU9F8iFbH+zg==", + "license": "MIT" + }, "node_modules/@esbuild/aix-ppc64": { "version": "0.21.5", "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", @@ -875,6 +1045,12 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@fontsource/roboto": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@fontsource/roboto/-/roboto-5.1.0.tgz", + "integrity": "sha512-cFRRC1s6RqPygeZ8Uw/acwVHqih8Czjt6Q0MwoUoDe9U3m4dH1HmNDRBZyqlMSFwgNAUKgFImncKdmDHyKpwdg==", + "license": "Apache-2.0" + }, "node_modules/@humanfs/core": { "version": "0.19.0", "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.0.tgz", @@ -931,7 +1107,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/set-array": "^1.2.1", @@ -946,7 +1121,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -956,7 +1130,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "license": "MIT", "engines": { "node": ">=6.0.0" @@ -966,20 +1139,270 @@ "version": "1.5.0", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", - "dev": true, "license": "MIT" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@mui/core-downloads-tracker": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-6.1.3.tgz", + "integrity": "sha512-ajMUgdfhTb++rwqj134Cq9f4SRN8oXUqMRnY72YBnXiXai3olJLLqETheRlq3MM8wCKrbq7g6j7iWL1VvP44VQ==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/icons-material": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@mui/icons-material/-/icons-material-6.1.3.tgz", + "integrity": "sha512-QBQCCIMSAv6IkArTg4Hg8q2sJRhHOci8oPAlkHWFlt2ghBdy3EqyLbIELLE/bhpqhX+E/ZkPYGIUQCd5/L0owA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.6" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@mui/material": "^6.1.3", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-6.1.3.tgz", + "integrity": "sha512-loV5MBoMKLrK80JeWINmQ1A4eWoLv51O2dBPLJ260IAhupkB3Wol8lEQTEvvR2vO3o6xRHuXe1WaQEP6N3riqg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.6", + "@mui/core-downloads-tracker": "^6.1.3", + "@mui/system": "^6.1.3", + "@mui/types": "^7.2.18", + "@mui/utils": "^6.1.3", + "@popperjs/core": "^2.11.8", + "@types/react-transition-group": "^4.4.11", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^18.3.1", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@mui/material-pigment-css": "^6.1.3", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@mui/material-pigment-css": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/@mui/private-theming": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-6.1.3.tgz", + "integrity": "sha512-XK5OYCM0x7gxWb/WBEySstBmn+dE3YKX7U7jeBRLm6vHU5fGUd7GiJWRirpivHjOK9mRH6E1MPIVd+ze5vguKQ==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.6", + "@mui/utils": "^6.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-6.1.3.tgz", + "integrity": "sha512-i4yh9m+eMZE3cNERpDhVr6Wn73Yz6C7MH0eE2zZvw8d7EFkIJlCQNZd1xxGZqarD2DDq2qWHcjIOucWGhxACtA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.6", + "@emotion/cache": "^11.13.1", + "@emotion/serialize": "^1.3.2", + "@emotion/sheet": "^1.4.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-6.1.3.tgz", + "integrity": "sha512-ILaD9UsLTBLjMcep3OumJMXh1PYr7aqnkHm/L47bH46+YmSL1zWAX6tWG8swEQROzW2GvYluEMp5FreoxOOC6w==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.6", + "@mui/private-theming": "^6.1.3", + "@mui/styled-engine": "^6.1.3", + "@mui/types": "^7.2.18", + "@mui/utils": "^6.1.3", + "clsx": "^2.1.1", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/types": { + "version": "7.2.18", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.18.tgz", + "integrity": "sha512-uvK9dWeyCJl/3ocVnTOS6nlji/Knj8/tVqVX03UVTpdmTJYu/s4jtDd9Kvv0nRGE0CUSNW1UYAci7PYypjealg==", + "license": "MIT", + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-6.1.3.tgz", + "integrity": "sha512-4JBpLkjprlKjN10DGb1aiy/ii9TKbQ601uSHtAmYFAS879QZgAD7vRnv/YBE4iBbc7NXzFgbQMCOFrupXWekIA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.25.6", + "@mui/types": "^7.2.18", + "@types/prop-types": "^15.7.13", + "clsx": "^2.1.1", + "prop-types": "^15.8.1", + "react-is": "^18.3.1" + }, + "engines": { + "node": ">=14.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0 || ^19.0.0", + "react": "^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "license": "MIT" + }, + "node_modules/@popperjs/core": { + "version": "2.11.8", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/popperjs" + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", @@ -1263,18 +1686,22 @@ "dev": true, "license": "MIT" }, + "node_modules/@types/parse-json": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==", + "license": "MIT" + }, "node_modules/@types/prop-types": { "version": "15.7.13", "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.13.tgz", "integrity": "sha512-hCZTSvwbzWGvhqxp/RqVqwU999pBf2vp7hzIjiYOsl8wqOmUxkQ6ddw1cV3l8811+kdUFus/q4d1Y3E3SyEifA==", - "dev": true, "license": "MIT" }, "node_modules/@types/react": { "version": "18.3.11", "resolved": "https://registry.npmjs.org/@types/react/-/react-18.3.11.tgz", "integrity": "sha512-r6QZ069rFTjrEYgFdOck1gK7FLVsgJE7tTz0pQBczlBNUhBNk0MQH4UbnFSwjpQLMkLzgqvBBa+qGpLje16eTQ==", - "dev": true, "license": "MIT", "dependencies": { "@types/prop-types": "*", @@ -1291,6 +1718,15 @@ "@types/react": "*" } }, + "node_modules/@types/react-transition-group": { + "version": "4.4.11", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.11.tgz", + "integrity": "sha512-RM05tAniPZ5DZPzzNFP+DmrcOdD0efDUxMy3145oljWSl3x9ZV5vhme98gTxFrj2lhXvmGNnUiuDyJgY9IKkNA==", + "license": "MIT", + "dependencies": { + "@types/react": "*" + } + }, "node_modules/@vitejs/plugin-react": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.2.tgz", @@ -1355,7 +1791,6 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^1.9.0" @@ -1524,6 +1959,38 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/babel-plugin-macros": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", + "integrity": "sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.12.5", + "cosmiconfig": "^7.0.0", + "resolve": "^1.19.0" + }, + "engines": { + "node": ">=10", + "npm": ">=6" + } + }, + "node_modules/babel-plugin-macros/node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/balanced-match": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", @@ -1599,7 +2066,6 @@ "version": "3.1.0", "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=6" @@ -1630,7 +2096,6 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, "license": "MIT", "dependencies": { "ansi-styles": "^3.2.1", @@ -1641,11 +2106,19 @@ "node": ">=4" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "1.1.3" @@ -1655,7 +2128,6 @@ "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", - "dev": true, "license": "MIT" }, "node_modules/concat-map": { @@ -1672,6 +2144,22 @@ "dev": true, "license": "MIT" }, + "node_modules/cosmiconfig": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", + "integrity": "sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==", + "license": "MIT", + "dependencies": { + "@types/parse-json": "^4.0.0", + "import-fresh": "^3.2.1", + "parse-json": "^5.0.0", + "path-type": "^4.0.0", + "yaml": "^1.10.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1691,7 +2179,6 @@ "version": "3.1.3", "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "dev": true, "license": "MIT" }, "node_modules/data-view-buffer": { @@ -1752,7 +2239,6 @@ "version": "4.3.7", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", - "dev": true, "license": "MIT", "dependencies": { "ms": "^2.1.3" @@ -1822,6 +2308,16 @@ "node": ">=0.10.0" } }, + "node_modules/dom-helpers": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", + "license": "MIT", + "dependencies": { + "@babel/runtime": "^7.8.7", + "csstype": "^3.0.2" + } + }, "node_modules/electron-to-chromium": { "version": "1.5.36", "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.36.tgz", @@ -1829,6 +2325,15 @@ "dev": true, "license": "ISC" }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "license": "MIT", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, "node_modules/es-abstract": { "version": "1.23.3", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", @@ -2048,7 +2553,6 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.8.0" @@ -2388,6 +2892,12 @@ "node": ">=16.0.0" } }, + "node_modules/find-root": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==", + "license": "MIT" + }, "node_modules/find-up": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", @@ -2455,7 +2965,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "dev": true, "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" @@ -2608,7 +3117,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -2673,7 +3181,6 @@ "version": "2.0.2", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, "license": "MIT", "dependencies": { "function-bind": "^1.1.2" @@ -2682,6 +3189,15 @@ "node": ">= 0.4" } }, + "node_modules/hoist-non-react-statics": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", + "license": "BSD-3-Clause", + "dependencies": { + "react-is": "^16.7.0" + } + }, "node_modules/ignore": { "version": "5.3.2", "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", @@ -2696,7 +3212,6 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", - "dev": true, "license": "MIT", "dependencies": { "parent-module": "^1.0.0", @@ -2751,6 +3266,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "license": "MIT" + }, "node_modules/is-async-function": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", @@ -2814,7 +3335,6 @@ "version": "2.15.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", - "dev": true, "license": "MIT", "dependencies": { "hasown": "^2.0.2" @@ -3143,7 +3663,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-3.0.2.tgz", "integrity": "sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==", - "dev": true, "license": "MIT", "bin": { "jsesc": "bin/jsesc" @@ -3159,6 +3678,12 @@ "dev": true, "license": "MIT" }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "license": "MIT" + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -3226,6 +3751,12 @@ "node": ">= 0.8.0" } }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "license": "MIT" + }, "node_modules/locate-path": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", @@ -3288,7 +3819,6 @@ "version": "2.1.3", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, "license": "MIT" }, "node_modules/nanoid": { @@ -3328,7 +3858,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -3482,7 +4011,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", - "dev": true, "license": "MIT", "dependencies": { "callsites": "^3.0.0" @@ -3491,6 +4019,24 @@ "node": ">=6" } }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "license": "MIT", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -3515,14 +4061,21 @@ "version": "1.0.7", "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true, "license": "MIT" }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, "node_modules/picocolors": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", - "dev": true, "license": "ISC" }, "node_modules/possible-typed-array-names": { @@ -3578,7 +4131,6 @@ "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", - "dev": true, "license": "MIT", "dependencies": { "loose-envify": "^1.4.0", @@ -3625,7 +4177,6 @@ "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", - "dev": true, "license": "MIT" }, "node_modules/react-refresh": { @@ -3638,6 +4189,22 @@ "node": ">=0.10.0" } }, + "node_modules/react-transition-group": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", + "license": "BSD-3-Clause", + "dependencies": { + "@babel/runtime": "^7.5.5", + "dom-helpers": "^5.0.1", + "loose-envify": "^1.4.0", + "prop-types": "^15.6.2" + }, + "peerDependencies": { + "react": ">=16.6.0", + "react-dom": ">=16.6.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", @@ -3660,6 +4227,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/regenerator-runtime": { + "version": "0.14.1", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz", + "integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==", + "license": "MIT" + }, "node_modules/regexp.prototype.flags": { "version": "1.5.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.3.tgz", @@ -3701,7 +4274,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -3875,6 +4447,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/source-map": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", + "license": "BSD-3-Clause", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/source-map-js": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", @@ -3988,11 +4569,16 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/stylis": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==", + "license": "MIT" + }, "node_modules/supports-color": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, "license": "MIT", "dependencies": { "has-flag": "^3.0.0" @@ -4005,7 +4591,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, "license": "MIT", "engines": { "node": ">= 0.4" @@ -4025,7 +4610,6 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", - "dev": true, "license": "MIT", "engines": { "node": ">=4" @@ -4354,6 +4938,15 @@ "dev": true, "license": "ISC" }, + "node_modules/yaml": { + "version": "1.10.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", + "license": "ISC", + "engines": { + "node": ">= 6" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", diff --git a/package.json b/package.json index 181249614..005e2d462 100644 --- a/package.json +++ b/package.json @@ -10,6 +10,11 @@ "preview": "vite preview" }, "dependencies": { + "@emotion/react": "^11.13.3", + "@emotion/styled": "^11.13.0", + "@fontsource/roboto": "^5.1.0", + "@mui/icons-material": "^6.1.3", + "@mui/material": "^6.1.3", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/src/App.css b/src/App.css index b9d355df2..e69de29bb 100644 --- a/src/App.css +++ b/src/App.css @@ -1,42 +0,0 @@ -#root { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.react:hover { - filter: drop-shadow(0 0 2em #61dafbaa); -} - -@keyframes logo-spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} - -@media (prefers-reduced-motion: no-preference) { - a:nth-of-type(2) .logo { - animation: logo-spin infinite 20s linear; - } -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} diff --git a/src/App.jsx b/src/App.jsx index a645d78d0..55c6ba2fa 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,10 +1,15 @@ import './App.css' +import SearchAppBar from './components/SearchAppBar' +import Content from "./components/Content" +import PlaybackFooter from './components/PlaybackFooter' function App() { return ( <> -

Hello World

+ + + ) } diff --git a/src/components/Content.jsx b/src/components/Content.jsx new file mode 100644 index 000000000..1721a092e --- /dev/null +++ b/src/components/Content.jsx @@ -0,0 +1,7 @@ +function Content() { + return ( +

This is the Content Section

+ ) +} + +export default Content \ No newline at end of file diff --git a/src/components/PlaybackFooter.jsx b/src/components/PlaybackFooter.jsx new file mode 100644 index 000000000..f4933e403 --- /dev/null +++ b/src/components/PlaybackFooter.jsx @@ -0,0 +1,7 @@ +function PlaybackFooter() { + return ( +

This is the Playback Footer

+ ) +} + +export default PlaybackFooter \ No newline at end of file diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx new file mode 100644 index 000000000..c193b74a9 --- /dev/null +++ b/src/components/SearchAppBar.jsx @@ -0,0 +1,88 @@ +import { styled, alpha } from '@mui/material/styles'; +import AppBar from '@mui/material/AppBar'; +import Box from '@mui/material/Box'; +import Toolbar from '@mui/material/Toolbar'; +import IconButton from '@mui/material/IconButton'; +import Typography from '@mui/material/Typography'; +import InputBase from '@mui/material/InputBase'; +import MenuIcon from '@mui/icons-material/Menu'; +import SearchIcon from '@mui/icons-material/Search'; + +const Search = styled('div')(({ theme }) => ({ + position: 'relative', + borderRadius: theme.shape.borderRadius, + backgroundColor: alpha(theme.palette.common.white, 0.15), + '&:hover': { + backgroundColor: alpha(theme.palette.common.white, 0.25), + }, + marginLeft: 0, + width: '100%', + [theme.breakpoints.up('sm')]: { + marginLeft: theme.spacing(1), + width: 'auto', + }, +})); + +const SearchIconWrapper = styled('div')(({ theme }) => ({ + padding: theme.spacing(0, 2), + height: '100%', + position: 'absolute', + pointerEvents: 'none', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', +})); + +const StyledInputBase = styled(InputBase)(({ theme }) => ({ + color: 'inherit', + width: '100%', + '& .MuiInputBase-input': { + padding: theme.spacing(1, 1, 1, 0), + // vertical padding + font size from searchIcon + paddingLeft: `calc(1em + ${theme.spacing(4)})`, + transition: theme.transitions.create('width'), + [theme.breakpoints.up('sm')]: { + width: '12ch', + '&:focus': { + width: '20ch', + }, + }, + }, +})); + +export default function SearchAppBar() { + return ( + + + + + + + + MUI + + + + + + + + + + + ); +} diff --git a/src/index.css b/src/index.css index 6119ad9a8..e69de29bb 100644 --- a/src/index.css +++ b/src/index.css @@ -1,68 +0,0 @@ -:root { - font-family: Inter, system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} diff --git a/src/main.jsx b/src/main.jsx index 89f91e54d..9e79ad5f4 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -2,9 +2,30 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import App from './App.jsx' import './index.css' +import '@fontsource/roboto/300.css'; +import '@fontsource/roboto/400.css'; +import '@fontsource/roboto/500.css'; +import '@fontsource/roboto/700.css'; +import { ThemeProvider } from '@mui/material/styles'; +import CssBaseline from '@mui/material/CssBaseline'; +import { lightTheme, darkTheme } from './theme'; +import useMediaQuery from '@mui/material/useMediaQuery'; + +function Root() { + const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); + const theme = prefersDarkMode ? darkTheme : lightTheme; + + return ( + + + + + ); +} + createRoot(document.getElementById('root')).render( - + , ) diff --git a/src/theme.js b/src/theme.js new file mode 100644 index 000000000..6092a7088 --- /dev/null +++ b/src/theme.js @@ -0,0 +1,15 @@ +import { createTheme } from '@mui/material/styles'; + +export const lightTheme = createTheme({ + palette: { + mode: 'light', + // Add more light mode customization here + }, +}); + +export const darkTheme = createTheme({ + palette: { + mode: 'dark', + // Add more dark mode customization here + }, +}); \ No newline at end of file From 127f17157f193af143791997b44765c8af2e653b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 14 Oct 2024 18:30:25 +0200 Subject: [PATCH 004/323] Feat: Fetch Show Previews and sort alphabetically --- package-lock.json | 100 +++++++++++++++++++++++++++++++++++ package.json | 1 + src/App.jsx | 13 ++++- src/components/Content.jsx | 14 ++++- src/hooks/useFetchData.js | 32 +++++++++++ src/pages/ErrorPage.jsx | 11 ++++ src/pages/LoadingSpinner.jsx | 10 ++++ 7 files changed, 178 insertions(+), 3 deletions(-) create mode 100644 src/hooks/useFetchData.js create mode 100644 src/pages/ErrorPage.jsx create mode 100644 src/pages/LoadingSpinner.jsx diff --git a/package-lock.json b/package-lock.json index 5f49cbf77..54ae52397 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,6 +13,7 @@ "@fontsource/roboto": "^5.1.0", "@mui/icons-material": "^6.1.3", "@mui/material": "^6.1.3", + "axios": "^1.7.7", "react": "^18.3.1", "react-dom": "^18.3.1" }, @@ -1943,6 +1944,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -1959,6 +1966,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/babel-plugin-macros": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/babel-plugin-macros/-/babel-plugin-macros-3.1.0.tgz", @@ -2130,6 +2148,18 @@ "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "license": "MIT" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", @@ -2295,6 +2325,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -2936,6 +2975,26 @@ "dev": true, "license": "ISC" }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, "node_modules/for-each": { "version": "0.3.3", "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", @@ -2946,6 +3005,20 @@ "is-callable": "^1.1.3" } }, + "node_modules/form-data": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.1.tgz", + "integrity": "sha512-tzN8e4TX8+kkxGPK8D5u0FNmjPUjw3lwC9lSLxxoB/+GtsJG91CO8bSWy73APlgAZzZbXEYZJuxjkHH2w+Ezhw==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fsevents": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", @@ -3802,6 +3875,27 @@ "yallist": "^3.0.2" } }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -4138,6 +4232,12 @@ "react-is": "^16.13.1" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", diff --git a/package.json b/package.json index 005e2d462..dea9f31f2 100644 --- a/package.json +++ b/package.json @@ -15,6 +15,7 @@ "@fontsource/roboto": "^5.1.0", "@mui/icons-material": "^6.1.3", "@mui/material": "^6.1.3", + "axios": "^1.7.7", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/src/App.jsx b/src/App.jsx index 55c6ba2fa..5abc684cd 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,14 +1,25 @@ import './App.css' +import useFetchData from './hooks/useFetchData'; +import LoadingSpinner from "./pages/LoadingSpinner" +import ErrorPage from './pages/ErrorPage' import SearchAppBar from './components/SearchAppBar' import Content from "./components/Content" import PlaybackFooter from './components/PlaybackFooter' +const PREVIEW_URL = "https://podcast-api.netlify.app" + function App() { + const { data: previewData, loading, error } = useFetchData(PREVIEW_URL) + + + if (loading) return + if (error) return + return ( <> - + {previewData && } ) diff --git a/src/components/Content.jsx b/src/components/Content.jsx index 1721a092e..962a8b4fc 100644 --- a/src/components/Content.jsx +++ b/src/components/Content.jsx @@ -1,6 +1,16 @@ -function Content() { +function Content(props) { + const previewDataSorted = props.previewData.sort((a, b) => a.title.localeCompare(b.title)) + return ( -

This is the Content Section

+ previewDataSorted.map(showPreview => { + return ( +
+ +

{showPreview.title}

+

{showPreview.description}

+
+ ) + }) ) } diff --git a/src/hooks/useFetchData.js b/src/hooks/useFetchData.js new file mode 100644 index 000000000..718c005e7 --- /dev/null +++ b/src/hooks/useFetchData.js @@ -0,0 +1,32 @@ +import { useState, useEffect } from 'react'; +import axios from 'axios'; + +const useFetchData = (url) => { + const [data, setData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + if (!url) return; + + const fetchData = async () => { + setLoading(true); + try { + const response = await axios.get(url); + setData(response.data); + setError(null); + } catch (err) { + console.log(err) + setError(true); + } finally { + setLoading(false); + } + }; + + fetchData(); + }, [url]); + + return { data, loading, error }; +}; + +export default useFetchData; \ No newline at end of file diff --git a/src/pages/ErrorPage.jsx b/src/pages/ErrorPage.jsx new file mode 100644 index 000000000..88c71c9e4 --- /dev/null +++ b/src/pages/ErrorPage.jsx @@ -0,0 +1,11 @@ +const ErrorPage = () => { + return ( + <> +

Something went wrong.

+

An error occurred

+

Please try again later.

+ + ) +} + +export default ErrorPage \ No newline at end of file diff --git a/src/pages/LoadingSpinner.jsx b/src/pages/LoadingSpinner.jsx new file mode 100644 index 000000000..a7005a892 --- /dev/null +++ b/src/pages/LoadingSpinner.jsx @@ -0,0 +1,10 @@ +import CircularProgress from '@mui/material/CircularProgress'; +import Box from '@mui/material/Box'; + +export default function LoadingSpinner() { + return ( + + + + ); +} \ No newline at end of file From e6ab32293e948b7fff98552714355fd53942b258 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 14 Oct 2024 18:33:15 +0200 Subject: [PATCH 005/323] Fix: Spread props array to new array so we don't mutate state --- src/components/Content.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Content.jsx b/src/components/Content.jsx index 962a8b4fc..da4b925e8 100644 --- a/src/components/Content.jsx +++ b/src/components/Content.jsx @@ -1,5 +1,6 @@ function Content(props) { - const previewDataSorted = props.previewData.sort((a, b) => a.title.localeCompare(b.title)) + // Create a new array based on the array from the props so that we do not mutate state + const [...previewDataSorted] = props.previewData.sort((a, b) => a.title.localeCompare(b.title)) return ( previewDataSorted.map(showPreview => { From a4d61ef04ab11e487699769dd00741d47b05a6d1 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 15 Oct 2024 10:09:23 +0200 Subject: [PATCH 006/323] Fix: Center loading spinner --- src/pages/LoadingSpinner.jsx | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/pages/LoadingSpinner.jsx b/src/pages/LoadingSpinner.jsx index a7005a892..4c22abb80 100644 --- a/src/pages/LoadingSpinner.jsx +++ b/src/pages/LoadingSpinner.jsx @@ -3,7 +3,11 @@ import Box from '@mui/material/Box'; export default function LoadingSpinner() { return ( - + ); From b95778aa12bc229f9ef2e3a820974c8314b9572e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 15 Oct 2024 10:18:14 +0200 Subject: [PATCH 007/323] Fix: Add comment about theme to root component --- src/main.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main.jsx b/src/main.jsx index 9e79ad5f4..901c64010 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -11,6 +11,7 @@ import CssBaseline from '@mui/material/CssBaseline'; import { lightTheme, darkTheme } from './theme'; import useMediaQuery from '@mui/material/useMediaQuery'; + // Define Root function component such that inside we check if the user prefers dark mode, and use a ternary to return the resulting theme function Root() { const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); const theme = prefersDarkMode ? darkTheme : lightTheme; From 3eb681259aa23746b2ad3e30b1067783adae4366 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 15 Oct 2024 21:21:53 +0200 Subject: [PATCH 008/323] Feat: Implement Responsive Preview Show Card Components --- src/App.css | 0 src/App.jsx | 6 +-- src/components/Content.jsx | 18 -------- src/components/ShowCard.jsx | 84 +++++++++++++++++++++++++++++++++++++ src/index.css | 0 src/main.jsx | 1 - src/pages/Content.jsx | 45 ++++++++++++++++++++ 7 files changed, 132 insertions(+), 22 deletions(-) delete mode 100644 src/App.css delete mode 100644 src/components/Content.jsx create mode 100644 src/components/ShowCard.jsx delete mode 100644 src/index.css create mode 100644 src/pages/Content.jsx diff --git a/src/App.css b/src/App.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/App.jsx b/src/App.jsx index 5abc684cd..f7420ad5b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,18 +1,18 @@ -import './App.css' import useFetchData from './hooks/useFetchData'; import LoadingSpinner from "./pages/LoadingSpinner" import ErrorPage from './pages/ErrorPage' import SearchAppBar from './components/SearchAppBar' -import Content from "./components/Content" +import Content from "./pages/Content" import PlaybackFooter from './components/PlaybackFooter' + const PREVIEW_URL = "https://podcast-api.netlify.app" + function App() { const { data: previewData, loading, error } = useFetchData(PREVIEW_URL) - if (loading) return if (error) return diff --git a/src/components/Content.jsx b/src/components/Content.jsx deleted file mode 100644 index da4b925e8..000000000 --- a/src/components/Content.jsx +++ /dev/null @@ -1,18 +0,0 @@ -function Content(props) { - // Create a new array based on the array from the props so that we do not mutate state - const [...previewDataSorted] = props.previewData.sort((a, b) => a.title.localeCompare(b.title)) - - return ( - previewDataSorted.map(showPreview => { - return ( -
- -

{showPreview.title}

-

{showPreview.description}

-
- ) - }) - ) -} - -export default Content \ No newline at end of file diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx new file mode 100644 index 000000000..76d28fcae --- /dev/null +++ b/src/components/ShowCard.jsx @@ -0,0 +1,84 @@ +import { Paper, CardMedia, Typography, Box} from '@mui/material'; +import { Grid2 } from '@mui/material' +import PropTypes from "prop-types"; + +export default function ShowCard({ title, description, seasons, image, genres, updated }) { + return ( + + + + + + {title} + + + {seasons} Seasons + + + + + Horror, Action + + + {"Last updated: " + new Date(updated).toLocaleDateString()} + + + + + {description} + + + + + ) +} + + + +// Define Prop Types for ShowCard component +ShowCard.propTypes = { + title: PropTypes.string.isRequired, + description: PropTypes.string.isRequired, + seasons: PropTypes.number.isRequired, + image: PropTypes.string.isRequired, + genres: PropTypes.array.isRequired, + updated: PropTypes.string.isRequired +} diff --git a/src/index.css b/src/index.css deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/main.jsx b/src/main.jsx index 901c64010..551c5e1b6 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -1,7 +1,6 @@ import { StrictMode } from 'react' import { createRoot } from 'react-dom/client' import App from './App.jsx' -import './index.css' import '@fontsource/roboto/300.css'; import '@fontsource/roboto/400.css'; import '@fontsource/roboto/500.css'; diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx new file mode 100644 index 000000000..a224c5022 --- /dev/null +++ b/src/pages/Content.jsx @@ -0,0 +1,45 @@ +import ShowCard from "../components/ShowCard" +import { Paper, CardMedia, Typography, Box} from '@mui/material'; +import { Grid2 } from '@mui/material' +import PropTypes from "prop-types"; + +function Content({ previewData }) { + const [...previewDataSorted] = previewData.sort((a, b) => a.title.localeCompare(b.title)) + + return ( + + {previewDataSorted.map((showPreview) => ( + + + + ))} + + ) +} + +// Define Prop Types for previewData array of objects within Content component +Content.propTypes = { + previewData: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + description: PropTypes.string.isRequired, + seasons: PropTypes.number.isRequired, + image: PropTypes.string.isRequired, + genres: PropTypes.array.isRequired, + updated: PropTypes.string.isRequired + }) + ) +} + +export default Content \ No newline at end of file From f4ed45f3df8233ca305024527e089fb59eb04869 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 16 Oct 2024 10:12:41 +0200 Subject: [PATCH 009/323] Fix: initial data fetch call saves data to state --- src/App.jsx | 18 ++++++++++++++---- src/components/ShowCard.jsx | 1 - src/pages/Content.jsx | 1 - 3 files changed, 14 insertions(+), 6 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index f7420ad5b..6d57c96e0 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,3 +1,4 @@ +import { useState, useEffect } from 'react'; import useFetchData from './hooks/useFetchData'; import LoadingSpinner from "./pages/LoadingSpinner" import ErrorPage from './pages/ErrorPage' @@ -5,13 +6,22 @@ import SearchAppBar from './components/SearchAppBar' import Content from "./pages/Content" import PlaybackFooter from './components/PlaybackFooter' - const PREVIEW_URL = "https://podcast-api.netlify.app" - function App() { + const [previewData, setPreviewData] = useState(null); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(false); + + const { data, loading: fetchLoading, error: fetchError } = useFetchData(PREVIEW_URL); - const { data: previewData, loading, error } = useFetchData(PREVIEW_URL) + useEffect(() => { + setLoading(fetchLoading); + setError(fetchError); + if (data) { + setPreviewData(data); + } + }, [data, fetchLoading, fetchError]); if (loading) return if (error) return @@ -25,4 +35,4 @@ function App() { ) } -export default App +export default App; diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index 76d28fcae..f61cb7f79 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -1,5 +1,4 @@ import { Paper, CardMedia, Typography, Box} from '@mui/material'; -import { Grid2 } from '@mui/material' import PropTypes from "prop-types"; export default function ShowCard({ title, description, seasons, image, genres, updated }) { diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index a224c5022..3b3a2fed0 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -1,5 +1,4 @@ import ShowCard from "../components/ShowCard" -import { Paper, CardMedia, Typography, Box} from '@mui/material'; import { Grid2 } from '@mui/material' import PropTypes from "prop-types"; From c477f256aa268ec88e55b78bfad130eeafc35cbf Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 16 Oct 2024 10:54:11 +0200 Subject: [PATCH 010/323] Fix: use .slice method before sorting to create shallow copy of array --- src/pages/Content.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 3b3a2fed0..109290e0d 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -3,7 +3,7 @@ import { Grid2 } from '@mui/material' import PropTypes from "prop-types"; function Content({ previewData }) { - const [...previewDataSorted] = previewData.sort((a, b) => a.title.localeCompare(b.title)) + const previewDataSorted = previewData.slice().sort((a, b) => a.title.localeCompare(b.title)); return ( Date: Wed, 16 Oct 2024 15:29:17 +0200 Subject: [PATCH 011/323] Feat: Asynchronously fetch genres --- src/App.jsx | 79 ++++++++++++++++++++++--------------- src/components/ShowCard.jsx | 4 +- src/pages/Content.jsx | 17 ++++++-- 3 files changed, 63 insertions(+), 37 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 6d57c96e0..3e8b9de9b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,38 +1,55 @@ -import { useState, useEffect } from 'react'; import useFetchData from './hooks/useFetchData'; -import LoadingSpinner from "./pages/LoadingSpinner" -import ErrorPage from './pages/ErrorPage' -import SearchAppBar from './components/SearchAppBar' -import Content from "./pages/Content" -import PlaybackFooter from './components/PlaybackFooter' +import LoadingSpinner from "./pages/LoadingSpinner"; +import ErrorPage from './pages/ErrorPage'; +import SearchAppBar from './components/SearchAppBar'; +import Content from "./pages/Content"; +import PlaybackFooter from './components/PlaybackFooter'; +import { useState, useEffect } from 'react'; -const PREVIEW_URL = "https://podcast-api.netlify.app" +const PREVIEW_URL = "https://podcast-api.netlify.app"; +const GENRE_URL = "https://podcast-api.netlify.app/genre/"; function App() { - const [previewData, setPreviewData] = useState(null); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(false); - - const { data, loading: fetchLoading, error: fetchError } = useFetchData(PREVIEW_URL); - - useEffect(() => { - setLoading(fetchLoading); - setError(fetchError); - if (data) { - setPreviewData(data); - } - }, [data, fetchLoading, fetchError]); - - if (loading) return - if (error) return - - return ( - <> - - {previewData && } - - - ) + const { data: previewData, loading, error } = useFetchData(PREVIEW_URL); + const [genres, setGenres] = useState([]); + const [loadingGenres, setLoadingGenres] = useState(true); + + useEffect(() => { + if (!previewData) return; + + const fetchGenres = async () => { + try { + // Create a set consisting of unique genre ID's from previewData by using flatMap to flatten each array of ID's to one array of ID's + const genreIds = new Set(previewData.flatMap(show => show.genres)); + + // Fetch genres asynchronously, returning response genre object and saving it within an array + const genrePromises = Array.from(genreIds).map(async (id) => { + const response = await fetch(`${GENRE_URL}${id}`); + return await response.json(); // Store the whole object + }); + // Save the array of genre objects to state + const fetchedGenres = await Promise.all(genrePromises); + setGenres(fetchedGenres); + } catch (err) { + console.error("Error fetching genres:", err); + } finally { + setLoadingGenres(false); + } + }; + + fetchGenres(); + }, [previewData]); + + if (loading || loadingGenres) return ; + if (error) return ; + + return ( + <> + + {previewData && } + + + ); } export default App; diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index f61cb7f79..d4aea7591 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -43,10 +43,10 @@ export default function ShowCard({ title, description, seasons, image, genres, u mb: "0.25rem" }}> - Horror, Action + {genres} - {"Last updated: " + new Date(updated).toLocaleDateString()} + {"Updated: " + new Date(updated).toLocaleDateString()}
a.title.localeCompare(b.title)); return ( @@ -17,7 +17,7 @@ function Content({ previewData }) { description={showPreview.description} seasons={showPreview.seasons} image={showPreview.image} - genres={showPreview.genres} + genres={showPreview.genres.map(genreId => genres.find(genre => genre.id === genreId)?.title).join(", ")} // Map each genres id to a title within the genres state array updated={showPreview.updated} /> @@ -26,7 +26,7 @@ function Content({ previewData }) { ) } -// Define Prop Types for previewData array of objects within Content component +// Define Prop Types for previewData array of objects and for genres array of objects Content.propTypes = { previewData: PropTypes.arrayOf( PropTypes.shape({ @@ -38,7 +38,16 @@ Content.propTypes = { genres: PropTypes.array.isRequired, updated: PropTypes.string.isRequired }) - ) + ).isRequired, + genres: PropTypes.arrayOf( + PropTypes.shape({ + id: PropTypes.number.isRequired, + title: PropTypes.string.isRequired, + description: PropTypes.string, + shows: PropTypes.array + }) + ).isRequired, } + export default Content \ No newline at end of file From c64dfc6ccd25ec59156a37658a3df7116a396a62 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 16 Oct 2024 16:11:37 +0200 Subject: [PATCH 012/323] Feat: Responsive Navbar Logo --- src/assets/poddy_logo_darkmode.png | Bin 0 -> 52280 bytes src/assets/poddy_logo_lightmode.png | Bin 0 -> 52187 bytes src/components/PoddyLogo.jsx | 15 ++++++++++++++ src/components/SearchAppBar.jsx | 29 +++++++++++++--------------- src/components/ShowCard.jsx | 2 +- 5 files changed, 29 insertions(+), 17 deletions(-) create mode 100644 src/assets/poddy_logo_darkmode.png create mode 100644 src/assets/poddy_logo_lightmode.png create mode 100644 src/components/PoddyLogo.jsx diff --git a/src/assets/poddy_logo_darkmode.png b/src/assets/poddy_logo_darkmode.png new file mode 100644 index 0000000000000000000000000000000000000000..8ceff280ccf296416c3f6691bc7486d26b8ca009 GIT binary patch literal 52280 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 literal 0 HcmV?d00001 diff --git a/src/assets/poddy_logo_lightmode.png b/src/assets/poddy_logo_lightmode.png new file mode 100644 index 0000000000000000000000000000000000000000..8082ecaf68cd1f5a3e488a01692187e027d8c887 GIT binary patch literal 52187 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

fa9hq_M1wlkl|RRt+V%;V$u59V`#TDq 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 literal 0 HcmV?d00001 diff --git a/src/components/PoddyLogo.jsx b/src/components/PoddyLogo.jsx new file mode 100644 index 000000000..05d080017 --- /dev/null +++ b/src/components/PoddyLogo.jsx @@ -0,0 +1,15 @@ +import { useMediaQuery } from '@mui/material'; +import PoddyLogoDarkMode from '../assets/poddy_logo_darkmode.png' +import PoddyLogoLightMode from '../assets/poddy_logo_lightmode.png' + +export default function ThemeIcon() { + const prefersDarkMode = useMediaQuery('(prefers-color-scheme: dark)'); + + return ( + Themed Poddy Logo + ); +} diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx index c193b74a9..66b9f52a7 100644 --- a/src/components/SearchAppBar.jsx +++ b/src/components/SearchAppBar.jsx @@ -1,12 +1,10 @@ import { styled, alpha } from '@mui/material/styles'; -import AppBar from '@mui/material/AppBar'; -import Box from '@mui/material/Box'; -import Toolbar from '@mui/material/Toolbar'; -import IconButton from '@mui/material/IconButton'; -import Typography from '@mui/material/Typography'; -import InputBase from '@mui/material/InputBase'; +import { AppBar, Box, Toolbar, Typography, InputBase } from '@mui/material/'; import MenuIcon from '@mui/icons-material/Menu'; import SearchIcon from '@mui/icons-material/Search'; +import FilterListIcon from '@mui/icons-material/FilterList'; +import SortIcon from '@mui/icons-material/Sort'; +import PoddyLogo from './PoddyLogo' const Search = styled('div')(({ theme }) => ({ position: 'relative', @@ -55,22 +53,21 @@ export default function SearchAppBar() { - - - + + + - MUI + Poddy diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index d4aea7591..771cf4226 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -78,6 +78,6 @@ ShowCard.propTypes = { description: PropTypes.string.isRequired, seasons: PropTypes.number.isRequired, image: PropTypes.string.isRequired, - genres: PropTypes.array.isRequired, + genres: PropTypes.string.isRequired, updated: PropTypes.string.isRequired } From c463118eab2d5956a0a681b5f18a2dd5e816fee6 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 16 Oct 2024 16:27:15 +0200 Subject: [PATCH 013/323] Feat: Implement Sort and Filter Icons --- src/components/SearchAppBar.jsx | 65 ++++++++++++++++++++++++++++++--- 1 file changed, 60 insertions(+), 5 deletions(-) diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx index 66b9f52a7..53b9963db 100644 --- a/src/components/SearchAppBar.jsx +++ b/src/components/SearchAppBar.jsx @@ -1,10 +1,11 @@ import { styled, alpha } from '@mui/material/styles'; -import { AppBar, Box, Toolbar, Typography, InputBase } from '@mui/material/'; +import { AppBar, Box, Toolbar, Typography, InputBase, IconButton, Menu, MenuItem } from '@mui/material/'; import MenuIcon from '@mui/icons-material/Menu'; import SearchIcon from '@mui/icons-material/Search'; import FilterListIcon from '@mui/icons-material/FilterList'; import SortIcon from '@mui/icons-material/Sort'; -import PoddyLogo from './PoddyLogo' +import PoddyLogo from './PoddyLogo'; +import { useState } from 'react'; const Search = styled('div')(({ theme }) => ({ position: 'relative', @@ -36,7 +37,6 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ width: '100%', '& .MuiInputBase-input': { padding: theme.spacing(1, 1, 1, 0), - // vertical padding + font size from searchIcon paddingLeft: `calc(1em + ${theme.spacing(4)})`, transition: theme.transitions.create('width'), [theme.breakpoints.up('sm')]: { @@ -48,7 +48,36 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ }, })); -export default function SearchAppBar() { +export default function SearchAppBar({ onSortChange, onFilterChange }) { + const [sortAnchorEl, setSortAnchorEl] = useState(null); + const [filterAnchorEl, setFilterAnchorEl] = useState(null); + + const handleSortClick = (event) => { + setSortAnchorEl(event.currentTarget); + }; + + const handleSortClose = () => { + setSortAnchorEl(null); + }; + + const handleSortSelect = (sortOption) => { + onSortChange(sortOption); + handleSortClose(); + }; + + const handleFilterClick = (event) => { + setFilterAnchorEl(event.currentTarget); + }; + + const handleFilterClose = () => { + setFilterAnchorEl(null); + }; + + const handleFilterSelect = (genre) => { + onFilterChange(genre); + handleFilterClose(); + }; + return ( @@ -59,7 +88,7 @@ export default function SearchAppBar() { justifyContent: "center", alignItems: "center" }}> - + + + + +

+ handleSortSelect('A-Z')}>Sort A-Z + handleSortSelect('Z-A')}>Sort Z-A + handleSortSelect('newest')}>Newest First + handleSortSelect('oldest')}>Oldest First + + + + + + {/* Replace with dynamic list of genres */} + handleFilterSelect('comedy')}>Comedy + handleFilterSelect('drama')}>Drama + handleFilterSelect('action')}>Action +
From 87a070efcac4a224732bb13877912e26fde168a2 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 16 Oct 2024 17:36:55 +0200 Subject: [PATCH 014/323] Feat: Implement Sorting features and hooks --- src/App.jsx | 39 +++++++++++++++++++++++++++++---- src/components/SearchAppBar.jsx | 3 ++- src/pages/Content.jsx | 8 +++---- src/utils/sortUtils.js | 18 +++++++++++++++ 4 files changed, 59 insertions(+), 9 deletions(-) create mode 100644 src/utils/sortUtils.js diff --git a/src/App.jsx b/src/App.jsx index 3e8b9de9b..7ef19c43a 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -5,14 +5,17 @@ import SearchAppBar from './components/SearchAppBar'; import Content from "./pages/Content"; import PlaybackFooter from './components/PlaybackFooter'; import { useState, useEffect } from 'react'; +import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "./utils/sortUtils"; const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; function App() { - const { data: previewData, loading, error } = useFetchData(PREVIEW_URL); - const [genres, setGenres] = useState([]); + const { data: previewData, loading, error } = useFetchData(PREVIEW_URL); // Grab the data, loading, and error values from the useFetchData helper + const [genres, setGenres] = useState([]); const [loadingGenres, setLoadingGenres] = useState(true); + const [sortOption, setSortOption] = useState("A-Z"); // State to track the sort option + const [sortedData, setSortedData] = useState(previewData || []); // State for sorted data useEffect(() => { if (!previewData) return; @@ -40,13 +43,41 @@ function App() { fetchGenres(); }, [previewData]); + useEffect(() => { + // Apply the sorting function whenever the sort option or previewData changes + if (previewData) { + let sorted; + switch (sortOption) { + case 'A-Z': + sorted = sortByTitleAscending(previewData); + break; + case 'Z-A': + sorted = sortByTitleDescending(previewData); + break; + case 'newest': + sorted = sortByDateDescending(previewData); + break; + case 'oldest': + sorted = sortByDateAscending(previewData); + break; + default: + sorted = previewData; + } + setSortedData(sorted); + } + }, [sortOption, previewData]); + + const handleSortChange = (option) => { + setSortOption(option); + }; + if (loading || loadingGenres) return ; if (error) return ; return ( <> - - {previewData && } + + {sortedData && } ); diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx index 53b9963db..8eeb84fcb 100644 --- a/src/components/SearchAppBar.jsx +++ b/src/components/SearchAppBar.jsx @@ -1,3 +1,4 @@ +import { useState } from 'react'; import { styled, alpha } from '@mui/material/styles'; import { AppBar, Box, Toolbar, Typography, InputBase, IconButton, Menu, MenuItem } from '@mui/material/'; import MenuIcon from '@mui/icons-material/Menu'; @@ -5,7 +6,7 @@ import SearchIcon from '@mui/icons-material/Search'; import FilterListIcon from '@mui/icons-material/FilterList'; import SortIcon from '@mui/icons-material/Sort'; import PoddyLogo from './PoddyLogo'; -import { useState } from 'react'; +import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "../utils/sortUtils" const Search = styled('div')(({ theme }) => ({ position: 'relative', diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index c88706aaa..6d23eaf28 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -2,15 +2,15 @@ import ShowCard from "../components/ShowCard" import { Grid2 } from '@mui/material' import PropTypes from "prop-types"; -function Content({ previewData, genres }) { - const previewDataSorted = previewData.slice().sort((a, b) => a.title.localeCompare(b.title)); +function Content({ showData, genres }) { + {console.log(showData)} return ( - {previewDataSorted.map((showPreview) => ( + {showData.map((showPreview) => ( { + return [...data].sort((a, b) => a.title.localeCompare(b.title)); + }; + +export const sortByTitleDescending = (data) => { + return [...data].sort((a, b) => b.title.localeCompare(a.title)); + }; + +export const sortByDateAscending = (data) => { + return [...data].sort((a, b) => new Date(a.date) - new Date(b.date)); + }; + +export const sortByDateDescending = (data) => { + return [...data].sort((a, b) => new Date(b.date) - new Date(a.date)); + }; + From f8327b5b614b60a916b2488524b0b14c6f5ca6f4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 16 Oct 2024 17:39:08 +0200 Subject: [PATCH 015/323] Fix: Sorting by date helper functions referencing incorrect keys --- src/utils/sortUtils.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/utils/sortUtils.js b/src/utils/sortUtils.js index 35666f6f2..1fe48f1fd 100644 --- a/src/utils/sortUtils.js +++ b/src/utils/sortUtils.js @@ -9,10 +9,10 @@ export const sortByTitleDescending = (data) => { }; export const sortByDateAscending = (data) => { - return [...data].sort((a, b) => new Date(a.date) - new Date(b.date)); + return [...data].sort((a, b) => new Date(a.updated) - new Date(b.updated)); }; export const sortByDateDescending = (data) => { - return [...data].sort((a, b) => new Date(b.date) - new Date(a.date)); + return [...data].sort((a, b) => new Date(b.updated) - new Date(a.updated)); }; From 1256551fe561c8540f5e685746a8aaff308fe617 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 16 Oct 2024 18:55:10 +0200 Subject: [PATCH 016/323] Feat: Implement filtering by genre functionality --- src/App.jsx | 82 ++++++++++++++++++++------------- src/components/SearchAppBar.jsx | 22 +++++---- src/pages/Content.jsx | 1 - 3 files changed, 63 insertions(+), 42 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 7ef19c43a..594860b14 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -11,26 +11,24 @@ const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; function App() { - const { data: previewData, loading, error } = useFetchData(PREVIEW_URL); // Grab the data, loading, and error values from the useFetchData helper - const [genres, setGenres] = useState([]); + const { data: previewData, loading, error } = useFetchData(PREVIEW_URL); + const [genres, setGenres] = useState([]); const [loadingGenres, setLoadingGenres] = useState(true); - const [sortOption, setSortOption] = useState("A-Z"); // State to track the sort option - const [sortedData, setSortedData] = useState(previewData || []); // State for sorted data + const [sortOption, setSortOption] = useState("A-Z"); // Default sort option + const [selectedGenre, setSelectedGenre] = useState(null); // State for selected genre + const [sortedData, setSortedData] = useState(previewData); // State for sorted data + const [filteredData, setFilteredData] = useState(previewData); // State for filtered data useEffect(() => { if (!previewData) return; const fetchGenres = async () => { try { - // Create a set consisting of unique genre ID's from previewData by using flatMap to flatten each array of ID's to one array of ID's const genreIds = new Set(previewData.flatMap(show => show.genres)); - - // Fetch genres asynchronously, returning response genre object and saving it within an array const genrePromises = Array.from(genreIds).map(async (id) => { const response = await fetch(`${GENRE_URL}${id}`); - return await response.json(); // Store the whole object + return await response.json(); }); - // Save the array of genre objects to state const fetchedGenres = await Promise.all(genrePromises); setGenres(fetchedGenres); } catch (err) { @@ -43,32 +41,50 @@ function App() { fetchGenres(); }, [previewData]); + // Sorting effect useEffect(() => { - // Apply the sorting function whenever the sort option or previewData changes - if (previewData) { - let sorted; - switch (sortOption) { - case 'A-Z': - sorted = sortByTitleAscending(previewData); - break; - case 'Z-A': - sorted = sortByTitleDescending(previewData); - break; - case 'newest': - sorted = sortByDateDescending(previewData); - break; - case 'oldest': - sorted = sortByDateAscending(previewData); - break; - default: - sorted = previewData; - } - setSortedData(sorted); + if (previewData) { + let sorted; + switch (sortOption) { + case 'A-Z': + sorted = sortByTitleAscending(previewData); + break; + case 'Z-A': + sorted = sortByTitleDescending(previewData); + break; + case 'newest': + sorted = sortByDateDescending(previewData); + break; + case 'oldest': + sorted = sortByDateAscending(previewData); + break; + default: + sorted = previewData; + } + setSortedData(sorted); + } + }, [sortOption, previewData]); + + useEffect(() => { + // Apply filtering whenever the selected genre changes + let filteredData = sortedData; // Start with sorted data + + if (selectedGenre) { + filteredData = sortedData.filter((show) => + show.genres.includes(selectedGenre.id) // Check if the show includes the selected genre + ); } - }, [sortOption, previewData]); + + setFilteredData(filteredData); // Update the state with filtered data + }, [selectedGenre, sortedData]); // Re-run when selected genre or sorted data changes + const handleSortChange = (option) => { - setSortOption(option); + setSortOption(option); + }; + + const handleFilterChange = (genre) => { + setSelectedGenre(genre); }; if (loading || loadingGenres) return ; @@ -76,8 +92,8 @@ function App() { return ( <> - - {sortedData && } + {genres && } + {filteredData && } ); diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx index 8eeb84fcb..75fa0a895 100644 --- a/src/components/SearchAppBar.jsx +++ b/src/components/SearchAppBar.jsx @@ -1,12 +1,11 @@ import { useState } from 'react'; +import PropTypes from 'prop-types'; import { styled, alpha } from '@mui/material/styles'; import { AppBar, Box, Toolbar, Typography, InputBase, IconButton, Menu, MenuItem } from '@mui/material/'; -import MenuIcon from '@mui/icons-material/Menu'; import SearchIcon from '@mui/icons-material/Search'; import FilterListIcon from '@mui/icons-material/FilterList'; import SortIcon from '@mui/icons-material/Sort'; import PoddyLogo from './PoddyLogo'; -import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "../utils/sortUtils" const Search = styled('div')(({ theme }) => ({ position: 'relative', @@ -49,10 +48,9 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ }, })); -export default function SearchAppBar({ onSortChange, onFilterChange }) { +export default function SearchAppBar({ onSortChange, onFilterChange, genres }) { const [sortAnchorEl, setSortAnchorEl] = useState(null); const [filterAnchorEl, setFilterAnchorEl] = useState(null); - const handleSortClick = (event) => { setSortAnchorEl(event.currentTarget); }; @@ -129,13 +127,21 @@ export default function SearchAppBar({ onSortChange, onFilterChange }) { open={Boolean(filterAnchorEl)} onClose={handleFilterClose} > - {/* Replace with dynamic list of genres */} - handleFilterSelect('comedy')}>Comedy - handleFilterSelect('drama')}>Drama - handleFilterSelect('action')}>Action + handleFilterSelect(null)}>Show All + {genres.map((genre) => ( + handleFilterSelect(genre)}> + {genre.title} + + ))} ); } + +SearchAppBar.propTypes = { + onSortChange: PropTypes.func.isRequired, + onFilterChange: PropTypes.func.isRequired, + genres: PropTypes.array.isRequired, // Validate genres as an array +}; \ No newline at end of file diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 6d23eaf28..bc696d5ca 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -3,7 +3,6 @@ import { Grid2 } from '@mui/material' import PropTypes from "prop-types"; function Content({ showData, genres }) { - {console.log(showData)} return ( Date: Wed, 16 Oct 2024 19:20:10 +0200 Subject: [PATCH 017/323] Feat: Border radius added to grid items and show images --- src/App.jsx | 26 +++++++++++++++++++------- src/components/SearchAppBar.jsx | 3 ++- src/components/ShowCard.jsx | 3 ++- src/pages/Content.jsx | 2 +- 4 files changed, 24 insertions(+), 10 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 594860b14..5593da5b1 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -18,6 +18,7 @@ function App() { const [selectedGenre, setSelectedGenre] = useState(null); // State for selected genre const [sortedData, setSortedData] = useState(previewData); // State for sorted data const [filteredData, setFilteredData] = useState(previewData); // State for filtered data + const [searchQuery, setSearchQuery] = useState(''); useEffect(() => { if (!previewData) return; @@ -66,17 +67,23 @@ function App() { }, [sortOption, previewData]); useEffect(() => { - // Apply filtering whenever the selected genre changes - let filteredData = sortedData; // Start with sorted data + let filteredData = sortedData; if (selectedGenre) { - filteredData = sortedData.filter((show) => - show.genres.includes(selectedGenre.id) // Check if the show includes the selected genre + filteredData = sortedData.filter((show) => + show.genres.includes(selectedGenre.id) ); } - setFilteredData(filteredData); // Update the state with filtered data - }, [selectedGenre, sortedData]); // Re-run when selected genre or sorted data changes + if (searchQuery) { + const lowerCaseQuery = searchQuery.toLowerCase(); + filteredData = filteredData.filter((show) => + show.title.toLowerCase().includes(lowerCaseQuery) + ); + } + + setFilteredData(filteredData); + }, [selectedGenre, sortedData, searchQuery]); const handleSortChange = (option) => { @@ -87,12 +94,17 @@ function App() { setSelectedGenre(genre); }; + const handleSearchChange = (query) => { + setSearchQuery(query); + }; + + if (loading || loadingGenres) return ; if (error) return ; return ( <> - {genres && } + {genres && } {filteredData && } diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx index 75fa0a895..f85bab19d 100644 --- a/src/components/SearchAppBar.jsx +++ b/src/components/SearchAppBar.jsx @@ -48,7 +48,7 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ }, })); -export default function SearchAppBar({ onSortChange, onFilterChange, genres }) { +export default function SearchAppBar({ onSortChange, onFilterChange, onSearchChange, genres }) { const [sortAnchorEl, setSortAnchorEl] = useState(null); const [filterAnchorEl, setFilterAnchorEl] = useState(null); const handleSortClick = (event) => { @@ -104,6 +104,7 @@ export default function SearchAppBar({ onSortChange, onFilterChange, genres }) { onSearchChange(e.target.value)} /> diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index 771cf4226..97f71f83e 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -10,7 +10,8 @@ export default function ShowCard({ title, description, seasons, image, genres, u alt={"Show Image for" + {title}} sx={{ height: "100%", // You can set fixed height, or use width depending on your needs - objectFit: 'cover', + objectFit: "cover", + borderRadius: "2%" }} /> {showData.map((showPreview) => ( - + Date: Wed, 16 Oct 2024 21:33:34 +0200 Subject: [PATCH 018/323] Feat: Add audio player component and light/dark mode consistency --- src/App.jsx | 4 +- src/components/AudioPlayer.jsx | 87 +++++++++++++++++++++++++++++++ src/components/PlaybackFooter.jsx | 7 --- src/components/SearchAppBar.jsx | 27 ++++++---- src/theme.js | 27 +++++++++- 5 files changed, 131 insertions(+), 21 deletions(-) create mode 100644 src/components/AudioPlayer.jsx delete mode 100644 src/components/PlaybackFooter.jsx diff --git a/src/App.jsx b/src/App.jsx index 5593da5b1..98654e553 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,9 +3,9 @@ import LoadingSpinner from "./pages/LoadingSpinner"; import ErrorPage from './pages/ErrorPage'; import SearchAppBar from './components/SearchAppBar'; import Content from "./pages/Content"; -import PlaybackFooter from './components/PlaybackFooter'; import { useState, useEffect } from 'react'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "./utils/sortUtils"; +import AudioPlayer from './components/AudioPlayer'; const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; @@ -106,7 +106,7 @@ function App() { <> {genres && } {filteredData && } - + ); } diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx new file mode 100644 index 000000000..ab26b327a --- /dev/null +++ b/src/components/AudioPlayer.jsx @@ -0,0 +1,87 @@ +import { useState, useRef } from 'react'; +import { Box, IconButton, Slider } from '@mui/material'; +import { useTheme } from '@mui/material/styles'; +import PlayArrowIcon from '@mui/icons-material/PlayArrow'; +import PauseIcon from '@mui/icons-material/Pause'; +import SkipNextIcon from '@mui/icons-material/SkipNext'; +import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; +import VolumeUpIcon from '@mui/icons-material/VolumeUp'; +import VolumeOffIcon from '@mui/icons-material/VolumeOff'; + +const AudioPlayer = () => { + const theme = useTheme(); + + const [isPlaying, setIsPlaying] = useState(false); + const [volume, setVolume] = useState(50); + const audioRef = useRef(null); + + const handlePlayPause = () => { + if (isPlaying) { + audioRef.current.pause(); + } else { + audioRef.current.play(); + } + setIsPlaying(!isPlaying); + }; + + const handleVolumeChange = (event, newValue) => { + setVolume(newValue); + audioRef.current.volume = newValue / 100; // Convert to 0-1 range for HTML audio + }; + + const handleSkipNext = () => { + // Handle skipping to the next track + }; + + const handleSkipPrevious = () => { + // Handle skipping to the previous track + }; + + return ( + + + + + + {isPlaying ? : } + + + + + + + + {volume === 0 ? : } + + + + + {/* Replace 'your-audio-file.mp3' with the URL of the current audio track */} + + ); +}; + +export default AudioPlayer; diff --git a/src/components/PlaybackFooter.jsx b/src/components/PlaybackFooter.jsx deleted file mode 100644 index f4933e403..000000000 --- a/src/components/PlaybackFooter.jsx +++ /dev/null @@ -1,7 +0,0 @@ -function PlaybackFooter() { - return ( -

This is the Playback Footer

- ) -} - -export default PlaybackFooter \ No newline at end of file diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx index f85bab19d..79516d2f9 100644 --- a/src/components/SearchAppBar.jsx +++ b/src/components/SearchAppBar.jsx @@ -1,4 +1,5 @@ import { useState } from 'react'; +import { useTheme } from '@mui/material/styles'; import PropTypes from 'prop-types'; import { styled, alpha } from '@mui/material/styles'; import { AppBar, Box, Toolbar, Typography, InputBase, IconButton, Menu, MenuItem } from '@mui/material/'; @@ -10,10 +11,6 @@ import PoddyLogo from './PoddyLogo'; const Search = styled('div')(({ theme }) => ({ position: 'relative', borderRadius: theme.shape.borderRadius, - backgroundColor: alpha(theme.palette.common.white, 0.15), - '&:hover': { - backgroundColor: alpha(theme.palette.common.white, 0.25), - }, marginLeft: 0, width: '100%', [theme.breakpoints.up('sm')]: { @@ -30,11 +27,13 @@ const SearchIconWrapper = styled('div')(({ theme }) => ({ display: 'flex', alignItems: 'center', justifyContent: 'center', + color: theme.palette.text.primary, // Ensure icon in search field is visible across modes })); const StyledInputBase = styled(InputBase)(({ theme }) => ({ - color: 'inherit', - width: '100%', + color: theme.palette.text.primary, // Matches text colour to theme + backgroundColor: alpha(theme.palette.common.black, 0.15), // Consistent darker styling across modes for better visibility + borderRadius: theme.shape.borderRadius, '& .MuiInputBase-input': { padding: theme.spacing(1, 1, 1, 0), paddingLeft: `calc(1em + ${theme.spacing(4)})`, @@ -49,6 +48,8 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ })); export default function SearchAppBar({ onSortChange, onFilterChange, onSearchChange, genres }) { + const theme = useTheme(); + const [sortAnchorEl, setSortAnchorEl] = useState(null); const [filterAnchorEl, setFilterAnchorEl] = useState(null); const handleSortClick = (event) => { @@ -78,8 +79,14 @@ export default function SearchAppBar({ onSortChange, onFilterChange, onSearchCha }; return ( - - + - ); } SearchAppBar.propTypes = { onSortChange: PropTypes.func.isRequired, onFilterChange: PropTypes.func.isRequired, - genres: PropTypes.array.isRequired, // Validate genres as an array + onSearchChange: PropTypes.func.isRequired, + genres: PropTypes.array.isRequired, }; \ No newline at end of file diff --git a/src/theme.js b/src/theme.js index 6092a7088..89fb790ab 100644 --- a/src/theme.js +++ b/src/theme.js @@ -3,13 +3,36 @@ import { createTheme } from '@mui/material/styles'; export const lightTheme = createTheme({ palette: { mode: 'light', - // Add more light mode customization here + searchAppBar: { + background: '#f5f5f5', + color: '#121212', + inputBackground: '#e0e0e0', + inputText: '#000000', + }, + audioPlayer: { + background: '#f5f5f5', + controls: '#121212', + slider: '#121212', + } }, }); export const darkTheme = createTheme({ palette: { mode: 'dark', - // Add more dark mode customization here + searchAppBar: { + background: '#212121', + color: '#fafafa' + }, + appBar: { + background: '#212121' + }, + AppBar: { + background: '#212121' + }, + audioPlayer: { + background: '#212121', + controls: '#fafafa', + } }, }); \ No newline at end of file From a64b7d86ff8ad27d3adf7e45557b20bd16c64232 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 16 Oct 2024 23:41:11 +0200 Subject: [PATCH 019/323] Fix: Center audio controls --- src/components/AudioPlayer.jsx | 35 ++++++++++++++++++---------------- 1 file changed, 19 insertions(+), 16 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index ab26b327a..059aba083 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -9,7 +9,7 @@ import VolumeUpIcon from '@mui/icons-material/VolumeUp'; import VolumeOffIcon from '@mui/icons-material/VolumeOff'; const AudioPlayer = () => { - const theme = useTheme(); + const theme = useTheme(); const [isPlaying, setIsPlaying] = useState(false); const [volume, setVolume] = useState(50); @@ -26,7 +26,7 @@ const AudioPlayer = () => { const handleVolumeChange = (event, newValue) => { setVolume(newValue); - audioRef.current.volume = newValue / 100; // Convert to 0-1 range for HTML audio + audioRef.current.volume = newValue / 100; }; const handleSkipNext = () => { @@ -46,22 +46,26 @@ const AudioPlayer = () => { position: 'fixed', bottom: 0, display: 'flex', - justifyContent: 'space-between', alignItems: 'center', + justifyContent: 'space-between', padding: '0.5rem', }} > - - - - - {isPlaying ? : } - - - - + {/* Spacer */} - + + + + + + {isPlaying ? : } + + + + + + + {volume === 0 ? : } @@ -73,15 +77,14 @@ const AudioPlayer = () => { max={100} sx={{ width: 100, - color: theme.palette.audioPlayer.slider, // Apply black color for the slider + color: theme.palette.audioPlayer.slider, }} /> - {/* Replace 'your-audio-file.mp3' with the URL of the current audio track */} ); }; -export default AudioPlayer; +export default AudioPlayer; \ No newline at end of file From 50031e7027c8bb74edc3952d69e43ce94640f99b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 17 Oct 2024 00:31:04 +0200 Subject: [PATCH 020/323] Feat: Implement Modal on click of each show card --- src/App.jsx | 42 ++++++++++--- src/components/PodcastDetailsModal.jsx | 83 ++++++++++++++++++++++++++ src/components/ShowCard.jsx | 7 ++- src/pages/Content.jsx | 25 ++++---- 4 files changed, 134 insertions(+), 23 deletions(-) create mode 100644 src/components/PodcastDetailsModal.jsx diff --git a/src/App.jsx b/src/App.jsx index 98654e553..2763d98db 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -6,6 +6,8 @@ import Content from "./pages/Content"; import { useState, useEffect } from 'react'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "./utils/sortUtils"; import AudioPlayer from './components/AudioPlayer'; +import PodcastDetailsModal from './components/PodcastDetailsModal'; +import { Box } from '@mui/material' const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; @@ -19,6 +21,8 @@ function App() { const [sortedData, setSortedData] = useState(previewData); // State for sorted data const [filteredData, setFilteredData] = useState(previewData); // State for filtered data const [searchQuery, setSearchQuery] = useState(''); + const [modalOpen, setModalOpen] = useState(false); + const [selectedShow, setSelectedShow] = useState(null); useEffect(() => { if (!previewData) return; @@ -91,24 +95,46 @@ function App() { }; const handleFilterChange = (genre) => { - setSelectedGenre(genre); + setSelectedGenre(genre); }; const handleSearchChange = (query) => { setSearchQuery(query); }; + // New handler for opening the modal + const handleShowClick = (show) => { + setSelectedShow(show); + setModalOpen(true); + }; + + // New handler for closing the modal + const handleCloseModal = () => { + setModalOpen(false); + }; + - if (loading || loadingGenres) return ; + if (loading || loadingGenres) return ( + + + + ) if (error) return ; return ( - <> - {genres && } - {filteredData && } - - - ); + <> + {genres && } + {filteredData && } + + {selectedShow && ( + + )} + + ); } export default App; diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx new file mode 100644 index 000000000..79ac928a9 --- /dev/null +++ b/src/components/PodcastDetailsModal.jsx @@ -0,0 +1,83 @@ +import { useState, useEffect } from 'react'; +import { Modal, Box, Typography, Button, CircularProgress } from '@mui/material'; +import PropTypes from 'prop-types'; + +const PodcastDetailsModal = ({ show, open, onClose }) => { + const [detailedShow, setDetailedShow] = useState(null); + const [loading, setLoading] = useState(true); + + useEffect(() => { + if (open && show) { + setLoading(true); + // Replace this with your actual API call + fetch(`https://podcast-api.netlify.app/id/${show.id}`) + .then(response => response.json()) + .then(data => { + setDetailedShow(data); + setLoading(false); + }) + .catch(error => { + console.error('Error fetching show details:', error); + setLoading(false); + }); + } + }, [open, show]); + + return ( + + + {loading ? ( + + + + ) : detailedShow ? ( + + + {detailedShow.title} + + {detailedShow.title} + + {detailedShow.description} + + + Seasons: {detailedShow.seasons.length} + + {/* Add more details as needed */} + + + ) : ( + Failed to load show details. + )} + + + ); +}; + +PodcastDetailsModal.propTypes = { + show: PropTypes.object.isRequired, + open: PropTypes.bool.isRequired, + onClose: PropTypes.func.isRequired, +}; + +export default PodcastDetailsModal; \ No newline at end of file diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index 97f71f83e..bc356bc27 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -1,9 +1,9 @@ import { Paper, CardMedia, Typography, Box} from '@mui/material'; import PropTypes from "prop-types"; -export default function ShowCard({ title, description, seasons, image, genres, updated }) { +export default function ShowCard({ title, description, seasons, image, genres, updated, onClick }) { return ( - + ( genres.find(genre => genre.id === genreId)?.title).join(", ")} // Map each genres id to a title within the genres state array - updated={showPreview.updated} - /> + title={showPreview.title} + description={showPreview.description} + seasons={showPreview.seasons} + image={showPreview.image} + genres={showPreview.genres.map(genreId => genres.find(genre => genre.id === genreId)?.title).join(", ")} + updated={showPreview.updated} + onClick={() => onShowClick(showPreview)} + /> ))}
- ) + ); } // Define Prop Types for previewData array of objects and for genres array of objects @@ -46,6 +46,7 @@ Content.propTypes = { shows: PropTypes.array }) ).isRequired, + onShowClick: PropTypes.func.isRequired, } From 3bf2751e9c7d14603b8c81e6058849da093ddb55 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 17 Oct 2024 00:54:34 +0200 Subject: [PATCH 021/323] Feat: Update modal to include season and episode information --- src/App.jsx | 7 +++ src/components/PodcastDetailsModal.jsx | 74 +++++++++++++++++++------- 2 files changed, 63 insertions(+), 18 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 2763d98db..aa86b4092 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -102,6 +102,12 @@ function App() { setSearchQuery(query); }; + const handlePlayEpisode = (episode) => { + // Implement your logic to play the episode + console.log('Playing episode:', episode); + }; + + // New handler for opening the modal const handleShowClick = (show) => { setSelectedShow(show); @@ -131,6 +137,7 @@ function App() { show={selectedShow} open={modalOpen} onClose={handleCloseModal} + onPlayEpisode={handlePlayEpisode} /> )} diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 79ac928a9..30cae165d 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -1,19 +1,21 @@ import { useState, useEffect } from 'react'; -import { Modal, Box, Typography, Button, CircularProgress } from '@mui/material'; +import { Modal, Box, Typography, Button, CircularProgress, Select, MenuItem, List, ListItem, ListItemText, ListItemSecondaryAction, IconButton } from '@mui/material'; +import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import PropTypes from 'prop-types'; -const PodcastDetailsModal = ({ show, open, onClose }) => { +const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode }) => { const [detailedShow, setDetailedShow] = useState(null); const [loading, setLoading] = useState(true); + const [selectedSeason, setSelectedSeason] = useState(null); useEffect(() => { if (open && show) { setLoading(true); - // Replace this with your actual API call fetch(`https://podcast-api.netlify.app/id/${show.id}`) .then(response => response.json()) .then(data => { setDetailedShow(data); + setSelectedSeason(data.seasons[0]); setLoading(false); }) .catch(error => { @@ -23,6 +25,11 @@ const PodcastDetailsModal = ({ show, open, onClose }) => { } }, [open, show]); + const handleSeasonChange = (event) => { + const season = detailedShow.seasons.find(s => s.season === event.target.value); + setSelectedSeason(season); + }; + return ( { top: '50%', left: '50%', transform: 'translate(-50%, -50%)', - width: '80%', - maxWidth: 600, - maxHeight: '80%', + width: '90%', + maxWidth: 800, + maxHeight: '90%', bgcolor: 'background.paper', border: '2px solid #000', boxShadow: 24, p: 4, display: 'flex', flexDirection: 'column', - alignItems: 'center', - justifyContent: 'center', + overflow: 'hidden', }}> {loading ? ( - + ) : detailedShow ? ( - - + <> + {detailedShow.title} + {detailedShow.title} - {detailedShow.title} - + {detailedShow.description} - - Seasons: {detailedShow.seasons.length} - - {/* Add more details as needed */} + + Season: + + + + + {selectedSeason && selectedSeason.episodes.map((episode) => ( + + + + onPlayEpisode(episode)}> + + + + + ))} + + - + ) : ( Failed to load show details. )} @@ -78,6 +115,7 @@ PodcastDetailsModal.propTypes = { show: PropTypes.object.isRequired, open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, + onPlayEpisode: PropTypes.func.isRequired, }; export default PodcastDetailsModal; \ No newline at end of file From f0f8b602d823154483af88c9b19e26d52773445c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 17 Oct 2024 17:31:01 +0200 Subject: [PATCH 022/323] Fix: Genres populating as chips on cards and modals --- src/App.jsx | 1 + src/components/PodcastDetailsModal.jsx | 91 ++++++++++++++++++-------- src/components/ShowCard.jsx | 35 +++++++--- src/pages/Content.jsx | 3 +- 4 files changed, 93 insertions(+), 37 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index aa86b4092..10bc48963 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -138,6 +138,7 @@ function App() { open={modalOpen} onClose={handleCloseModal} onPlayEpisode={handlePlayEpisode} + genres={genres} /> )} diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 30cae165d..063f14e1e 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -1,9 +1,9 @@ import { useState, useEffect } from 'react'; -import { Modal, Box, Typography, Button, CircularProgress, Select, MenuItem, List, ListItem, ListItemText, ListItemSecondaryAction, IconButton } from '@mui/material'; +import { Modal, Box, Typography, Button, CircularProgress, Select, MenuItem, List, ListItem, ListItemText, ListItemSecondaryAction, IconButton, Chip } from '@mui/material'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import PropTypes from 'prop-types'; -const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode }) => { +const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode }) => { const [detailedShow, setDetailedShow] = useState(null); const [loading, setLoading] = useState(true); const [selectedSeason, setSelectedSeason] = useState(null); @@ -30,6 +30,17 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode }) => { setSelectedSeason(season); }; + const formatDate = (dateString) => { + return new Date(dateString).toLocaleDateString(); + }; + + const getGenreTitles = () => { + return show.genres.map(genreId => { + const genre = genres.find(g => g.id === genreId); + return genre ? genre.title : 'Unknown Genre'; + }); + }; + return ( { transform: 'translate(-50%, -50%)', width: '90%', maxWidth: 800, - maxHeight: '90%', + maxHeight: '90vh', bgcolor: 'background.paper', border: '2px solid #000', boxShadow: 24, @@ -59,30 +70,51 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode }) => { ) : detailedShow ? ( <> - {detailedShow.title} - - {detailedShow.title} - - - {detailedShow.description} - - - Season: - + + + {detailedShow.title} + + + + {detailedShow.title} + + + {detailedShow.description} + + + {genres && getGenreTitles() + .map((genre, index) => ( + + ))} + + + Updated: {formatDate(detailedShow.updated)} + + + + + Episodes: {selectedSeason.episodes.length} + + + @@ -116,6 +148,11 @@ PodcastDetailsModal.propTypes = { open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, onPlayEpisode: PropTypes.func.isRequired, + genres: PropTypes.arrayOf(PropTypes.shape({ + id: PropTypes.number.isRequired, + title: PropTypes.string.isRequired, + description: PropTypes.string + })).isRequired, }; export default PodcastDetailsModal; \ No newline at end of file diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index bc356bc27..1357d73df 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -1,7 +1,23 @@ -import { Paper, CardMedia, Typography, Box} from '@mui/material'; +import { Paper, CardMedia, Typography, Box, Chip} from '@mui/material'; import PropTypes from "prop-types"; -export default function ShowCard({ title, description, seasons, image, genres, updated, onClick }) { +export default function ShowCard({ title, description, seasons, image, genresArray, showsGenre, updated, onClick }) { + + const getGenreTitles = () => { + return showsGenre.map(genreId => { + const genre = genresArray.find(g => g.id === genreId); + return genre ? genre.title : 'Unknown Genre'; + }); + }; + + const seasonText = () => { + if (seasons > 1) { + return `${seasons} Seasons` + } + else { + return `${seasons} Season` + } } + return ( - {seasons} Seasons + {seasonText()} - - {genres} - + {getGenreTitles().map((genre, index) => ( + + ))} {"Updated: " + new Date(updated).toLocaleDateString()} @@ -79,7 +95,8 @@ ShowCard.propTypes = { description: PropTypes.string.isRequired, seasons: PropTypes.number.isRequired, image: PropTypes.string.isRequired, - genres: PropTypes.string.isRequired, + genresArray: PropTypes.array.isRequired, + showsGenre: PropTypes.array.isRequired, updated: PropTypes.string.isRequired, onClick: PropTypes.func.isRequired, } diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 431c07d50..fc4b99954 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -15,7 +15,8 @@ function Content({ showData, genres, onShowClick }) { description={showPreview.description} seasons={showPreview.seasons} image={showPreview.image} - genres={showPreview.genres.map(genreId => genres.find(genre => genre.id === genreId)?.title).join(", ")} + genresArray={genres} + showsGenre={showPreview.genres} updated={showPreview.updated} onClick={() => onShowClick(showPreview)} /> From 741d45d05de9e0ac651723c5c1e63e1b98b6f208 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 17 Oct 2024 17:35:21 +0200 Subject: [PATCH 023/323] Fix: Volume slider colour obeys theme --- src/theme.js | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/theme.js b/src/theme.js index 89fb790ab..6c083d9fe 100644 --- a/src/theme.js +++ b/src/theme.js @@ -24,15 +24,10 @@ export const darkTheme = createTheme({ background: '#212121', color: '#fafafa' }, - appBar: { - background: '#212121' - }, - AppBar: { - background: '#212121' - }, audioPlayer: { background: '#212121', controls: '#fafafa', + slider: '#fafafa' } }, }); \ No newline at end of file From c285f7393c467609148a1625326cc05e0bfd6b4a Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 17 Oct 2024 17:41:05 +0200 Subject: [PATCH 024/323] Fix: Margin on the genre chips --- src/components/ShowCard.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index 1357d73df..114fe732c 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -59,9 +59,11 @@ export default function ShowCard({ title, description, seasons, image, genresArr mt: "0.25rem", mb: "0.25rem" }}> + {getGenreTitles().map((genre, index) => ( - + ))} + {"Updated: " + new Date(updated).toLocaleDateString()} From 7cafdacd73eecd85a7469aa2d16db21e8bb9d202 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 17 Oct 2024 18:20:34 +0200 Subject: [PATCH 025/323] Fix: modal scrollbars theme --- src/theme.js | 50 +++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 49 insertions(+), 1 deletion(-) diff --git a/src/theme.js b/src/theme.js index 6c083d9fe..87335ba32 100644 --- a/src/theme.js +++ b/src/theme.js @@ -15,7 +15,31 @@ export const lightTheme = createTheme({ slider: '#121212', } }, -}); + components: { + MuiCssBaseline: { + styleOverrides: { + '*::-webkit-scrollbar': { + width: '8px', + height: '8px', + }, + '*::-webkit-scrollbar-thumb': { + backgroundColor: '#ccc', + borderRadius: '4px', + }, + '*::-webkit-scrollbar-track': { + backgroundColor: '#f0f0f0', + }, + }, + }, + MuiButton: { + styleOverrides: { + root: { + color: '#121212', + }, + }, + }, + }, + }); export const darkTheme = createTheme({ palette: { @@ -30,4 +54,28 @@ export const darkTheme = createTheme({ slider: '#fafafa' } }, + components: { + MuiCssBaseline: { + styleOverrides: { + '*::-webkit-scrollbar': { + width: '8px', + height: '8px', + }, + '*::-webkit-scrollbar-thumb': { + backgroundColor: '#555', + borderRadius: '4px', + }, + '*::-webkit-scrollbar-track': { + backgroundColor: '#333', + }, + }, + }, + MuiButton: { + styleOverrides: { + root: { + color: '#fafafa', + }, + }, + }, + }, }); \ No newline at end of file From e6dff2cf61f2865fb4976ca4d661cd7008b2a020 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 17 Oct 2024 18:24:22 +0200 Subject: [PATCH 026/323] Fix: Border radius on modal --- src/components/PodcastDetailsModal.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 063f14e1e..15c58eddb 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -57,7 +57,8 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode }) => maxWidth: 800, maxHeight: '90vh', bgcolor: 'background.paper', - border: '2px solid #000', + border: '2px solid #000000', + borderRadius: "2%", boxShadow: 24, p: 4, display: 'flex', From 6588e4a31a8f08dda755a43665fc26d72d49401b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 17 Oct 2024 18:45:01 +0200 Subject: [PATCH 027/323] Fix: Centering of updated text in show cards --- src/components/PodcastDetailsModal.jsx | 2 +- src/components/ShowCard.jsx | 25 ++++++++++++++++++++----- 2 files changed, 21 insertions(+), 6 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 15c58eddb..847d918a0 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -92,7 +92,7 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode }) => ))} - + Updated: {formatDate(detailedShow.updated)} - - + }} + > + {getGenreTitles().map((genre, index) => ( - + ))} - + {"Updated: " + new Date(updated).toLocaleDateString()} From 27a2abf9a1976349e3c9bc5fa4fecba5417f011c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 17 Oct 2024 18:46:57 +0200 Subject: [PATCH 028/323] Fix: Podcast modal date not centered --- src/components/PodcastDetailsModal.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 847d918a0..12ec3dee0 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -92,9 +92,11 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode }) => ))} - + + Updated: {formatDate(detailedShow.updated)} + Date: Thu, 17 Oct 2024 23:24:36 +0200 Subject: [PATCH 029/323] Fix: Audio player controls and genre chips --- src/App.jsx | 112 ++++++++++---- src/components/AudioPlayer.jsx | 193 ++++++++++++++++++++----- src/components/PodcastDetailsModal.jsx | 92 ++++++------ 3 files changed, 286 insertions(+), 111 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 10bc48963..482ee3d75 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -11,18 +11,23 @@ import { Box } from '@mui/material' const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; +const SHOW_URL = "https://podcast-api.netlify.app/id/"; function App() { const { data: previewData, loading, error } = useFetchData(PREVIEW_URL); const [genres, setGenres] = useState([]); const [loadingGenres, setLoadingGenres] = useState(true); - const [sortOption, setSortOption] = useState("A-Z"); // Default sort option - const [selectedGenre, setSelectedGenre] = useState(null); // State for selected genre - const [sortedData, setSortedData] = useState(previewData); // State for sorted data - const [filteredData, setFilteredData] = useState(previewData); // State for filtered data + const [sortOption, setSortOption] = useState("A-Z"); + const [selectedGenre, setSelectedGenre] = useState(null); + const [sortedData, setSortedData] = useState(previewData); + const [filteredData, setFilteredData] = useState(previewData); const [searchQuery, setSearchQuery] = useState(''); const [modalOpen, setModalOpen] = useState(false); const [selectedShow, setSelectedShow] = useState(null); + const [detailedShow, setDetailedShow] = useState(null); + const [currentEpisode, setCurrentEpisode] = useState(null); + const [isPlaying, setIsPlaying] = useState(false); + const [loadingShow, setLoadingShow] = useState(false); useEffect(() => { if (!previewData) return; @@ -102,39 +107,92 @@ function App() { setSearchQuery(query); }; - const handlePlayEpisode = (episode) => { - // Implement your logic to play the episode - console.log('Playing episode:', episode); + const handleShowClick = async (show) => { + setSelectedShow(show); + setModalOpen(true); + setLoadingShow(true); + try { + const response = await fetch(`${SHOW_URL}${show.id}`); + const data = await response.json(); + setDetailedShow(data); + } catch (error) { + console.error('Error fetching show details:', error); + } finally { + setLoadingShow(false); + } }; - - // New handler for opening the modal - const handleShowClick = (show) => { - setSelectedShow(show); - setModalOpen(true); - }; + const handleCloseModal = () => { + setModalOpen(false); + setDetailedShow(null); + }; - // New handler for closing the modal - const handleCloseModal = () => { - setModalOpen(false); - }; + const handlePlayEpisode = (episode) => { + setCurrentEpisode(episode); + setIsPlaying(true); + }; + + const getAllEpisodes = (show) => { + if (!show || !Array.isArray(show.seasons)) { + console.error('Invalid show structure:', show); + return []; + } + return show.seasons.reduce((allEpisodes, season) => { + if (Array.isArray(season.episodes)) { + return allEpisodes.concat(season.episodes); + } + console.error('Invalid season structure:', season); + return allEpisodes; + }, []); + }; + + const handleSkipNext = () => { + if (detailedShow && currentEpisode) { + const allEpisodes = getAllEpisodes(detailedShow); + const currentIndex = allEpisodes.findIndex(e => e.file === currentEpisode.file); + const nextEpisode = allEpisodes[currentIndex + 1]; + if (nextEpisode) { + setCurrentEpisode(nextEpisode); + setIsPlaying(true); + } + } + }; + + const handleSkipPrevious = () => { + if (detailedShow && currentEpisode) { + const allEpisodes = getAllEpisodes(detailedShow); + const currentIndex = allEpisodes.findIndex(e => e.file === currentEpisode.file); + const previousEpisode = allEpisodes[currentIndex - 1]; + if (previousEpisode) { + setCurrentEpisode(previousEpisode); + setIsPlaying(true); + } + } + }; + if (loading || loadingGenres) return ( + + + + ) + if (error) return ; - if (loading || loadingGenres) return ( - - - - ) - if (error) return ; - return ( + return ( <> {genres && } {filteredData && } - + setIsPlaying(playState)} + onSkipNext={handleSkipNext} + onSkipPrevious={handleSkipPrevious} + /> {selectedShow && ( { +const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious }) => { const theme = useTheme(); - - const [isPlaying, setIsPlaying] = useState(false); - const [volume, setVolume] = useState(50); const audioRef = useRef(null); + const [volume, setVolume] = useState(100); + const [currentTime, setCurrentTime] = useState(0); + const [duration, setDuration] = useState(0); - const handlePlayPause = () => { + useEffect(() => { + if (episode && audioRef.current) { + audioRef.current.src = episode.file; + audioRef.current.load(); + if (isPlaying) { + audioRef.current.play(); + } + } + }, [episode]); + + useEffect(() => { + const audio = audioRef.current; if (isPlaying) { - audioRef.current.pause(); + audio.play(); } else { - audioRef.current.play(); + audio.pause(); } - setIsPlaying(!isPlaying); + }, [isPlaying]); + + useEffect(() => { + const audio = audioRef.current; + const updateTime = () => setCurrentTime(audio.currentTime); + const updateDuration = () => setDuration(audio.duration); + + audio.addEventListener('timeupdate', updateTime); + audio.addEventListener('loadedmetadata', updateDuration); + audio.addEventListener('durationchange', updateDuration); + + return () => { + audio.removeEventListener('timeupdate', updateTime); + audio.removeEventListener('loadedmetadata', updateDuration); + audio.removeEventListener('durationchange', updateDuration); + }; + }, []); + + const handlePlayPause = () => { + onPlayPause(!isPlaying); }; const handleVolumeChange = (event, newValue) => { @@ -29,12 +60,28 @@ const AudioPlayer = () => { audioRef.current.volume = newValue / 100; }; + const handleProgressChange = (event, newValue) => { + const newTime = (newValue / 100) * duration; + setCurrentTime(newTime); + audioRef.current.currentTime = newTime; + }; + const handleSkipNext = () => { - // Handle skipping to the next track + onSkipNext(); }; const handleSkipPrevious = () => { - // Handle skipping to the previous track + if (currentTime > 3) { + audioRef.current.currentTime = 0; + } else { + onSkipPrevious(); + } + }; + + const formatTime = (time) => { + const minutes = Math.floor(time / 60); + const seconds = Math.floor(time % 60); + return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; }; return ( @@ -46,45 +93,117 @@ const AudioPlayer = () => { position: 'fixed', bottom: 0, display: 'flex', + flexDirection: 'column', alignItems: 'center', - justifyContent: 'space-between', padding: '0.5rem', }} > - {/* Spacer */} - - - - - - - {isPlaying ? : } - - - - - - - - - {volume === 0 ? : } - + + + {formatTime(currentTime)} + + + {formatTime(duration)} + + + + + {/* Spacer */} + + + + + + + {isPlaying ? : } + + + + + + + + handleVolumeChange(null, volume === 0 ? 100 : 0)} + sx={{ + padding: '8px', + width: '48px', + height: '48px', + '& .MuiIconButton-root': { padding: 0 } + }} + > + {volume === 0 ? : } + + + - ); }; +AudioPlayer.propTypes = { + episode: PropTypes.shape({ + title: PropTypes.string.isRequired, + description: PropTypes.string, + file: PropTypes.string.isRequired, + episode: PropTypes.number.isRequired, + }), + isPlaying: PropTypes.bool.isRequired, + onPlayPause: PropTypes.func.isRequired, + onSkipNext: PropTypes.func.isRequired, + onSkipPrevious: PropTypes.func.isRequired, +}; + export default AudioPlayer; \ No newline at end of file diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 12ec3dee0..fb95aa437 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -3,30 +3,17 @@ import { Modal, Box, Typography, Button, CircularProgress, Select, MenuItem, Lis import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import PropTypes from 'prop-types'; -const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode }) => { - const [detailedShow, setDetailedShow] = useState(null); - const [loading, setLoading] = useState(true); +const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading }) => { const [selectedSeason, setSelectedSeason] = useState(null); useEffect(() => { - if (open && show) { - setLoading(true); - fetch(`https://podcast-api.netlify.app/id/${show.id}`) - .then(response => response.json()) - .then(data => { - setDetailedShow(data); - setSelectedSeason(data.seasons[0]); - setLoading(false); - }) - .catch(error => { - console.error('Error fetching show details:', error); - setLoading(false); - }); + if (show && show.seasons && Array.isArray(show.seasons)) { + setSelectedSeason(show.seasons[0]); } - }, [open, show]); + }, [show]); const handleSeasonChange = (event) => { - const season = detailedShow.seasons.find(s => s.season === event.target.value); + const season = show.seasons.find(s => s.season === event.target.value); setSelectedSeason(season); }; @@ -35,11 +22,12 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode }) => }; const getGenreTitles = () => { - return show.genres.map(genreId => { - const genre = genres.find(g => g.id === genreId); - return genre ? genre.title : 'Unknown Genre'; + return show.genres.filter((genre) => { + return genre !== "All" && genre !== "Featured"; }); - }; + }; + + return ( - ) : detailedShow ? ( + ) : show ? ( <> - {detailedShow.title} - {detailedShow.title} + {show.title} - {detailedShow.description} + {show.description} - {genres && getGenreTitles() - .map((genre, index) => ( - + {getGenreTitles().map((genre, index) => ( + ))} - Updated: {formatDate(detailedShow.updated)} + Updated: {formatDate(show.updated)} justifyContent: 'start', alignItems: 'center', }}> - - - Episodes: {selectedSeason.episodes.length} - + {Array.isArray(show.seasons) && ( + + )} + + {Array.isArray(selectedSeason?.episodes) ? ( + + Episodes: {selectedSeason.episodes.length} + + ) : ( + + No episodes available + + )} + @@ -155,7 +152,8 @@ PodcastDetailsModal.propTypes = { id: PropTypes.number.isRequired, title: PropTypes.string.isRequired, description: PropTypes.string - })).isRequired, + })).isRequired, + loading: PropTypes.bool.isRequired, }; export default PodcastDetailsModal; \ No newline at end of file From d333c3fc994f8e81090822f982e18dd2ce73a1ff Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 01:56:02 +0200 Subject: [PATCH 030/323] Feat: Skip forwards and backwards through seasons and episodes of a show --- src/App.jsx | 198 ++++++++++++++++--------- src/components/AudioPlayer.jsx | 35 ++++- src/components/PodcastDetailsModal.jsx | 20 +-- 3 files changed, 169 insertions(+), 84 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 482ee3d75..e603c2f7f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -23,11 +23,12 @@ function App() { const [filteredData, setFilteredData] = useState(previewData); const [searchQuery, setSearchQuery] = useState(''); const [modalOpen, setModalOpen] = useState(false); - const [selectedShow, setSelectedShow] = useState(null); + // const [selectedShow, setSelectedShow] = useState(null); const [detailedShow, setDetailedShow] = useState(null); const [currentEpisode, setCurrentEpisode] = useState(null); const [isPlaying, setIsPlaying] = useState(false); const [loadingShow, setLoadingShow] = useState(false); + const [playingShow, setPlayingShow] = useState(null); useEffect(() => { if (!previewData) return; @@ -108,67 +109,124 @@ function App() { }; const handleShowClick = async (show) => { - setSelectedShow(show); - setModalOpen(true); - setLoadingShow(true); - try { - const response = await fetch(`${SHOW_URL}${show.id}`); - const data = await response.json(); - setDetailedShow(data); - } catch (error) { - console.error('Error fetching show details:', error); - } finally { - setLoadingShow(false); - } - }; + if (playingShow && playingShow.id === show.id) { + setModalOpen(true); // Open modal immediately if the same show is clicked + return; // Don't fetch details again if it's the same show + } + + setModalOpen(true); // Open modal immediately for user feedback + setLoadingShow(true); // Indicate that the modal is still loading full details + try { + const response = await fetch(`${SHOW_URL}${show.id}`); + const data = await response.json(); + setDetailedShow(data); + setPlayingShow(data); // Track the newly loaded show as the playing show + } catch (error) { + console.error('Error fetching show details:', error); + } finally { + setLoadingShow(false); // Stop the loading spinner once fetching completes + } + }; + const handleCloseModal = () => { setModalOpen(false); - setDetailedShow(null); + // setDetailedShow(null); }; const handlePlayEpisode = (episode) => { - setCurrentEpisode(episode); - setIsPlaying(true); - }; + // Ensure the episode object has a season property + const episodeWithSeason = { + ...episode, + season: episode.season || 1 // Default to season 1 if not specified + }; + setCurrentEpisode(episodeWithSeason); + setPlayingShow(detailedShow); + setIsPlaying(true); +}; - const getAllEpisodes = (show) => { - if (!show || !Array.isArray(show.seasons)) { - console.error('Invalid show structure:', show); - return []; - } - return show.seasons.reduce((allEpisodes, season) => { - if (Array.isArray(season.episodes)) { - return allEpisodes.concat(season.episodes); - } - console.error('Invalid season structure:', season); - return allEpisodes; - }, []); - }; +const getAllEpisodes = (show) => { + if (!show || !Array.isArray(show.seasons)) { + console.error('Invalid show structure:', show); + return []; + } + return show.seasons.flatMap((season, seasonIndex) => { + if (Array.isArray(season.episodes)) { + return season.episodes.map(episode => ({ + ...episode, + season: seasonIndex + 1 // Add season number to each episode + })); + } + console.error('Invalid season structure:', season); + return []; + }); +}; - const handleSkipNext = () => { - if (detailedShow && currentEpisode) { - const allEpisodes = getAllEpisodes(detailedShow); - const currentIndex = allEpisodes.findIndex(e => e.file === currentEpisode.file); - const nextEpisode = allEpisodes[currentIndex + 1]; - if (nextEpisode) { - setCurrentEpisode(nextEpisode); - setIsPlaying(true); - } - } - }; +const findEpisodeIndex = (allEpisodes, currentEpisode) => { + return allEpisodes.findIndex(e => + e.episode === currentEpisode.episode && + (e.season === currentEpisode.season || e.season === undefined) + ); +}; - const handleSkipPrevious = () => { - if (detailedShow && currentEpisode) { - const allEpisodes = getAllEpisodes(detailedShow); - const currentIndex = allEpisodes.findIndex(e => e.file === currentEpisode.file); - const previousEpisode = allEpisodes[currentIndex - 1]; - if (previousEpisode) { - setCurrentEpisode(previousEpisode); - setIsPlaying(true); - } - } - }; +const handleSkipNext = () => { + console.log("HANDLE SKIP NEXT ENGAGED"); + console.log("CURRENT EPISODE:", currentEpisode); + + if (detailedShow && currentEpisode) { + const allEpisodes = getAllEpisodes(detailedShow); + let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); + + console.log('Current Index:', currentIndex); + console.log('All Episodes:', allEpisodes); + + // If currentIndex is still -1, assume we're at the first episode + if (currentIndex === -1) { + currentIndex = 0; + } + + if (currentIndex < allEpisodes.length - 1) { + const nextEpisode = allEpisodes[currentIndex + 1]; + setCurrentEpisode(nextEpisode); + setIsPlaying(true); + console.log("Loading next episode:", nextEpisode); + } else { + console.log("Reached the end of all episodes."); + } + } else { + console.log("No detailed show or current episode found."); + } +}; + +const handleSkipPrevious = () => { + console.log("HANDLE SKIP PREVIOUS ENGAGED"); + console.log("CURRENT EPISODE:", currentEpisode); + + if (detailedShow && currentEpisode) { + const allEpisodes = getAllEpisodes(detailedShow); + let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); + + console.log('Current Index:', currentIndex); + console.log('All Episodes:', allEpisodes); + + // If currentIndex is still -1, assume we're at the first episode + if (currentIndex === -1) { + currentIndex = 0; + } + + if (currentIndex > 0) { + const previousEpisode = allEpisodes[currentIndex - 1]; + setCurrentEpisode(previousEpisode); + setIsPlaying(true); + console.log("Loading previous episode:", previousEpisode); + } else { + console.log("Already at the first episode."); + } + } else { + console.log("No detailed show or current episode found."); + } +}; + if (loading || loadingGenres) return ( @@ -183,22 +241,24 @@ function App() { {genres && } {filteredData && } setIsPlaying(playState)} - onSkipNext={handleSkipNext} - onSkipPrevious={handleSkipPrevious} - /> - {selectedShow && ( - - )} + episode={currentEpisode} + isPlaying={isPlaying} + onPlayPause={(playState) => setIsPlaying(playState)} + onSkipNext={handleSkipNext} + onSkipPrevious={handleSkipPrevious} + playingShow={playingShow} // Pass the playing show to AudioPlayer + /> + {detailedShow && modalOpen && ( + + )} + ); } diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 19dedc90a..1641ff155 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -9,7 +9,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import VolumeUpIcon from '@mui/icons-material/VolumeUp'; import VolumeOffIcon from '@mui/icons-material/VolumeOff'; -const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious }) => { +const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow }) => { const theme = useTheme(); const audioRef = useRef(null); const [volume, setVolume] = useState(100); @@ -18,10 +18,11 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio useEffect(() => { if (episode && audioRef.current) { + console.log('Loading episode:', episode); audioRef.current.src = episode.file; audioRef.current.load(); if (isPlaying) { - audioRef.current.play(); + audioRef.current.play().catch((err) => console.error('Error playing audio:', err)); } } }, [episode]); @@ -52,6 +53,7 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio }, []); const handlePlayPause = () => { + console.log(episode) onPlayPause(!isPlaying); }; @@ -67,10 +69,12 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio }; const handleSkipNext = () => { + console.log("In handle skip next") onSkipNext(); }; const handleSkipPrevious = () => { + console.log("In handle skip previous") if (currentTime > 3) { audioRef.current.currentTime = 0; } else { @@ -193,17 +197,36 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio ); }; +// Define prop types AudioPlayer.propTypes = { episode: PropTypes.shape({ - title: PropTypes.string.isRequired, - description: PropTypes.string, - file: PropTypes.string.isRequired, - episode: PropTypes.number.isRequired, + title: PropTypes.string.isRequired, + description: PropTypes.string, + episode: PropTypes.number.isRequired, + file: PropTypes.string.isRequired, }), isPlaying: PropTypes.bool.isRequired, onPlayPause: PropTypes.func.isRequired, onSkipNext: PropTypes.func.isRequired, onSkipPrevious: PropTypes.func.isRequired, + playingShow: PropTypes.shape({ + id: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + description: PropTypes.string, + genres: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.number), + PropTypes.arrayOf(PropTypes.string) + ]), + seasons: PropTypes.arrayOf(PropTypes.shape({ + episodes: PropTypes.arrayOf(PropTypes.shape({ + title: PropTypes.string.isRequired, + description: PropTypes.string, + episode: PropTypes.number.isRequired, + file: PropTypes.string.isRequired, + })) + })) + }), }; + export default AudioPlayer; \ No newline at end of file diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index fb95aa437..4c006e097 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -3,7 +3,7 @@ import { Modal, Box, Typography, Button, CircularProgress, Select, MenuItem, Lis import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import PropTypes from 'prop-types'; -const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading }) => { +const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loading }) => { const [selectedSeason, setSelectedSeason] = useState(null); useEffect(() => { @@ -21,11 +21,9 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading }) => return new Date(dateString).toLocaleDateString(); }; - const getGenreTitles = () => { - return show.genres.filter((genre) => { - return genre !== "All" && genre !== "Featured"; - }); - }; + const showGenres = genres.filter(genre => + genre.shows.includes(show.id) + ); @@ -75,9 +73,13 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading }) => {show.description} - {getGenreTitles().map((genre, index) => ( - - ))} + {showGenres.length > 0 ? ( + showGenres.map((genre) => ( + + )) + ) : ( + No genres available + )} From 5748b401da7d404ebb45dd0dd6794b31f0428bd8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 02:11:40 +0200 Subject: [PATCH 031/323] Feat: While episode playing check if user is sure they want to close --- src/App.jsx | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/src/App.jsx b/src/App.jsx index e603c2f7f..82c7e3745 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -30,6 +30,22 @@ function App() { const [loadingShow, setLoadingShow] = useState(false); const [playingShow, setPlayingShow] = useState(null); + useEffect(() => { + const handleBeforeUnload = (event) => { + if (isPlaying) { + event.preventDefault(); + event.returnValue = ''; // This is required for some browsers + } + }; + + window.addEventListener('beforeunload', handleBeforeUnload); + + return () => { + window.removeEventListener('beforeunload', handleBeforeUnload); + }; + }, [isPlaying]); + + useEffect(() => { if (!previewData) return; From 65b9f0fc5d64d58cbf1e3adc3053debc4df128ff Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 07:20:33 +0200 Subject: [PATCH 032/323] Feat: Favourites Page implemented --- src/App.jsx | 328 +++++++++++++++---------- src/components/PodcastDetailsModal.jsx | 77 ++++-- src/components/SearchAppBar.jsx | 126 +++++----- src/pages/FavoritesPage.jsx | 104 ++++++++ src/theme.js | 12 + src/utils/sortUtils.js | 43 ++-- 6 files changed, 460 insertions(+), 230 deletions(-) create mode 100644 src/pages/FavoritesPage.jsx diff --git a/src/App.jsx b/src/App.jsx index 82c7e3745..8e02e28ac 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,10 +3,11 @@ import LoadingSpinner from "./pages/LoadingSpinner"; import ErrorPage from './pages/ErrorPage'; import SearchAppBar from './components/SearchAppBar'; import Content from "./pages/Content"; -import { useState, useEffect } from 'react'; +import { useState, useEffect, useCallback } from 'react'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "./utils/sortUtils"; import AudioPlayer from './components/AudioPlayer'; import PodcastDetailsModal from './components/PodcastDetailsModal'; +import FavoritesPage from './pages/FavoritesPage'; import { Box } from '@mui/material' const PREVIEW_URL = "https://podcast-api.netlify.app"; @@ -23,12 +24,61 @@ function App() { const [filteredData, setFilteredData] = useState(previewData); const [searchQuery, setSearchQuery] = useState(''); const [modalOpen, setModalOpen] = useState(false); - // const [selectedShow, setSelectedShow] = useState(null); const [detailedShow, setDetailedShow] = useState(null); const [currentEpisode, setCurrentEpisode] = useState(null); const [isPlaying, setIsPlaying] = useState(false); const [loadingShow, setLoadingShow] = useState(false); const [playingShow, setPlayingShow] = useState(null); + const [favoriteEpisodes, setFavoriteEpisodes] = useState(() => { + const storedFavorites = localStorage.getItem('favoriteEpisodes'); + return storedFavorites ? JSON.parse(storedFavorites) : []; + }); + const [showFavorites, setShowFavorites] = useState(false); + const [searchTerm, setSearchTerm] = useState(''); + const [filterOption, setFilterOption] = useState(null); + + const handleBackToShows = () => { + setShowFavorites(false); + }; + + const handleFavoritesClick = () => { + setShowFavorites(true); // Set to true when the favorites button is clicked + }; + + const toggleFavorite = useCallback((episode) => { + setFavoriteEpisodes(prev => { + const isAlreadyFavorite = prev.some(fav => + fav.showId === episode.showId && + fav.episodeTitle === episode.episodeTitle && + fav.seasonTitle === episode.seasonTitle + ); + + let updatedFavorites; + if (isAlreadyFavorite) { + updatedFavorites = prev.filter(fav => + !(fav.showId === episode.showId && + fav.episodeTitle === episode.episodeTitle && + fav.seasonTitle === episode.seasonTitle) + ); + } else { + const favoriteWithDate = { + ...episode, + savedAt: new Date().toISOString(), + }; + updatedFavorites = [...prev, favoriteWithDate]; + } + localStorage.setItem('favoriteEpisodes', JSON.stringify(updatedFavorites)); + return updatedFavorites; + }); + }, []); + + + useEffect(() => { + const storedFavorites = localStorage.getItem('favoriteEpisodes'); + if (storedFavorites) { + setFavoriteEpisodes(JSON.parse(storedFavorites)); + } + }, []); useEffect(() => { const handleBeforeUnload = (event) => { @@ -44,7 +94,6 @@ function App() { window.removeEventListener('beforeunload', handleBeforeUnload); }; }, [isPlaying]); - useEffect(() => { if (!previewData) return; @@ -68,7 +117,6 @@ function App() { fetchGenres(); }, [previewData]); - // Sorting effect useEffect(() => { if (previewData) { let sorted; @@ -111,7 +159,6 @@ function App() { setFilteredData(filteredData); }, [selectedGenre, sortedData, searchQuery]); - const handleSortChange = (option) => { setSortOption(option); }; @@ -126,157 +173,174 @@ function App() { const handleShowClick = async (show) => { if (playingShow && playingShow.id === show.id) { - setModalOpen(true); // Open modal immediately if the same show is clicked - return; // Don't fetch details again if it's the same show + setModalOpen(true); + return; } - setModalOpen(true); // Open modal immediately for user feedback - setLoadingShow(true); // Indicate that the modal is still loading full details + setModalOpen(true); + setLoadingShow(true); try { const response = await fetch(`${SHOW_URL}${show.id}`); const data = await response.json(); setDetailedShow(data); - setPlayingShow(data); // Track the newly loaded show as the playing show + setPlayingShow(data); } catch (error) { console.error('Error fetching show details:', error); } finally { - setLoadingShow(false); // Stop the loading spinner once fetching completes + setLoadingShow(false); } }; - - const handleCloseModal = () => { - setModalOpen(false); - // setDetailedShow(null); - }; - - const handlePlayEpisode = (episode) => { - // Ensure the episode object has a season property - const episodeWithSeason = { - ...episode, - season: episode.season || 1 // Default to season 1 if not specified + const handleCloseModal = () => { + setModalOpen(false); }; - setCurrentEpisode(episodeWithSeason); - setPlayingShow(detailedShow); - setIsPlaying(true); -}; -const getAllEpisodes = (show) => { - if (!show || !Array.isArray(show.seasons)) { - console.error('Invalid show structure:', show); - return []; - } - return show.seasons.flatMap((season, seasonIndex) => { - if (Array.isArray(season.episodes)) { - return season.episodes.map(episode => ({ - ...episode, - season: seasonIndex + 1 // Add season number to each episode - })); + const getAllEpisodes = (show) => { + if (!show || !Array.isArray(show.seasons)) { + console.error('Invalid show structure:', show); + return []; } - console.error('Invalid season structure:', season); - return []; - }); -}; - -const findEpisodeIndex = (allEpisodes, currentEpisode) => { - return allEpisodes.findIndex(e => - e.episode === currentEpisode.episode && - (e.season === currentEpisode.season || e.season === undefined) - ); -}; - -const handleSkipNext = () => { - console.log("HANDLE SKIP NEXT ENGAGED"); - console.log("CURRENT EPISODE:", currentEpisode); - - if (detailedShow && currentEpisode) { - const allEpisodes = getAllEpisodes(detailedShow); - let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - - console.log('Current Index:', currentIndex); - console.log('All Episodes:', allEpisodes); - - // If currentIndex is still -1, assume we're at the first episode - if (currentIndex === -1) { - currentIndex = 0; - } - - if (currentIndex < allEpisodes.length - 1) { - const nextEpisode = allEpisodes[currentIndex + 1]; - setCurrentEpisode(nextEpisode); - setIsPlaying(true); - console.log("Loading next episode:", nextEpisode); - } else { - console.log("Reached the end of all episodes."); - } - } else { - console.log("No detailed show or current episode found."); - } -}; + return show.seasons.flatMap((season, seasonIndex) => { + if (Array.isArray(season.episodes)) { + return season.episodes.map(episode => ({ + ...episode, + season: seasonIndex + 1 // Add season number to each episode + })); + } + console.error('Invalid season structure:', season); + return []; + }); + }; -const handleSkipPrevious = () => { - console.log("HANDLE SKIP PREVIOUS ENGAGED"); - console.log("CURRENT EPISODE:", currentEpisode); - - if (detailedShow && currentEpisode) { - const allEpisodes = getAllEpisodes(detailedShow); - let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - - console.log('Current Index:', currentIndex); - console.log('All Episodes:', allEpisodes); + const findEpisodeIndex = (allEpisodes, currentEpisode) => { + return allEpisodes.findIndex(e => + e.episode === currentEpisode.episode && + (e.season === currentEpisode.season || e.season === undefined) + ); + }; - // If currentIndex is still -1, assume we're at the first episode - if (currentIndex === -1) { - currentIndex = 0; + const handleSkipNext = () => { + console.log("HANDLE SKIP NEXT ENGAGED"); + console.log("CURRENT EPISODE:", currentEpisode); + + if (detailedShow && currentEpisode) { + const allEpisodes = getAllEpisodes(detailedShow); + let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); + + console.log('Current Index:', currentIndex); + console.log('All Episodes:', allEpisodes); + + // If currentIndex is still -1, assume we're at the first episode + if (currentIndex === -1) { + currentIndex = 0; + } + + if (currentIndex < allEpisodes.length - 1) { + const nextEpisode = allEpisodes[currentIndex + 1]; + setCurrentEpisode(nextEpisode); + setIsPlaying(true); + console.log("Loading next episode:", nextEpisode); + } else { + console.log("Reached the end of all episodes."); + } + } else { + console.log("No detailed show or current episode found."); } + }; - if (currentIndex > 0) { - const previousEpisode = allEpisodes[currentIndex - 1]; - setCurrentEpisode(previousEpisode); - setIsPlaying(true); - console.log("Loading previous episode:", previousEpisode); + const handleSkipPrevious = () => { + console.log("HANDLE SKIP PREVIOUS ENGAGED"); + console.log("CURRENT EPISODE:", currentEpisode); + + if (detailedShow && currentEpisode) { + const allEpisodes = getAllEpisodes(detailedShow); + let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); + + console.log('Current Index:', currentIndex); + console.log('All Episodes:', allEpisodes); + + // If currentIndex is still -1, assume we're at the first episode + if (currentIndex === -1) { + currentIndex = 0; + } + + if (currentIndex > 0) { + const previousEpisode = allEpisodes[currentIndex - 1]; + setCurrentEpisode(previousEpisode); + setIsPlaying(true); + console.log("Loading previous episode:", previousEpisode); + } else { + console.log("Already at the first episode."); + } } else { - console.log("Already at the first episode."); + console.log("No detailed show or current episode found."); } - } else { - console.log("No detailed show or current episode found."); - } -}; - + }; - if (loading || loadingGenres) return ( - - - - ) - if (error) return ; + const handlePlayEpisode = (episode) => { + const episodeWithSeason = { + ...episode, + season: episode.season || 1 + }; + setCurrentEpisode(episodeWithSeason); + setPlayingShow(detailedShow); + setIsPlaying(true); + }; + if (loading || loadingGenres) return ( + + + + ); + if (error) return ; - return ( - <> - {genres && } - {filteredData && } - setIsPlaying(playState)} - onSkipNext={handleSkipNext} - onSkipPrevious={handleSkipPrevious} - playingShow={playingShow} // Pass the playing show to AudioPlayer - /> - {detailedShow && modalOpen && ( - + {genres && ( + + )} + {!showFavorites && filteredData && ( + + )} + {showFavorites && ( + + )} + setIsPlaying(playState)} + onSkipNext={handleSkipNext} + onSkipPrevious={handleSkipPrevious} + playingShow={playingShow} /> - )} - - - ); + {detailedShow && modalOpen && ( + + )} + + ); } -export default App; \ No newline at end of file +export default App; diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 4c006e097..f07f40dcf 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -1,9 +1,25 @@ import { useState, useEffect } from 'react'; -import { Modal, Box, Typography, Button, CircularProgress, Select, MenuItem, List, ListItem, ListItemText, ListItemSecondaryAction, IconButton, Chip } from '@mui/material'; +import { + Modal, + Box, + Typography, + Button, + CircularProgress, + Select, + MenuItem, + List, + ListItem, + ListItemText, + ListItemSecondaryAction, + IconButton, + Chip, +} from '@mui/material'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; +import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; +import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types'; -const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loading }) => { +const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes }) => { const [selectedSeason, setSelectedSeason] = useState(null); useEffect(() => { @@ -12,21 +28,37 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi } }, [show]); + const handleToggleFavorite = (episode) => { + toggleFavorite({ + showId: show.id, + showTitle: show.title, + seasonTitle: selectedSeason.title, + episodeTitle: episode.title, + episodeNumber: episode.episode, + }); + }; + + const isFavorite = (episode) => { + return favoriteEpisodes.some(fav => + fav.showId === show.id && + fav.episodeTitle === episode.title && + fav.seasonTitle === selectedSeason.title + ); + }; + const handleSeasonChange = (event) => { const season = show.seasons.find(s => s.season === event.target.value); setSelectedSeason(season); }; const formatDate = (dateString) => { - return new Date(dateString).toLocaleDateString(); + return new Date(dateString).toLocaleString(); // Changed to display date and time }; - const showGenres = genres.filter(genre => + const showGenres = genres.filter(genre => genre.shows.includes(show.id) ); - - return ( {show.title} @@ -73,18 +105,18 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi {show.description} - {showGenres.length > 0 ? ( - showGenres.map((genre) => ( - - )) - ) : ( - No genres available - )} + {showGenres.length > 0 ? ( + showGenres.map((genre) => ( + + )) + ) : ( + No genres available + )} - - Updated: {formatDate(show.updated)} - + + Updated: {formatDate(show.updated)} + {selectedSeason && selectedSeason.episodes.map((episode) => ( + handleToggleFavorite(episode)}> + {isFavorite(episode) ? : } + ({ @@ -27,12 +28,12 @@ const SearchIconWrapper = styled('div')(({ theme }) => ({ display: 'flex', alignItems: 'center', justifyContent: 'center', - color: theme.palette.text.primary, // Ensure icon in search field is visible across modes + color: theme.palette.text.primary, })); const StyledInputBase = styled(InputBase)(({ theme }) => ({ - color: theme.palette.text.primary, // Matches text colour to theme - backgroundColor: alpha(theme.palette.common.black, 0.15), // Consistent darker styling across modes for better visibility + color: theme.palette.text.primary, + backgroundColor: alpha(theme.palette.common.black, 0.15), borderRadius: theme.shape.borderRadius, '& .MuiInputBase-input': { padding: theme.spacing(1, 1, 1, 0), @@ -47,11 +48,11 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ }, })); -export default function SearchAppBar({ onSortChange, onFilterChange, onSearchChange, genres }) { +export default function SearchAppBar({ onSortChange, onFilterChange, onSearchChange, onFavoritesClick, genres }) { const theme = useTheme(); - const [sortAnchorEl, setSortAnchorEl] = useState(null); const [filterAnchorEl, setFilterAnchorEl] = useState(null); + const handleSortClick = (event) => { setSortAnchorEl(event.currentTarget); }; @@ -81,69 +82,65 @@ export default function SearchAppBar({ onSortChange, onFilterChange, onSearchCha return ( - - - - - - Poddy - - - - - - onSearchChange(e.target.value)} - /> - - - - - - handleSortSelect('A-Z')}>Sort A-Z - handleSortSelect('Z-A')}>Sort Z-A - handleSortSelect('newest')}>Newest First - handleSortSelect('oldest')}>Oldest First - - - - - - handleFilterSelect(null)}>Show All - {genres.map((genre) => ( - handleFilterSelect(genre)}> - {genre.title} - - ))} - - - + + + + + + Poddy + + + + + + onSearchChange(e.target.value)} + /> + + + + + + handleSortSelect('A-Z')}>Title A-Z + handleSortSelect('Z-A')}>Title Z-A + handleSortSelect('newest')}>Newest Added + handleSortSelect('oldest')}>Oldest Added + + + + + + {genres.map((genre) => ( + handleFilterSelect(genre)}> + {genre.title} + + ))} + + + + + + ); } @@ -151,5 +148,6 @@ SearchAppBar.propTypes = { onSortChange: PropTypes.func.isRequired, onFilterChange: PropTypes.func.isRequired, onSearchChange: PropTypes.func.isRequired, + onFavoritesClick: PropTypes.func.isRequired, genres: PropTypes.array.isRequired, -}; \ No newline at end of file +}; diff --git a/src/pages/FavoritesPage.jsx b/src/pages/FavoritesPage.jsx new file mode 100644 index 000000000..9a9faee7e --- /dev/null +++ b/src/pages/FavoritesPage.jsx @@ -0,0 +1,104 @@ +import React, { useState, useEffect } from 'react'; +import { Box, Typography, Button, IconButton, List, ListItem, ListItemText, ListItemSecondaryAction, Divider } from '@mui/material'; +import DeleteIcon from '@mui/icons-material/Delete'; +import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "../utils/sortUtils"; +import PropTypes from 'prop-types'; + +const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackToShows, searchTerm, sortOption, filterOption }) => { + const [sortedFavorites, setSortedFavorites] = useState([]); + + useEffect(() => { + let filtered = favoriteEpisodes.filter((fav) => + fav.showTitle.toLowerCase().includes(searchTerm.toLowerCase()) || + fav.episodeTitle.toLowerCase().includes(searchTerm.toLowerCase()) + ); + + let sorted; + switch (sortOption) { + case 'A-Z': + sorted = sortByTitleAscending(filtered, 'showTitle'); + break; + case 'Z-A': + sorted = sortByTitleDescending(filtered, 'showTitle'); + break; + case 'newest': + sorted = sortByDateDescending(filtered, 'savedAt'); + break; + case 'oldest': + sorted = sortByDateAscending(filtered, 'savedAt'); + break; + default: + sorted = filtered; + } + + setSortedFavorites(sorted); + }, [favoriteEpisodes, searchTerm, sortOption]); + + const handleRemoveFavorite = (episode) => { + toggleFavorite(episode); + }; + + return ( + + + Your Favorite Episodes + + + + {sortedFavorites.map((fav, index) => ( + + + + + + + handleRemoveFavorite(fav)}> + + + + + + {index < sortedFavorites.length - 1 && } + + ))} + + + ); +}; + +FavoritesPage.propTypes = { + favoriteEpisodes: PropTypes.arrayOf( + PropTypes.shape({ + showId: PropTypes.string.isRequired, + showTitle: PropTypes.string.isRequired, + seasonTitle: PropTypes.string.isRequired, + episodeTitle: PropTypes.string.isRequired, + episodeNumber: PropTypes.number.isRequired, + savedAt: PropTypes.string.isRequired, + }) + ).isRequired, + toggleFavorite: PropTypes.func.isRequired, + onShowClick: PropTypes.func.isRequired, + onBackToShows: PropTypes.func.isRequired, + searchTerm: PropTypes.string.isRequired, + sortOption: PropTypes.oneOf(['A-Z', 'Z-A', 'newest', 'oldest']).isRequired, + filterOption: PropTypes.shape({ + id: PropTypes.number, + title: PropTypes.string, + }), + }; + + +export default FavoritesPage; \ No newline at end of file diff --git a/src/theme.js b/src/theme.js index 87335ba32..3cdbe794b 100644 --- a/src/theme.js +++ b/src/theme.js @@ -36,6 +36,12 @@ export const lightTheme = createTheme({ root: { color: '#121212', }, + outlined: { + border: '2px solid #121212', // Customize border color + '&:hover': { + backgroundColor: 'rgba(18, 18, 18, 0.04)', // Optional hover effect + }, + }, }, }, }, @@ -75,6 +81,12 @@ export const darkTheme = createTheme({ root: { color: '#fafafa', }, + outlined: { + border: '2px solid #fafafa', // Customize border color + '&:hover': { + backgroundColor: 'rgba(18, 18, 18, 0.04)', // Optional hover effect + }, + }, }, }, }, diff --git a/src/utils/sortUtils.js b/src/utils/sortUtils.js index 1fe48f1fd..53089895c 100644 --- a/src/utils/sortUtils.js +++ b/src/utils/sortUtils.js @@ -1,18 +1,33 @@ -// Functions to handle sorting for shows +// Functions to handle sorting for shows and favorite episodes -export const sortByTitleAscending = (data) => { - return [...data].sort((a, b) => a.title.localeCompare(b.title)); - }; - -export const sortByTitleDescending = (data) => { - return [...data].sort((a, b) => b.title.localeCompare(a.title)); - }; +export const sortByTitleAscending = (data, titleKey = 'title') => { + return [...data].sort((a, b) => { + const titleA = a[titleKey] || a.showTitle || ''; + const titleB = b[titleKey] || b.showTitle || ''; + return titleA.localeCompare(titleB); + }); +}; -export const sortByDateAscending = (data) => { - return [...data].sort((a, b) => new Date(a.updated) - new Date(b.updated)); - }; +export const sortByTitleDescending = (data, titleKey = 'title') => { + return [...data].sort((a, b) => { + const titleA = a[titleKey] || a.showTitle || ''; + const titleB = b[titleKey] || b.showTitle || ''; + return titleB.localeCompare(titleA); + }); +}; -export const sortByDateDescending = (data) => { - return [...data].sort((a, b) => new Date(b.updated) - new Date(a.updated)); - }; +export const sortByDateAscending = (data, dateKey = 'updated') => { + return [...data].sort((a, b) => { + const dateA = new Date(a[dateKey] || a.savedAt || 0); + const dateB = new Date(b[dateKey] || b.savedAt || 0); + return dateA - dateB; + }); +}; +export const sortByDateDescending = (data, dateKey = 'updated') => { + return [...data].sort((a, b) => { + const dateA = new Date(a[dateKey] || a.savedAt || 0); + const dateB = new Date(b[dateKey] || b.savedAt || 0); + return dateB - dateA; + }); +}; \ No newline at end of file From e4cdd74d43ccc6dbd36aec5927bd8cc58891d516 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 07:24:30 +0200 Subject: [PATCH 033/323] Fix: Positioning of back to shows button --- src/pages/FavoritesPage.jsx | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/src/pages/FavoritesPage.jsx b/src/pages/FavoritesPage.jsx index 9a9faee7e..21bffd5ce 100644 --- a/src/pages/FavoritesPage.jsx +++ b/src/pages/FavoritesPage.jsx @@ -39,13 +39,15 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackTo }; return ( - + Your Favorite Episodes - + + + {sortedFavorites.map((fav, index) => ( From 363f890f1fdc4f3900cb163bda31d271e1a6f18e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 07:27:09 +0200 Subject: [PATCH 034/323] Fix: Margin bottom for favourites list --- src/pages/FavoritesPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/FavoritesPage.jsx b/src/pages/FavoritesPage.jsx index 21bffd5ce..a794394fa 100644 --- a/src/pages/FavoritesPage.jsx +++ b/src/pages/FavoritesPage.jsx @@ -48,7 +48,7 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackTo Back to Shows - + {sortedFavorites.map((fav, index) => ( From a436e9a743f258ada721d099034b9ac6f16d7550 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 09:17:32 +0200 Subject: [PATCH 035/323] Fix: Dates in wrong format --- src/App.jsx | 62 +++++- src/components/AudioPlayer.jsx | 290 +++++++++---------------- src/components/PodcastDetailsModal.jsx | 21 +- src/components/ShowCard.jsx | 7 +- 4 files changed, 182 insertions(+), 198 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 8e02e28ac..48cb36f4d 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -8,7 +8,7 @@ import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortB import AudioPlayer from './components/AudioPlayer'; import PodcastDetailsModal from './components/PodcastDetailsModal'; import FavoritesPage from './pages/FavoritesPage'; -import { Box } from '@mui/material' +import { Box, Button } from '@mui/material' const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; @@ -36,6 +36,23 @@ function App() { const [showFavorites, setShowFavorites] = useState(false); const [searchTerm, setSearchTerm] = useState(''); const [filterOption, setFilterOption] = useState(null); + const [listenedEpisodes, setListenedEpisodes] = useState(() => { + const storedListenedEpisodes = localStorage.getItem('listenedEpisodes'); + return storedListenedEpisodes ? JSON.parse(storedListenedEpisodes) : []; + }); + + const markEpisodeAsListened = useCallback((episode) => { + setListenedEpisodes(prev => { + const newListenedEpisodes = [...prev, episode]; + localStorage.setItem('listenedEpisodes', JSON.stringify(newListenedEpisodes)); + return newListenedEpisodes; + }); + }, []); + + const resetListeningHistory = () => { + setListenedEpisodes([]); + localStorage.removeItem('listenedEpisodes'); + }; const handleBackToShows = () => { setShowFavorites(false); @@ -285,6 +302,20 @@ function App() { setCurrentEpisode(episodeWithSeason); setPlayingShow(detailedShow); setIsPlaying(true); + + // Check if the episode has been listened to + const isListened = listenedEpisodes.some( + listened => listened.showId === detailedShow.id && listened.episodeTitle === episode.title + ); + + if (!isListened) { + markEpisodeAsListened({ + showId: detailedShow.id, + showTitle: detailedShow.title, + episodeTitle: episode.title, + listenedAt: new Date().toISOString() + }); + } }; if (loading || loadingGenres) return ( @@ -296,27 +327,32 @@ function App() { return ( <> - {genres && ( - - )} + + {!showFavorites && filteredData && ( - + )} {showFavorites && ( )} {detailedShow && modalOpen && ( )} diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 1641ff155..8534bd4ab 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -1,202 +1,125 @@ -import { useEffect, useRef, useState } from 'react'; -import PropTypes from 'prop-types'; +import { useState, useEffect, useRef } from 'react'; import { Box, IconButton, Slider, Typography } from '@mui/material'; -import { useTheme } from '@mui/material/styles'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import PauseIcon from '@mui/icons-material/Pause'; import SkipNextIcon from '@mui/icons-material/SkipNext'; import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import VolumeUpIcon from '@mui/icons-material/VolumeUp'; -import VolumeOffIcon from '@mui/icons-material/VolumeOff'; - -const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow }) => { - const theme = useTheme(); - const audioRef = useRef(null); - const [volume, setVolume] = useState(100); - const [currentTime, setCurrentTime] = useState(0); - const [duration, setDuration] = useState(0); - - useEffect(() => { - if (episode && audioRef.current) { - console.log('Loading episode:', episode); - audioRef.current.src = episode.file; - audioRef.current.load(); - if (isPlaying) { - audioRef.current.play().catch((err) => console.error('Error playing audio:', err)); - } - } - }, [episode]); - - useEffect(() => { - const audio = audioRef.current; - if (isPlaying) { - audio.play(); - } else { - audio.pause(); - } - }, [isPlaying]); - - useEffect(() => { - const audio = audioRef.current; - const updateTime = () => setCurrentTime(audio.currentTime); - const updateDuration = () => setDuration(audio.duration); - - audio.addEventListener('timeupdate', updateTime); - audio.addEventListener('loadedmetadata', updateDuration); - audio.addEventListener('durationchange', updateDuration); +import VolumeDownIcon from '@mui/icons-material/VolumeDown'; +import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; +import PropTypes from 'prop-types'; - return () => { - audio.removeEventListener('timeupdate', updateTime); - audio.removeEventListener('loadedmetadata', updateDuration); - audio.removeEventListener('durationchange', updateDuration); +const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete }) => { + const [progress, setProgress] = useState(0); + const [volume, setVolume] = useState(1); + const [isMuted, setIsMuted] = useState(false); + const audioRef = useRef(null); + + useEffect(() => { + if (isPlaying) { + audioRef.current.play().catch(error => console.error("Playback failed", error)); + } else { + audioRef.current.pause(); + } + }, [isPlaying]); + + useEffect(() => { + if (episode) { + audioRef.current.src = episode.file; + if (isPlaying) { + audioRef.current.play().catch(error => console.error("Playback failed", error)); + } + } + }, [episode, isPlaying]); + + useEffect(() => { + if (audioRef.current) { + audioRef.current.volume = isMuted ? 0 : volume; + } + }, [volume, isMuted]); + + const handleTimeUpdate = () => { + if (audioRef.current) { + setProgress((audioRef.current.currentTime / audioRef.current.duration) * 100 || 0); + } }; - }, []); - - const handlePlayPause = () => { - console.log(episode) - onPlayPause(!isPlaying); - }; - - const handleVolumeChange = (event, newValue) => { - setVolume(newValue); - audioRef.current.volume = newValue / 100; - }; - const handleProgressChange = (event, newValue) => { - const newTime = (newValue / 100) * duration; - setCurrentTime(newTime); - audioRef.current.currentTime = newTime; - }; - - const handleSkipNext = () => { - console.log("In handle skip next") - onSkipNext(); - }; + const handleProgressChange = (event, newValue) => { + const time = (newValue / 100) * (audioRef.current.duration || 0); + audioRef.current.currentTime = time; + setProgress(newValue); + }; - const handleSkipPrevious = () => { - console.log("In handle skip previous") - if (currentTime > 3) { - audioRef.current.currentTime = 0; - } else { - onSkipPrevious(); - } - }; + const handleVolumeChange = (event, newValue) => { + setVolume(newValue); + setIsMuted(newValue === 0); + }; - const formatTime = (time) => { - const minutes = Math.floor(time / 60); - const seconds = Math.floor(time % 60); - return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; - }; + const toggleMute = () => { + setIsMuted(!isMuted); + }; - return ( - - - - {formatTime(currentTime)} - - - - {formatTime(duration)} - - - - - {/* Spacer */} - - - - - - - {isPlaying ? : } - - - - - + const handleEpisodeEnd = () => { + if (episode && playingShow) { + onEpisodeComplete({ + showId: playingShow.id, + showTitle: playingShow.title, + episodeTitle: episode.title, + listenedAt: new Date().toISOString() + }); + } + onSkipNext(); + }; - - handleVolumeChange(null, volume === 0 ? 100 : 0)} - sx={{ - padding: '8px', - width: '48px', - height: '48px', - '& .MuiIconButton-root': { padding: 0 } - }} - > - {volume === 0 ? : } - - + return ( + + - - - - ); + ); }; + // Define prop types AudioPlayer.propTypes = { episode: PropTypes.shape({ @@ -226,6 +149,7 @@ AudioPlayer.propTypes = { })) })) }), + onEpisodeComplete: PropTypes.func.isRequired, }; diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index f07f40dcf..51d7e8ea0 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -18,8 +18,9 @@ import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types'; +import CheckCircleIcon from '@mui/icons-material/CheckCircle'; -const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes }) => { +const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes }) => { const [selectedSeason, setSelectedSeason] = useState(null); useEffect(() => { @@ -46,6 +47,13 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi ); }; + const isListened = (episode) => { + return listenedEpisodes.some(listened => + listened.showId === show.id && + listened.episodeTitle === episode.title + ); + }; + const handleSeasonChange = (event) => { const season = show.seasons.find(s => s.season === event.target.value); setSelectedSeason(season); @@ -115,7 +123,12 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi - Updated: {formatDate(show.updated)} + Updated: {(new Date(show.updated)).toLocaleString(undefined, { + year: 'numeric', + month: 'long', + day: 'numeric', + hour12: false, + })} + {isListened(episode) && ( + + )} onPlayEpisode(episode)}> @@ -193,6 +209,7 @@ PodcastDetailsModal.propTypes = { loading: PropTypes.bool.isRequired, toggleFavorite: PropTypes.func.isRequired, favoriteEpisodes: PropTypes.array.isRequired, + listenedEpisodes: PropTypes.array.isRequired, }; export default PodcastDetailsModal; diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index 822b5e5fe..8fcf0b370 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -80,7 +80,12 @@ export default function ShowCard({ title, description, seasons, image, genresArr whiteSpace: "nowrap" // Prevents the text from wrapping }} > - {"Updated: " + new Date(updated).toLocaleDateString()} + {"Updated: " + new Date(updated).toLocaleString(undefined, { + year: 'numeric', + month: 'long', + day: 'numeric', + hour12: false, + })} Date: Fri, 18 Oct 2024 09:26:33 +0200 Subject: [PATCH 036/323] Fix: Alignment on heading and button in favorites --- src/pages/FavoritesPage.jsx | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/src/pages/FavoritesPage.jsx b/src/pages/FavoritesPage.jsx index a794394fa..3563cb03f 100644 --- a/src/pages/FavoritesPage.jsx +++ b/src/pages/FavoritesPage.jsx @@ -39,14 +39,16 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackTo }; return ( - - - Your Favorite Episodes - - - + + + + Your Favorite Episodes + + + + {sortedFavorites.map((fav, index) => ( From 6faa11f99442d92329d02fad2c3fe693c9bbf515 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 09:28:34 +0200 Subject: [PATCH 037/323] Fix: Show cards have space to breath before Appbar --- src/pages/Content.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index fc4b99954..f1a4c4c5b 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -7,6 +7,7 @@ function Content({ showData, genres, onShowClick }) { {showData.map((showPreview) => ( From f86a006cee4971a3826100c7eb973fad29ed19d2 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 10:15:51 +0200 Subject: [PATCH 038/323] Fix: Marking episodes complete when finished listening --- src/App.jsx | 31 +++++----- src/components/AudioPlayer.jsx | 104 +++++++++++++++++++-------------- 2 files changed, 76 insertions(+), 59 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 48cb36f4d..07b53a175 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -43,12 +43,23 @@ function App() { const markEpisodeAsListened = useCallback((episode) => { setListenedEpisodes(prev => { + // Check if this episode is already marked as listened + const isAlreadyListened = prev.some( + listened => listened.showId === episode.showId && + listened.episodeTitle === episode.episodeTitle + ); + + if (isAlreadyListened) { + return prev; + } + const newListenedEpisodes = [...prev, episode]; localStorage.setItem('listenedEpisodes', JSON.stringify(newListenedEpisodes)); return newListenedEpisodes; }); }, []); + const resetListeningHistory = () => { setListenedEpisodes([]); localStorage.removeItem('listenedEpisodes'); @@ -302,22 +313,14 @@ function App() { setCurrentEpisode(episodeWithSeason); setPlayingShow(detailedShow); setIsPlaying(true); + // Remove the immediate marking as listened here + }; - // Check if the episode has been listened to - const isListened = listenedEpisodes.some( - listened => listened.showId === detailedShow.id && listened.episodeTitle === episode.title - ); - - if (!isListened) { - markEpisodeAsListened({ - showId: detailedShow.id, - showTitle: detailedShow.title, - episodeTitle: episode.title, - listenedAt: new Date().toISOString() - }); - } + const handleEpisodeComplete = (episodeData) => { + markEpisodeAsListened(episodeData); }; + if (loading || loadingGenres) return ( @@ -362,7 +365,7 @@ function App() { onSkipNext={handleSkipNext} onSkipPrevious={handleSkipPrevious} playingShow={playingShow} - onEpisodeComplete={markEpisodeAsListened} + onEpisodeComplete={handleEpisodeComplete} /> {detailedShow && modalOpen && ( { - if (isPlaying) { - audioRef.current.play().catch(error => console.error("Playback failed", error)); - } else { - audioRef.current.pause(); + if (audioRef.current && isLoaded) { + if (isPlaying) { + const playPromise = audioRef.current.play(); + if (playPromise !== undefined) { + playPromise.catch(error => console.error("Playback failed", error)); + } + } else { + audioRef.current.pause(); + } } - }, [isPlaying]); + }, [isPlaying, isLoaded]); + // Handle episode change useEffect(() => { - if (episode) { + if (episode && audioRef.current) { + setIsLoaded(false); + audioRef.current.pause(); + audioRef.current.currentTime = 0; audioRef.current.src = episode.file; - if (isPlaying) { - audioRef.current.play().catch(error => console.error("Playback failed", error)); - } + + // Wait for audio to be loaded before attempting to play + audioRef.current.addEventListener('loadeddata', () => { + setIsLoaded(true); + }, { once: true }); } - }, [episode, isPlaying]); + }, [episode]); useEffect(() => { if (audioRef.current) { @@ -40,13 +53,16 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio const handleTimeUpdate = () => { if (audioRef.current) { - setProgress((audioRef.current.currentTime / audioRef.current.duration) * 100 || 0); + const currentProgress = (audioRef.current.currentTime / audioRef.current.duration) * 100 || 0; + setProgress(currentProgress); } }; const handleProgressChange = (event, newValue) => { - const time = (newValue / 100) * (audioRef.current.duration || 0); - audioRef.current.currentTime = time; + if (audioRef.current) { + const time = (newValue / 100) * audioRef.current.duration; + audioRef.current.currentTime = time; + } setProgress(newValue); }; @@ -70,6 +86,7 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio } onSkipNext(); }; + console.log(episode) return ( @@ -82,7 +99,7 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio - onPlayPause(!isPlaying)}> + onPlayPause(!isPlaying)} disabled={!isLoaded}> {isPlaying ? : } @@ -119,38 +136,35 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio ); }; - -// Define prop types AudioPlayer.propTypes = { - episode: PropTypes.shape({ - title: PropTypes.string.isRequired, - description: PropTypes.string, - episode: PropTypes.number.isRequired, - file: PropTypes.string.isRequired, - }), - isPlaying: PropTypes.bool.isRequired, - onPlayPause: PropTypes.func.isRequired, - onSkipNext: PropTypes.func.isRequired, - onSkipPrevious: PropTypes.func.isRequired, - playingShow: PropTypes.shape({ - id: PropTypes.string.isRequired, - title: PropTypes.string.isRequired, - description: PropTypes.string, - genres: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.number), - PropTypes.arrayOf(PropTypes.string) - ]), - seasons: PropTypes.arrayOf(PropTypes.shape({ - episodes: PropTypes.arrayOf(PropTypes.shape({ - title: PropTypes.string.isRequired, - description: PropTypes.string, - episode: PropTypes.number.isRequired, - file: PropTypes.string.isRequired, - })) - })) - }), - onEpisodeComplete: PropTypes.func.isRequired, + episode: PropTypes.shape({ + title: PropTypes.string.isRequired, + description: PropTypes.string, + episode: PropTypes.number.isRequired, + file: PropTypes.string.isRequired, + }), + isPlaying: PropTypes.bool.isRequired, + onPlayPause: PropTypes.func.isRequired, + onSkipNext: PropTypes.func.isRequired, + onSkipPrevious: PropTypes.func.isRequired, + playingShow: PropTypes.shape({ + id: PropTypes.string.isRequired, + title: PropTypes.string.isRequired, + description: PropTypes.string, + genres: PropTypes.oneOfType([ + PropTypes.arrayOf(PropTypes.number), + PropTypes.arrayOf(PropTypes.string) + ]), + seasons: PropTypes.arrayOf(PropTypes.shape({ + episodes: PropTypes.arrayOf(PropTypes.shape({ + title: PropTypes.string.isRequired, + description: PropTypes.string, + episode: PropTypes.number.isRequired, + file: PropTypes.string.isRequired, + })) + })) + }), + onEpisodeComplete: PropTypes.func.isRequired, }; - export default AudioPlayer; \ No newline at end of file From 5be746ca2f952c6348201a5a577b006aef6123b5 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 10:28:14 +0200 Subject: [PATCH 039/323] Feat: Draft reset progrss component --- src/components/AudioPlayer.jsx | 1 - src/components/ResetProgressDialog.jsx | 0 2 files changed, 1 deletion(-) create mode 100644 src/components/ResetProgressDialog.jsx diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 3cde68f51..c2826b005 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -86,7 +86,6 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio } onSkipNext(); }; - console.log(episode) return ( diff --git a/src/components/ResetProgressDialog.jsx b/src/components/ResetProgressDialog.jsx new file mode 100644 index 000000000..e69de29bb From 3edd15b604d18b5e6ee7da11a40bb244ecca27a9 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 11:20:06 +0200 Subject: [PATCH 040/323] Feat: Implement resetting listening history --- src/App.jsx | 20 ++++++++++++-- src/components/ResetConfirmationDialog.jsx | 31 ++++++++++++++++++++++ src/components/ResetProgressDialog.jsx | 0 src/components/SearchAppBar.jsx | 26 ++++++++++++++++-- 4 files changed, 73 insertions(+), 4 deletions(-) create mode 100644 src/components/ResetConfirmationDialog.jsx delete mode 100644 src/components/ResetProgressDialog.jsx diff --git a/src/App.jsx b/src/App.jsx index 07b53a175..3e6fc023f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -9,6 +9,7 @@ import AudioPlayer from './components/AudioPlayer'; import PodcastDetailsModal from './components/PodcastDetailsModal'; import FavoritesPage from './pages/FavoritesPage'; import { Box, Button } from '@mui/material' +import ResetConfirmationDialog from './components/ResetConfirmationDialog'; const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; @@ -40,6 +41,7 @@ function App() { const storedListenedEpisodes = localStorage.getItem('listenedEpisodes'); return storedListenedEpisodes ? JSON.parse(storedListenedEpisodes) : []; }); + const [isResetDialogOpen, setIsResetDialogOpen] = useState(false); const markEpisodeAsListened = useCallback((episode) => { setListenedEpisodes(prev => { @@ -60,9 +62,18 @@ function App() { }, []); - const resetListeningHistory = () => { + const handleResetClick = () => { + setIsResetDialogOpen(true); + }; + + const handleResetCancel = () => { + setIsResetDialogOpen(false); + }; + + const handleResetConfirm = () => { setListenedEpisodes([]); localStorage.removeItem('listenedEpisodes'); + setIsResetDialogOpen(false); }; const handleBackToShows = () => { @@ -336,8 +347,8 @@ function App() { onSearchChange={handleSearchChange} onFavoritesClick={handleFavoritesClick} genres={genres} + onResetClick={handleResetClick} /> - {!showFavorites && filteredData && ( )} + ); } diff --git a/src/components/ResetConfirmationDialog.jsx b/src/components/ResetConfirmationDialog.jsx new file mode 100644 index 000000000..d787fbb13 --- /dev/null +++ b/src/components/ResetConfirmationDialog.jsx @@ -0,0 +1,31 @@ +import { Dialog, DialogTitle, DialogContent, DialogActions, DialogContentText, Button } from '@mui/material'; + +const ResetConfirmationDialog = ({ open, onClose, onConfirm }) => { + return ( + + + Are you sure? + + + + This action cannot be undone. This will permanently delete your entire listening history. + + + + + + + + ); +}; + +export default ResetConfirmationDialog; \ No newline at end of file diff --git a/src/components/ResetProgressDialog.jsx b/src/components/ResetProgressDialog.jsx deleted file mode 100644 index e69de29bb..000000000 diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx index 2404cdd11..bb58519c6 100644 --- a/src/components/SearchAppBar.jsx +++ b/src/components/SearchAppBar.jsx @@ -8,6 +8,7 @@ import FilterListIcon from '@mui/icons-material/FilterList'; import SortIcon from '@mui/icons-material/Sort'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PoddyLogo from './PoddyLogo'; +import SettingsIcon from '@mui/icons-material/Settings'; const Search = styled('div')(({ theme }) => ({ position: 'relative', @@ -48,10 +49,11 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ }, })); -export default function SearchAppBar({ onSortChange, onFilterChange, onSearchChange, onFavoritesClick, genres }) { +export default function SearchAppBar({ onSortChange, onFilterChange, onSearchChange, onFavoritesClick, onResetClick, genres }) { const theme = useTheme(); const [sortAnchorEl, setSortAnchorEl] = useState(null); const [filterAnchorEl, setFilterAnchorEl] = useState(null); + const [settingsAnchorEl, setSettingsAnchorEl] = useState(null); const handleSortClick = (event) => { setSortAnchorEl(event.currentTarget); @@ -79,6 +81,19 @@ export default function SearchAppBar({ onSortChange, onFilterChange, onSearchCha handleFilterClose(); }; + const handleSettingsClick = (event) => { + setSettingsAnchorEl(event.currentTarget); + }; + + const handleSettingsClose = () => { + setSettingsAnchorEl(null); + }; + + const handleResetClick = () => { + onResetClick(); + handleSettingsClose(); + }; + return ( + + + + + Reset Listening History + ); @@ -149,5 +170,6 @@ SearchAppBar.propTypes = { onFilterChange: PropTypes.func.isRequired, onSearchChange: PropTypes.func.isRequired, onFavoritesClick: PropTypes.func.isRequired, + onResetClick: PropTypes.func.isRequired, genres: PropTypes.array.isRequired, -}; +}; \ No newline at end of file From 9f33aff67f3802413a9f508aad571444343625f0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 12:41:50 +0200 Subject: [PATCH 041/323] Feat: Implement fuzzy search with fuse.js --- package-lock.json | 17 ++++++++ package.json | 2 + src/App.jsx | 40 +++++++++++++++-- src/components/AudioPlayer.jsx | 20 ++++++++- src/components/PodcastDetailsModal.jsx | 59 +++++++++++++++++--------- src/components/SearchAppBar.jsx | 10 ++++- src/pages/Content.jsx | 2 +- src/utils/fuzzySearch.js | 24 +++++++++++ 8 files changed, 146 insertions(+), 28 deletions(-) create mode 100644 src/utils/fuzzySearch.js diff --git a/package-lock.json b/package-lock.json index 54ae52397..9eab020f0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -14,6 +14,8 @@ "@mui/icons-material": "^6.1.3", "@mui/material": "^6.1.3", "axios": "^1.7.7", + "fuse.js": "^7.0.0", + "lodash": "^4.17.21", "react": "^18.3.1", "react-dom": "^18.3.1" }, @@ -3072,6 +3074,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/fuse.js": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-7.0.0.tgz", + "integrity": "sha512-14F4hBIxqKvD4Zz/XjDc3y94mNZN6pRv3U13Udo0lNLCWRBUsrMv2xwcF/y/Z5sV6+FQW+/ow68cHpm4sunt8Q==", + "license": "Apache-2.0", + "engines": { + "node": ">=10" + } + }, "node_modules/gensync": { "version": "1.0.0-beta.2", "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", @@ -3846,6 +3857,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "license": "MIT" + }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", diff --git a/package.json b/package.json index dea9f31f2..90811c697 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,8 @@ "@mui/icons-material": "^6.1.3", "@mui/material": "^6.1.3", "axios": "^1.7.7", + "fuse.js": "^7.0.0", + "lodash": "^4.17.21", "react": "^18.3.1", "react-dom": "^18.3.1" }, diff --git a/src/App.jsx b/src/App.jsx index 3e6fc023f..0656ac4bc 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,13 +3,14 @@ import LoadingSpinner from "./pages/LoadingSpinner"; import ErrorPage from './pages/ErrorPage'; import SearchAppBar from './components/SearchAppBar'; import Content from "./pages/Content"; -import { useState, useEffect, useCallback } from 'react'; +import { useState, useEffect, useCallback, useMemo } from 'react'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "./utils/sortUtils"; import AudioPlayer from './components/AudioPlayer'; import PodcastDetailsModal from './components/PodcastDetailsModal'; import FavoritesPage from './pages/FavoritesPage'; import { Box, Button } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; +import { initializeFuzzySearch, performFuzzySearch } from './utils/fuzzySearch'; const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; @@ -42,6 +43,31 @@ function App() { return storedListenedEpisodes ? JSON.parse(storedListenedEpisodes) : []; }); const [isResetDialogOpen, setIsResetDialogOpen] = useState(false); + const [episodeTimestamps, setEpisodeTimestamps] = useState(() => { + const storedTimestamps = localStorage.getItem('episodeTimestamps'); + return storedTimestamps ? JSON.parse(storedTimestamps) : {}; + }); + const [fuse, setFuse] = useState(null); + + useEffect(() => { + if (previewData && previewData.length > 0) { + setFuse(initializeFuzzySearch(previewData)); + } + }, [previewData]); + + const updateEpisodeTimestamp = useCallback((showId, episodeTitle, timestamp) => { + setEpisodeTimestamps(prev => { + const newTimestamps = { + ...prev, + [showId]: { + ...prev[showId], + [episodeTitle]: timestamp + } + }; + localStorage.setItem('episodeTimestamps', JSON.stringify(newTimestamps)); + return newTimestamps; + }); + }, []); const markEpisodeAsListened = useCallback((episode) => { setListenedEpisodes(prev => { @@ -207,8 +233,14 @@ function App() { }; const handleSearchChange = (query) => { - setSearchQuery(query); - }; + setSearchQuery(query); + if (query && fuse) { + const results = performFuzzySearch(fuse, query); + setFilteredData(results.map(result => result.item)); + } else { + setFilteredData(sortedData); + } + }; const handleShowClick = async (show) => { if (playingShow && playingShow.id === show.id) { @@ -377,6 +409,7 @@ function App() { onSkipPrevious={handleSkipPrevious} playingShow={playingShow} onEpisodeComplete={handleEpisodeComplete} + updateEpisodeTimestamp={updateEpisodeTimestamp} /> {detailedShow && modalOpen && ( )} { +const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { const [progress, setProgress] = useState(0); const [volume, setVolume] = useState(1); const [isMuted, setIsMuted] = useState(false); const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); + useEffect(() => { + const audio = audioRef.current; + if (!audio) return; + + const handleTimeUpdate = () => { + if (playingShow && episode) { + updateEpisodeTimestamp(playingShow.id, episode.title, Math.floor(audio.currentTime)); + } + }; + + audio.addEventListener('timeupdate', handleTimeUpdate); + + return () => { + audio.removeEventListener('timeupdate', handleTimeUpdate); + }; + }, [playingShow, episode, updateEpisodeTimestamp]); + // Handle play/pause useEffect(() => { if (audioRef.current && isLoaded) { @@ -164,6 +181,7 @@ AudioPlayer.propTypes = { })) }), onEpisodeComplete: PropTypes.func.isRequired, + updateEpisodeTimestamp: PropTypes.func.isRequired }; export default AudioPlayer; \ No newline at end of file diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 51d7e8ea0..c13f49643 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -20,9 +20,16 @@ import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; -const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes }) => { +const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { const [selectedSeason, setSelectedSeason] = useState(null); + const formatTime = (seconds) => { + const hours = Math.floor(seconds / 3600); + const minutes = Math.floor((seconds % 3600) / 60); + const remainingSeconds = seconds % 60; + return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`; + }; + useEffect(() => { if (show && show.seasons && Array.isArray(show.seasons)) { setSelectedSeason(show.seasons[0]); @@ -164,26 +171,35 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi - - {selectedSeason && selectedSeason.episodes.map((episode) => ( - - handleToggleFavorite(episode)}> - {isFavorite(episode) ? : } - - - - {isListened(episode) && ( - - )} - onPlayEpisode(episode)}> - - - - - ))} + + {selectedSeason && selectedSeason.episodes.map((episode) => ( + + handleToggleFavorite(episode)}> + {isFavorite(episode) ? : } + + + {episode.description} + {episodeTimestamps[show.id] && episodeTimestamps[show.id][episode.title] && ( + + Last played: {formatTime(episodeTimestamps[show.id][episode.title])} + + )} + + } + /> + + {isListened(episode) && ( + + )} + onPlayEpisode(episode)}> + + + + + ))} @@ -210,6 +226,7 @@ PodcastDetailsModal.propTypes = { toggleFavorite: PropTypes.func.isRequired, favoriteEpisodes: PropTypes.array.isRequired, listenedEpisodes: PropTypes.array.isRequired, + episodeTimestamps: PropTypes.object.isRequired, }; export default PodcastDetailsModal; diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx index bb58519c6..20d5124b3 100644 --- a/src/components/SearchAppBar.jsx +++ b/src/components/SearchAppBar.jsx @@ -1,4 +1,4 @@ -import { useState } from 'react'; +import { useState, useMemo } from 'react'; import { useTheme } from '@mui/material/styles'; import PropTypes from 'prop-types'; import { styled, alpha } from '@mui/material/styles'; @@ -9,6 +9,7 @@ import SortIcon from '@mui/icons-material/Sort'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PoddyLogo from './PoddyLogo'; import SettingsIcon from '@mui/icons-material/Settings'; +import { debounce } from 'lodash'; const Search = styled('div')(({ theme }) => ({ position: 'relative', @@ -55,6 +56,11 @@ export default function SearchAppBar({ onSortChange, onFilterChange, onSearchCha const [filterAnchorEl, setFilterAnchorEl] = useState(null); const [settingsAnchorEl, setSettingsAnchorEl] = useState(null); + const debouncedSearch = useMemo( + () => debounce(onSearchChange, 300), + [onSearchChange] + ); + const handleSortClick = (event) => { setSortAnchorEl(event.currentTarget); }; @@ -129,7 +135,7 @@ export default function SearchAppBar({ onSortChange, onFilterChange, onSearchCha onSearchChange(e.target.value)} + onChange={(e) => debouncedSearch(e.target.value)} /> diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index f1a4c4c5b..85d318ed4 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -7,7 +7,7 @@ function Content({ showData, genres, onShowClick }) { {showData.map((showPreview) => ( diff --git a/src/utils/fuzzySearch.js b/src/utils/fuzzySearch.js new file mode 100644 index 000000000..47c0931d6 --- /dev/null +++ b/src/utils/fuzzySearch.js @@ -0,0 +1,24 @@ +import Fuse from 'fuse.js'; + +export const initializeFuzzySearch = (shows) => { + if (!shows || shows.length === 0) { + return null; + } + + const options = { + keys: ['title', 'description'], + threshold: 1, + includeScore: true, + distance: 500, // Increase distance + minMatchCharLength: 2, // Match shorter parts + }; + + return new Fuse(shows, options); +}; + +export const performFuzzySearch = (fuse, searchTerm) => { + if (!fuse) { + return []; + } + return fuse.search(searchTerm); +}; \ No newline at end of file From 45d1851afd42668a39da16036483f248a9697322 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 12:47:01 +0200 Subject: [PATCH 042/323] Fix: Audio control slider colours --- src/theme.js | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/src/theme.js b/src/theme.js index 3cdbe794b..5aeb95048 100644 --- a/src/theme.js +++ b/src/theme.js @@ -37,14 +37,21 @@ export const lightTheme = createTheme({ color: '#121212', }, outlined: { - border: '2px solid #121212', // Customize border color + border: '2px solid #121212', '&:hover': { - backgroundColor: 'rgba(18, 18, 18, 0.04)', // Optional hover effect + backgroundColor: 'rgba(18, 18, 18, 0.04)', }, }, }, }, + MuiSlider: { + styleOverrides: { + root: { + color: '#121212', + }, + } }, + } }); export const darkTheme = createTheme({ @@ -82,12 +89,19 @@ export const darkTheme = createTheme({ color: '#fafafa', }, outlined: { - border: '2px solid #fafafa', // Customize border color + border: '2px solid #fafafa', '&:hover': { - backgroundColor: 'rgba(18, 18, 18, 0.04)', // Optional hover effect + backgroundColor: 'rgba(18, 18, 18, 0.04)', }, }, }, }, + MuiSlider: { + styleOverrides: { + root: { + color: '#fafafa', + }, + } + }, }, }); \ No newline at end of file From cc5ee9fcf412d4a27faa495f80f6d1ad41b64209 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 14:10:48 +0200 Subject: [PATCH 043/323] Fix: Styling and centering on components in AudioPlayer --- src/components/AudioPlayer.jsx | 164 ++++++++++++++++++++++++--------- 1 file changed, 121 insertions(+), 43 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index d95d9fc64..a79a40e9e 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -8,6 +8,7 @@ import VolumeUpIcon from '@mui/icons-material/VolumeUp'; import VolumeDownIcon from '@mui/icons-material/VolumeDown'; import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; import PropTypes from 'prop-types'; +import { useTheme } from '@mui/material/styles'; const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { const [progress, setProgress] = useState(0); @@ -15,6 +16,31 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio const [isMuted, setIsMuted] = useState(false); const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); + const theme = useTheme(); + const [duration, setDuration] = useState(0); + const [currentTime, setCurrentTime] = useState(0); + + useEffect(() => { + const audio = audioRef.current; + const updateTime = () => setCurrentTime(audio.currentTime); + const updateDuration = () => setDuration(audio.duration); + + audio.addEventListener('timeupdate', updateTime); + audio.addEventListener('loadedmetadata', updateDuration); + audio.addEventListener('durationchange', updateDuration); + + return () => { + audio.removeEventListener('timeupdate', updateTime); + audio.removeEventListener('loadedmetadata', updateDuration); + audio.removeEventListener('durationchange', updateDuration); + }; + }, []); + + const formatTime = (time) => { + const minutes = Math.floor(time / 60); + const seconds = Math.floor(time % 60); + return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; + }; useEffect(() => { const audio = audioRef.current; @@ -79,6 +105,7 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio if (audioRef.current) { const time = (newValue / 100) * audioRef.current.duration; audioRef.current.currentTime = time; + setCurrentTime(time); } setProgress(newValue); }; @@ -105,52 +132,103 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio }; return ( - - - {/* Spacer */} + + {episode && ( + + Now Playing: {episode.title} + + )} + {/* Spacer */} - {episode && ( - - Now Playing: {episode.title} - - )} ); } diff --git a/src/components/ResetConfirmationDialog.jsx b/src/components/ResetConfirmationDialog.jsx index d787fbb13..83c59c150 100644 --- a/src/components/ResetConfirmationDialog.jsx +++ b/src/components/ResetConfirmationDialog.jsx @@ -5,8 +5,6 @@ const ResetConfirmationDialog = ({ open, onClose, onConfirm }) => { Are you sure? From 51a16bbd9656c6405cedb0efff194c73965dd1d0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 14:22:49 +0200 Subject: [PATCH 045/323] Fix: Margin top for favourites page --- src/pages/FavoritesPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/FavoritesPage.jsx b/src/pages/FavoritesPage.jsx index 3563cb03f..921753451 100644 --- a/src/pages/FavoritesPage.jsx +++ b/src/pages/FavoritesPage.jsx @@ -39,7 +39,7 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackTo }; return ( - + Your Favorite Episodes From 9e1a09d059a49e3de2c475722312769f3b4cb8ec Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 14:23:31 +0200 Subject: [PATCH 046/323] Fix: Margin Bottom for Favorites page --- src/pages/FavoritesPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/FavoritesPage.jsx b/src/pages/FavoritesPage.jsx index 921753451..63b9c5b95 100644 --- a/src/pages/FavoritesPage.jsx +++ b/src/pages/FavoritesPage.jsx @@ -39,7 +39,7 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackTo }; return ( - + Your Favorite Episodes From d1cbd7ff3ae963f22d68c138b2b1216560d94c46 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 14:32:07 +0200 Subject: [PATCH 047/323] Fix: Implement show all functionality so users can reset genre filter --- src/components/SearchAppBar.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/SearchAppBar.jsx b/src/components/SearchAppBar.jsx index 20d5124b3..7e339aba3 100644 --- a/src/components/SearchAppBar.jsx +++ b/src/components/SearchAppBar.jsx @@ -151,6 +151,7 @@ export default function SearchAppBar({ onSortChange, onFilterChange, onSearchCha
+ handleFilterSelect(null)}>Show All {genres.map((genre) => ( handleFilterSelect(genre)}> {genre.title} From 4557d4aef10cdcbb387ca687f08f483799592757 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 15:12:01 +0200 Subject: [PATCH 048/323] Fix: Sort favorites by date updated --- src/components/PodcastDetailsModal.jsx | 5 +-- src/pages/FavoritesPage.jsx | 49 ++++++++++++++------------ 2 files changed, 27 insertions(+), 27 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index c13f49643..69a9880f6 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -43,6 +43,7 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi seasonTitle: selectedSeason.title, episodeTitle: episode.title, episodeNumber: episode.episode, + updated: show.updated }); }; @@ -66,10 +67,6 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi setSelectedSeason(season); }; - const formatDate = (dateString) => { - return new Date(dateString).toLocaleString(); // Changed to display date and time - }; - const showGenres = genres.filter(genre => genre.shows.includes(show.id) ); diff --git a/src/pages/FavoritesPage.jsx b/src/pages/FavoritesPage.jsx index 63b9c5b95..e4c276a21 100644 --- a/src/pages/FavoritesPage.jsx +++ b/src/pages/FavoritesPage.jsx @@ -4,7 +4,7 @@ import DeleteIcon from '@mui/icons-material/Delete'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "../utils/sortUtils"; import PropTypes from 'prop-types'; -const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackToShows, searchTerm, sortOption, filterOption }) => { +const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onBackToShows, searchTerm, sortOption }) => { const [sortedFavorites, setSortedFavorites] = useState([]); useEffect(() => { @@ -22,10 +22,10 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackTo sorted = sortByTitleDescending(filtered, 'showTitle'); break; case 'newest': - sorted = sortByDateDescending(filtered, 'savedAt'); + sorted = sortByDateDescending(filtered, 'updated'); // Change to 'updated' break; case 'oldest': - sorted = sortByDateAscending(filtered, 'savedAt'); + sorted = sortByDateAscending(filtered, 'updated'); // Change to 'updated' break; default: sorted = filtered; @@ -39,8 +39,8 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackTo }; return ( - - + + Your Favorite Episodes @@ -59,14 +59,22 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackTo secondary={`${fav.seasonTitle} - Episode ${fav.episodeNumber} - ${fav.episodeTitle}`} /> - + }))} /> + handleRemoveFavorite(fav)}> @@ -84,25 +92,20 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onShowClick, onBackTo FavoritesPage.propTypes = { favoriteEpisodes: PropTypes.arrayOf( - PropTypes.shape({ - showId: PropTypes.string.isRequired, - showTitle: PropTypes.string.isRequired, - seasonTitle: PropTypes.string.isRequired, - episodeTitle: PropTypes.string.isRequired, - episodeNumber: PropTypes.number.isRequired, - savedAt: PropTypes.string.isRequired, - }) + PropTypes.shape({ + showId: PropTypes.string.isRequired, + showTitle: PropTypes.string.isRequired, + seasonTitle: PropTypes.string.isRequired, + episodeTitle: PropTypes.string.isRequired, + episodeNumber: PropTypes.number.isRequired, + savedAt: PropTypes.string.isRequired, + updated: PropTypes.string.isRequired, // Ensure updated is included + }) ).isRequired, toggleFavorite: PropTypes.func.isRequired, - onShowClick: PropTypes.func.isRequired, onBackToShows: PropTypes.func.isRequired, searchTerm: PropTypes.string.isRequired, sortOption: PropTypes.oneOf(['A-Z', 'Z-A', 'newest', 'oldest']).isRequired, - filterOption: PropTypes.shape({ - id: PropTypes.number, - title: PropTypes.string, - }), - }; - +}; -export default FavoritesPage; \ No newline at end of file +export default FavoritesPage; From d96f17866df0aca2e4fa84c301cbbe73a1fcc847 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 15:22:07 +0200 Subject: [PATCH 049/323] Fix: Format dates in favorites --- src/pages/FavoritesPage.jsx | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/src/pages/FavoritesPage.jsx b/src/pages/FavoritesPage.jsx index e4c276a21..f144589a9 100644 --- a/src/pages/FavoritesPage.jsx +++ b/src/pages/FavoritesPage.jsx @@ -58,7 +58,7 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onBackToShows, search primary={fav.showTitle} secondary={`${fav.seasonTitle} - Episode ${fav.episodeNumber} - ${fav.episodeTitle}`} /> - + handleRemoveFavorite(fav)}> From 7b94374af91dc3a9ff799993c9566f83836086b9 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 15:27:23 +0200 Subject: [PATCH 050/323] Fix: Remove unused imports --- src/App.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 0656ac4bc..f1aca1464 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,12 +3,12 @@ import LoadingSpinner from "./pages/LoadingSpinner"; import ErrorPage from './pages/ErrorPage'; import SearchAppBar from './components/SearchAppBar'; import Content from "./pages/Content"; -import { useState, useEffect, useCallback, useMemo } from 'react'; +import { useState, useEffect, useCallback } from 'react'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "./utils/sortUtils"; import AudioPlayer from './components/AudioPlayer'; import PodcastDetailsModal from './components/PodcastDetailsModal'; import FavoritesPage from './pages/FavoritesPage'; -import { Box, Button } from '@mui/material' +import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { initializeFuzzySearch, performFuzzySearch } from './utils/fuzzySearch'; From 56cd6faf5d93d701eb095ea585a1e5335fa8947b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 15:53:58 +0200 Subject: [PATCH 051/323] Update Readme --- README.md | 238 +++++++++++++++++++++++++++++++++++++- src/assets/Screenshot.png | Bin 0 -> 1709069 bytes 2 files changed, 233 insertions(+), 5 deletions(-) create mode 100644 src/assets/Screenshot.png diff --git a/README.md b/README.md index f768e33fc..d6fb95837 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,236 @@ -# React + Vite + + + -This template provides a minimal setup to get React working in Vite with HMR and some ESLint rules. -Currently, two official plugins are available: -- [@vitejs/plugin-react](https://github.com/vitejs/vite-plugin-react/blob/main/packages/plugin-react/README.md) uses [Babel](https://babeljs.io/) for Fast Refresh -- [@vitejs/plugin-react-swc](https://github.com/vitejs/vite-plugin-react-swc) uses [SWC](https://swc.rs/) for Fast Refresh + + + + + +
+
+ + Logo + + +

Best-README-Template

+ +

+ An awesome README template to jumpstart your projects! +
+ Explore the docs » +
+
+ View Demo + · + Report Bug + · + Request Feature +

+
+ + + + +
+ Table of Contents +
    +
  1. + About The Project + +
  2. +
  3. + Getting Started + +
  4. +
  5. Usage
  6. +
  7. Roadmap
  8. +
  9. Contributing
  10. +
  11. Contact
  12. +
  13. Acknowledgments
  14. +
+
+ + + + +## About The Project + +[![Poddy][product-screenshot]](./src/assets/Screenshot.png) + +Poddy is a react web app designed to be your best friend when it comes to podcasts. + + +

(back to top)

+ + + +### Built With + +This section should list any major frameworks/libraries used to bootstrap your project. Leave any add-ons/plugins for the acknowledgements section. Here are a few examples. + +* [![React][React.js]][React-url] +* Vite +* MUI + + +

(back to top)

+ + + + +## Getting Started + +Welcome to Poddy, a responsive and unique Podcast web app experience. +To dive right in and use Poddy, click here [Poddy](https://delightful-platypus-1a7604.netlify.app/). Otherwise, read on for more information. + +### Prerequisites + +This is an example of how to list things you need to use the software and how to install them. +* npm + ```sh + npm install npm@latest -g + ``` + +### Installation + +1. Fork, and then clone the repo + ```sh + git clone https://github.com/RoryGoddard/RORGOD625_FTO2405_GroupA1_Rory-Goddard_DJS11.git + ``` +2. Install NPM packages + ```sh + npm install + ``` +3. Spin up a live server with + ```sh + npm run dev + ``` + +

(back to top)

+ + + + +## Usage + +Poddy is a Responsive Podcast web application. Simply go to [Poddy](https://delightful-platypus-1a7604.netlify.app/) to start using the application. You can sort podcasts by title, when they were updated, filter by genre, search for keywords, and more. You are able to save your favourite episodes to the "Favourites" section. Episodes can be played and fucntionality is included that allows you to start your favourite podcast, sit back, relax, and enjoy as Poddy handles going to the next episode for you. You are also able to see where you last left off on each episode. Poddy is equiped with these features and so many more, please try Poddy for yourself! + + +

(back to top)

+ + + + +## Roadmap + +- [x] Initial Release +- [ ] Refactor and documentaion +- [ ] Optimise functions and state management further + + +

(back to top)

+ + + + +## Contributing + +Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are **greatly appreciated**. + +If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". +Don't forget to give the project a star! Thanks again! + +1. Fork the Project +2. Create your Feature Branch (`git checkout -b feature/AmazingFeature`) +3. Commit your Changes (`git commit -m 'Add some AmazingFeature'`) +4. Push to the Branch (`git push origin feature/AmazingFeature`) +5. Open a Pull Request + +### Top contributors: + + + contrib.rocks image + + +

(back to top)

+ + + +## Contact + +Your Name - Rory Goddard - goddardrory@gmail.com + +Project Link: [https://github.com/RoryGoddard/RORGOD625_FTO2405_GroupA1_Rory-Goddard_DJS11](https://github.com/RoryGoddard/RORGOD625_FTO2405_GroupA1_Rory-Goddard_DJS11) + +

(back to top)

+ + + + +## Acknowledgments +Joshua Richter for being a phenomenal coach, as well as the classmates I have grown with. + +* [Choose an Open Source License](https://choosealicense.com) +* [GitHub Emoji Cheat Sheet](https://www.webpagefx.com/tools/emoji-cheat-sheet) +* [Malven's Flexbox Cheatsheet](https://flexbox.malven.co/) +* [Malven's Grid Cheatsheet](https://grid.malven.co/) +* [Img Shields](https://shields.io) +* [GitHub Pages](https://pages.github.com) +* [Font Awesome](https://fontawesome.com) +* [React Icons](https://react-icons.github.io/react-icons/search) + +

(back to top)

+ + + + + +[contributors-shield]: https://img.shields.io/github/contributors/othneildrew/Best-README-Template.svg?style=for-the-badge +[contributors-url]: https://github.com/othneildrew/Best-README-Template/graphs/contributors +[forks-shield]: https://img.shields.io/github/forks/othneildrew/Best-README-Template.svg?style=for-the-badge +[forks-url]: https://github.com/othneildrew/Best-README-Template/network/members +[stars-shield]: https://img.shields.io/github/stars/othneildrew/Best-README-Template.svg?style=for-the-badge +[stars-url]: https://github.com/othneildrew/Best-README-Template/stargazers +[issues-shield]: https://img.shields.io/github/issues/othneildrew/Best-README-Template.svg?style=for-the-badge +[issues-url]: https://github.com/othneildrew/Best-README-Template/issues +[license-shield]: https://img.shields.io/github/license/othneildrew/Best-README-Template.svg?style=for-the-badge +[license-url]: https://github.com/othneildrew/Best-README-Template/blob/master/LICENSE.txt +[linkedin-shield]: https://img.shields.io/badge/-LinkedIn-black.svg?style=for-the-badge&logo=linkedin&colorB=555 +[linkedin-url]: https://linkedin.com/in/othneildrew +[product-screenshot]: images/screenshot.png +[Next.js]: https://img.shields.io/badge/next.js-000000?style=for-the-badge&logo=nextdotjs&logoColor=white +[Next-url]: https://nextjs.org/ +[React.js]: https://img.shields.io/badge/React-20232A?style=for-the-badge&logo=react&logoColor=61DAFB +[React-url]: https://reactjs.org/ +[Vue.js]: https://img.shields.io/badge/Vue.js-35495E?style=for-the-badge&logo=vuedotjs&logoColor=4FC08D +[Vue-url]: https://vuejs.org/ +[Angular.io]: https://img.shields.io/badge/Angular-DD0031?style=for-the-badge&logo=angular&logoColor=white +[Angular-url]: https://angular.io/ +[Svelte.dev]: https://img.shields.io/badge/Svelte-4A4A55?style=for-the-badge&logo=svelte&logoColor=FF3E00 +[Svelte-url]: https://svelte.dev/ +[Laravel.com]: https://img.shields.io/badge/Laravel-FF2D20?style=for-the-badge&logo=laravel&logoColor=white +[Laravel-url]: https://laravel.com +[Bootstrap.com]: https://img.shields.io/badge/Bootstrap-563D7C?style=for-the-badge&logo=bootstrap&logoColor=white +[Bootstrap-url]: https://getbootstrap.com +[JQuery.com]: https://img.shields.io/badge/jQuery-0769AD?style=for-the-badge&logo=jquery&logoColor=white +[JQuery-url]: https://jquery.com diff --git a/src/assets/Screenshot.png b/src/assets/Screenshot.png new file mode 100644 index 0000000000000000000000000000000000000000..70e860094bb5a8c34b5bf53e8e63306be4df2692 GIT binary patch literal 1709069 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

4uo4r&K^LxKVvW|STHX@ zc|-TnPrdOrzT^6XR9Z1Lj_>~M4|nr#QfNN%zISrN@!H&VX3s@uikSjmuC&Dql)VnN4)Ov8b=pK+;w;rHFUtZO=jmFV)yK`EZy@y zh7hH{bcyDZAAi|hVjuZB{^CXCp+o5tfl=>ZSbzFY>){8N02lF znL-F0*|z8d#4|fIk4I}-X0sX3J@;%^4=DvU(D@QN<(eQFk0;%keQ{xdW7i+0ZCkX` z>`td_ZfvozxWK|>!t*b@5L599iSsG_Qv%bi4LtnFqum_);upWrDaSeQ335pBON_|O zfDL`$$oSnfk&yA|Gmi1+&T-&C$@vR29(&faZ6#YKP!niEz)MN%T|C2! z4Cc}U@!jVktziKkJ*r#9xt6geC17E3#QNqolk0C{feTcs zCYXo~U&E3FAnD|@z2}1;{9pv^^BDRh_3eGXw}c)e98N)M001BW zNklUBeQX^TG6g_JJv4?wy}@>47isTTxzh;P-0}pT_wR9WFw!xHM*GcShqq z&$z&69(ah&_3fB{G{k(d*2Y|AWg*$w+2zxpcnGbElz>?vhQME0UB*+Wx-@Tp|zGm zDU1iH7Pv62VN{|Dja-(DMhlFkpiTL4-O?&yYYVYEW26GMF-TydB*9rqRnRsyZEF~h zHL7h{2#(+z#*+v}uGfZ!fF4hfN-}c+SvQ1qP*E~U(3V<(5a>~b^p1A7My12O@i9Wh zS&yfWqzXddM07qE<0`ROlTjx^XUJO`bl%};nSz!<$ z6!pv?3Pq5rOMY&%1bJEFeasbFH!)wZ%f@g3p%mU&gmt)7MzHR50ZNMQ1tiizP?aUq^A}lv;A>p>1Mk7_oX5LuiiN|-YDCkvv^GZKner%NbTH)% z4e5{@2*wb!LMV+6Q{ zi_#jQHD^9G<-py6(L&7MAtW*3y@X;-VYMbytEkB>`0;CzVu?_!5vUN`kK)W_ycI|^ zT6nxrh;e~vrg%KwdVFyZu%!^|31?zo-R``^k7fAs(G z^auWs)i>PEZ6}C{&c(A%M^&N(y2k2}?M7H%b)|tV#fO2q8+3 z3yIRv5R+J_*D=iuIlGJ-A3;tI#kmmzE`T+zizbv(MEU9vVxWVIFJ5C}&R#@h!k1-% zvyQSVFe!LLCNIBhv!tbpGSO{76|s+<@AIEXB|FBy%~DA|#Cj)*)DU1a9ua(?X=1R8 zSU!YUSjKu#ssN?qe&{1Zwpl)bb`8?bkmUsH9A#qizuKjDtcP?MPWfr1WIP@x&>~6E zBxb9%7Oi?fBLZxWoIfWULU}WDKv70H{g@VjbZ2sdQ-W0l<9t5#;B@ zcexZQ-JcG&15jZITn?o{_W~&y6dC?jj*^Cua*HykM>G_oJX4GUjn{fdLyO&(TmRhOAqAlAW$q1uY=}+}t>r+vx$mC< z9f+Tq*L!7khtHQ%q9!Ajj~>R5;RY_wF zb~}Jj_w29} zxmV-A2PRZ}j=U1E9|lJZ=gZvRmBbTJG6vkOpMI8ly36r@@L*qSUqkcZ(JkPzo%(l2Dd#9fe zA~8a;(=dVSJ}Ss$quW}Oa$ZFTmR9{b%iw4lS1ANcmUtIg*>_p;f(060hekqdI+u5zIy(1nw{`8H4mmk+&Fj}H z`oQt-@B8jI|9{KC=X&nhb3FU_Gu-f+lilTwmtZ8n+!6?web&sqYd2th;NL#>>{Y+} z{=07CpML-StW;(9+0Wc}J8%3KALOyiR|ku0W4W+fb98aseJ0Ce*x4if`;wm3ytj9U z?&#ocVh5+7s$~BRTi6!~qu0XtUWA54l2@`WuXL1uvr9au^fpb* zTN-<3b90m3=``*&DaT_V+H!)-m~m4lcAQ0bmA zZwC*97`uCvF5m0TKlovSc0S@CCSTM-pnc5x_ z2%Hszx-p^$ZF(?1cT*foGFYDaE?>(-lXGtNszN<;w$GbNRB!V6uMtGG&Lyl=u(Pw> z^~rR)!}$y6JK!dt$=5e769N&N7@Q;W@5W$+)c+wQj68=J%m*sx&t*Excl!Wz^FxYg zqlrCWBWX%^|4zTNXEdU`ws*9~c0M7Qf^0+R?W$};XW+DFwk88K^x%93Zo44)!V%ey~_k|bfLRo)0g0Iys*Fd6#mB(1EXcF64b81AZWAn!4}j#P%ic zaJjM}GEzeb2@@1^>%x1_`Sa(yaTfzyGMW+r3n&EBydK(k@e~jd29H<1>wI zF~OsRq-|=1Qaso!v)yd6<7!BO0Z~P@+s)JV93sx4V~SRxB*FPSp}TwY_~cbRolett zVRh{Q#u#R^X%`^jp$n28Djd$)@cB0ezBnNS;xAM*Vssq1~ zVWSAf@W#7u;!9tCl1gcO2#jUm)1UlGe3|MZ=4bVeAY-R)?lhDVin5@T3S%s-9XPqA z#9G5o{N?v@_Uw!Ni{JPyiekh(MG8&E0D$2D*$AUmQ&vbW(AQY3LV0Tu> z#pgZJ7@V_=M+)NtJG(QajJY=LtUTHl#sxx>Rz}2(P*N$zqmt5jws&^XT4J-5n-EB?2{JMt8yA69RTWWc&^v;2NF5JY zwvC{nmMSH>mi+wB{Vo31-~L6s7Zj6e@!`S3?S#jaNfsn9~;5D2LvAdZhRid9Kj6nGVLfrhq)plFR{X<>|Q zEk#w}Rb&u))8HIvr6@-wct_jBs4p!7!Nx;SS(HctRjHZTnzAU+g^rO;QekY&Q+=1; z;T>X~kGLazt%*)oEhNts6@`*W=Rig$nI~X8C|yxVP;G-$fz^7Kb)}h98f6W&aV%6N zR28OeD1>0#%&=8KsTG9{eEN?+%v;}fKjT~8fE1GI@KFxjemmzr@fnW%g&$+Qv>Xpn z*3kyjy%=SxOS3)2Zal~JZ@U|>3yNxtV+rbWuy`XvIdlN?|b zfC_=@-&Dcj5OaGM@i4@A0k12=U|06}BczlxHP4Q+}O6k;3M?qZr< ziqRsztF? zEqdWFu2^7HTAVi+FXQ+~!RmoUyz?=SbclfrQVN1~D4n8BJzZX&$o5S@2{AZEh?t8e z19us4&`JRcuXJ}X7sLatBO5aXUYGGj?qkm52>$jChF7Z$*`MCW)CJCG5GJ$8i20C` zu^fTYXkaR-ur{;$Jat`n&+VCIil(i*vB|)l_k9#?G+skzh%2Q#Lte_>xYc`{c{#5r zAx8G)$ln;`HJ^8OSn{)nfY;Cfglt4pRO;J+MGJW9!&o&Qo>a8Odt~=bVUGE(>jlcJ#`HRjLjB5>nl)7VuN)^X?xYlFWWg|5^QilDIB-xWQ zFfytY&bMj4#P>wrE2Y$P^D@>ivr2kUvs;Iv4{!;7kkdEJGjv0kulI2O2>7n|USGx=S01=t^8E^?iD7IUs!?8BbHAL1z(Yi-xgZXI{?DmyGh$Gjb~ zdwUQ%2eU+gG0WNKVvIpb#p2@9U~h~*%LA`l2& z3>>KQjsd!VMdw7Yo7l~d!|Vx)mG44~ZiVSrQS}$W@A68V_hxsCofn_q^XVDH;+q-Y z_}+cLb8=zCnZ(jnQp_`LQ;`f9cz%RhI?U{=YZoa_x zk8bZTF5Z_b!T7`v&wcL`7oXxnbM>6EN(g@Wu79ulcl#2O+`7={LL-%&+wWfvSS*C# zb#Hk+0CI5=$`W1y^VdA|Abw*5xw?AAHNUkPHSAwT(Ngj=_uawI+;;~v>-gHm4W8SY za=C66->+`QS2(%ZrQ`#|RDM}W!FglWo&{MeTsn*)Bg z?X`j5MO{%zO(|6usM`j2#h$QVsg&lg+;|_xd!E|dpHV*gLy`zVI57`Yh0vX`fx-JaUh9kw1R+NH_t*2iatRjS4*J-Yl?evSS=jy) zaF^)M0)y|1;WNL{^38Eg&)E?nv%BE(<;&5@F9ZVL+1~Mt5f!|gvt58<1}s8|VL)WG*<6};Aq?hf8m?|c=4|S0v-s{z zFQW4Za*o?>+*3U>2%8?9(OZQ!w_8g**LUuvZ87NI{ z4Lx|-*+W901(X7skQA^?3akx*Lcj|%%O9R`tSl|?z-EI8ZZ42G*THvcL4nNp?e?(j zi^=)1eIQ7O)+5l8x}J9JMI;&Z{9Mtin~4O7#uEK2>+6>j;GF$VB-U}BGa0-m?G*!m z-(a1^c^b!R7;pYv}7u?eAL2+GldkZ0v5~G}b z@S#5|gv10U#2nOv_fyE@2PkLxpFZ(b7J!Rxz&IxPKZawH+UruDa^Jl>;=txLB07ob zSkE>Gn+n0^#$`ZuEP1JjlFzAq(chF?m-aIHy!3Nv+d@cE_c3j2+^<6ddguLBUC!fg zQF+yY--XG9ooNjOzWCtdQR)IHWMFM&fwR*o!dScz96h|kx$~D%vY@I8Oe4_2%`K7lHlINQ$Z?2+(STm^LUBbyG*FWGykXI=(!-L*Y?Mpo3uTz%pB{ z!8(Ifl4?A{d&}a|67PB6yV=;< z@E|sXtemhb|wv#grvK&QFCA}Q<;sT?a?_~GM&vNmx&r=*)LTQWi7BPMtS!l-P zBAchrvUckc{Q7B>u(-=#MeZKOAGm=qK8&>M$fy1pjXzHvTE@D~u0R~T9_J;(8oUp2Uzr?5 z5Sdaj-$Uqf7%nc1F)5dok||Jz$cz<2pbMR3PbBK_Ycac1!g!IfK8t8Cvc0*5ET-%} z@_E)De1x(n5y4|-g7MM!*uoT(u4E;%W53oA3+Az&qURB7uNjK2FdTVtNT3ni!C>b{9g$`U)2%mg7r0 zzAUp;b7YSdNJ*DZW;_|;tYbW?*qP3tm{0)qlV3rNo~9g6Vno~O5$xnvf^#ug$i%#< zWmV85*{&=P8wgZoK~8| zq*aF?lh(cT?=ZqR*Cm4oL#JQ4sG*cMLvYcy=_dY2-WcJ`d=9DaZsuPF=*0mjI5{;WI>qPgw z%#MR$zUFLD^iGK$=yF%IKi{9r5L{BSNX{jX5IPxENoso!P&4nmh`@?ZY87)4)#-PJ zAX%0nLzvFl(6?hA(C&Xj4CdbcBi!TE+7x5*feG`+>(VBu8i%B<#_*00e1!GZa?8?~>lY`y`TB#r|E^PW_l4OLH0zN8y?FcIn5%!NYuYb- z?yA3Wwc^g7BN&4y``|q}ISyNoyy9nFt?1<=9DM(;(!Av-xbSN~e$70s+aLR1SbE!k ziYO|6;>11t^1~m#=CgnE%;)(2BR%k|7j9&H@<(wykE2&^pS$-L9{$iZpY`SgH*(Kv z&ls(Du07Y@@`K;Ot#{vw(t~snFOwxKq+m4ZK}vP#Fz$uDfeP0s#<2B|{voTs`1h|w z>xwctSg%ravG2!Yt+?;#LGC*`FSY!8k3GY)=IVg`zkA>Ja>v1y4)|3sVG#KGCBR3u zfBjxoc^Q45i&T<#|MYtp4;ZcxgY?UxH zx%{%qHwW0gW(^Y4wF8=bAgHLMx4OE@<;xc%NFziFSj;Ib0xsC-WETQ_5Bi1_grr1b z#s-=3+a5Sb=gIM8!gRXZ?M>0O+@Fz!5QFgpM1O|KJ`I7yg{WTVLR6J<-gWQoh(9I{ zU;;0E@Ze2+s0axt=-VhzsaJA(l?cAb+@|#G3|6TWFxeFm6)elLq^alkYn6a&NWpi5 z^Q&_a+{_@$sZ*z@>zcDKo{iw5j5%n#e4`;GnO@6E@cfnQJkvM6iC_QVM{xmU07p&_ zBU5m*%V7`Qb{vnBVb41v-$e(UWYE0>J?Vj<;khz+KgYc7yCnyb56;Eu9Nq^4gnqE0 zv)OwPI8CO65fZ}SXx9h8W&gwQTo*yQd=^gj;G)=Ts}060*DdA6l^MwH z&i-`3dY0)AbK|hW>OKP>jJK0ti-$xJDk6PNM0n5MdI(!{Xz03CY?iFMc5S=PSmh)y9AP`bu#kbIWebs?qB_*$a-D`R3@y9Vu zgZG|7#(Y!HKl36&1g<}_%Ek3OfsBtC(Z4Y%KYCvW+#Z)Y?f zm7{`c&ShxAWCbL;|gmX zg|iew&^9eTM0&k7h9V`;HpGKbDK*x|{8K_I6bdUmLRY9trx&QhH(-5#AhAKxwl%lj za+3G`_+P?0$AOgzr%yiv&Y=|ed|VMksnlR2<3&bh%V->Pm4?>#%&xS#I_J86cSZv>ej~J6%y+mCctQ6gb<3h zZYWC~bDkz3H&}-tP$-RQEzVdfB~dE9tQ@>(Ev8BG)>2Uj&tELpkt-)rW=e(SkZ(CB zN~*HtShK^kQ%R5#Z_{B#L0bou^9WP(xQoo>kBnET1Qdz+v^^P9$_Os%qQJWlSx_NH zwUtuv)Z?eQ<+j^!-qUQXv;Fv2Si0j*ij@^EKkyk2f7`e5><9lX)#2+|{kAt_>upL^ zfl@TBMT)@IqaWkh4}JkZHLShm4#K2jT$KdlP(tH;&2_gOC3r`W(Xl)(E6naQgy~ZV zFA44fmma^2X_i?%qG;_7Wm8gClC>k2XFdtdrsLGjf!R5WUYoHx5rk4v*9Gz@)V@Z@ z_<}Es3SBPYY@js-Im}Ur%tM}f??wJ>up1r{2zzWT@Av6Y8DsYa~n{R@| ztX)`HLhbBw_M;!?!lypRq5JOU=sVtlSUrlkbed4tC=n3HUWc(Z%0U+eRvbbog=t&F z(v3(T&~7(MiwjGT1wkl`wNyos+8HHrvaeIhnA6(W#6%U~Qr-n)9i#CWGn?TqKZ7hs zgmQ%S&{l_7z_Bv>8b+@&^^4fq4ipt*TSfkXfHmDzhvK>ZS!l z1gM2#`ozP?s$z1(jR=tq&Dh_O-5MhaN23bs9L9OPjr$x2?nETVxh_ilH;IuHjnj0H zR)Rn;Wt5%v`Ec#iUMYm1GhmCN0DJ-zqGWGT6qu&&j4J5OsCd}P%wpXEJ2{#+vb;oM zbw!r3?7+buWXaK(@neM$G52N$C!q(nh5%O2yvu+RvHf!(SOn??D#^&F2teX`i=b%l zobtiZnpxKu!vpaU@Gf+f4Bnnm-A4*12SWN?fuJZx1A}u2q{KWdS@I{#CiFuVnqtPS6$y{Ng^q8?$!)8<#{3S znDqO-<2TnY_qR&pB(?4gyj;&AXe+X#XYlV_XXjkUN*4Qkf9^K{ThC~B>nP2v1nuS) zv#MmWw!&y}f^`-xqnYFCmf$U;l@*G~7`$V)vx}L{P^Dya_#kCf;;h3Pi&6!mC~5pI zt*Hsyacx;+VJLGhqT#EHf^s>kX1K=SnFqvj-RIcQ;>t0OhJBdxZ(IrD&&v_TIU@*C zqO=ADILpR!FEBZJnB!|}2qi%lX-pkLhNQ@#P*M}T>Gl*UG)38ub)jX)a?fjLKfp21 z>0ya$E*n`Xpd~~#fgtkSQPI#%#%aHL;`=suNtU1L_AZf`;~uRGgz9q-cl8WCn>Rav zvLj;H-(3!_kb@6o3g+_B5GNYwQ3)Wibfv&~b48$q^g5lIV;kmzA4EKlX{GUgAe-+& zt1>xC2V*V=#;lNY>utEU=N(*w{WZ&0iWoSQQyIvV7Qi`kg=BQVbzn5i=O`0G&8^*G z8OlLRDLN)bye~7O17$HG2f%~?N)~gBj6Y8$JKGS^xiZW>pP}9E#t!fu-oen{2#}H< zjj!PRGQ=YJbLxf5BPB2>4+>|td42*R%qf9Z;%s{NUN!R)a0rT?1t#gDT3=3k$? z*0`b53_kt*1@1dG4}$d|c3*z?(P#PHN3Slu+B(nc53ODGx(|UremdqoeK39YKLFdt z^4IRUt*=vgYYZM3AEP=lFY`P7m;aJbe*-eJ`^d@ag_B%68|YO^@YlRtow}dve){(~ z|Igk-sJHj8&hBNlKmHpmzvHL4YxyW|Id~JFzI6JE`^KtZ<_!Ppxi9mpcW-lDmE@j< zV(In2!0egdVK`3D&o=jc&anLD8|US=bE=iAm6by)OkN^?^UEz_X&HD0z%O9G@(}KY z=TXN`%s-1jXsr)<=1WXN9;5^A0k@Ge7pdng2{bQTu(svvnDi9KL+(zz+OoA4}gZflek#lx-Z4}}PR%UMY6Hh$e-Ix0w+r~3` zs+@BXYke%B9=^ zvN>>5^fIvCcVwR2w=e`h^E~QW+krs+U?+?yjm!MvPmIhifVR)SI}iAZZk*>p!DNR> z(K8AI!~onpe5AP%vJD=A-LfocP21NxgcN)`Z}ZWe-P1(v=KZ`KFtmR{QWEmkBa|XD zUbF9hA{}?%P_kBRas2oR9(wR0PTp_>TU%REofARpJ#|Qu43LesX1fgWqF zlqLk*^+&d0^IXh*+w~uTLkA9VdHph@(S+sYWzL^Fo7#|rfpa^2H$R4DuRRQL9E6BW zQI%}IPR=*a2O;|T5k!}xH~SPq0ymYA*x+fJX6`rhby-9|eZP<8QA~3#`Gz~`=)8Y) zj9$^@JkGg*gAeHF2cG0D<^DU6fI2 z5YgvF-sc@FQlI4DjXZbqwX!T|n>N)objn}>7>y>>^(^XQi+EOxKCisb#6NxLEwQ7= zuIIqoDqsKli(MUtfz=@dtTAzP(;he6VxoMy+qW&>tn#W`&&FDQ^8G)|kt2t&-m|#4 zgtsvdRVktj>ZOaD2;lPi1{c;hXq`h8DuT5xI-Up~>uqGv76r0UC@H!BEpGx3)&-Oj zyz~3si5D_OAbZL}5WFQA%czJOnz0r~pq@<$re&l8(ph8(@pTqL2h`TH8gCm!J)@F> z#Y$1g7>QkK&%#(UDkZ@=s?jJiKdi;JhLKjN;3<@3JTAEHwYTwK{rrEy{cpKHI;nI7 zM{c_HW?ui6HzP+Q&hIpwpVgc`e~BIAaRNeHGnRp|gpm@gj0;K`b8XeNL56^}o>?8` zFPg^CG!2cl%-WV|J&O|A=_Npjj{YparmIo+VvtG`(o5+0iR(Cd@)$vAq?G*9-~T!O z&d>iWM~@z+p4I%vKly%21lE|CJl;kYot6bsXSt`S!9H48q_I&tFtTW(G_rFpZeV4R zcL8vLkyex+ZXMf>;+X zVif%L&J>#%-m~e9W+zI1S6Z?-si;atRl=x}jLOKKHjSZ4`CCO0+~Hb$kTfX1TW%w? zrg`BEO(tB^a%(al?~seyBkRez(8(sK!?&>bnv*Qwev*U7Z(wO{iScAiQB~+si7a)>f2`2XqMd>5 zEzIT)N=nZD(Py#Gf0?D@3#`8BPUOnXNU=0vANnZ8mp{cww+W zhS_Fx{JRL&mA*z@dW`n#fBb5{UVA`J^)fd@2437E2YGOV#W~Y4Ekg(?zv7kPS_m;$ zXIYlfdFA{SKxk1E9rHJTpJdP&V>$+L2mxc;m`ljnxqP3wL}St>K*P|SC-QsqpG@IMh>l;ijT%umzpq}ku zni^>xcDKfCPw`FL8TEaDL6i=+CaQ}J=j|M*wr4D|99SpI8**;2FxR(3hU(sa9Wr8- zQb-+h8SARTTgTQjXW2P_2_a+t+}=ozlFT}>@s-l)3@PS7zoEQ$UMoX6;9(nwvgiF^ z^+xqv%SF%9&k6@o?w7f}Oo(~*|L`}5vh;hwPoUdF_kM3UuZI8bKlgEs(km}ygE;rc zP_8)2{FO+dyKDQc%iK3vR&coI4Clyj-9|@7uhuYM&;I`5KAP{b#?rR!+;^4k*}z(t zC|RJCzGAN&wlnwTP}YA~k30{D^B@NaW#D+&*8XhNKV!fB;?GqH+1Yw!5mF^@MR(Yn zck-q{sQ9;dW(h*{DZv1IgPVRCv++mR*;n!U5U#opFAfcV>5AVjCJU_I{2G=|+{E$? zH&HAOz?R@C^w}%EQ||$IhB-2GQQ}Ie=a(v_k{ldWFMZ>l^6#GBQ%5yH6w8!H-r6}~ z0Ycl-eC(sI`1t_-@@4Glr|0W?-FJOM&)T15IzKnc8{WXu+kc8{b>j33zY}HXfdBl~ zx9*GY%o1xp1jj#q>`&*e$?72E6F)Nd*%vmRyJppw%LV?UllRVjw!MCBX6k72%E$C- zMJ&B?FfcR?v)}!lp?5z%Yc#qh<5v`W8MUEzQ14Uhwb;YJrTUeDtuIxCx;ii&+_k~@ zYq7~+X<1rZ;>4{dUh=*tzTC5DFSPqhFz2%R3Z^l^2VnP4d(d~k*UBsMA-}}U-$Z|Obgd6;rqoAG+w%C6Po1J$=%fy|ukFAfC6S2!C?zG!Qu3W+c>5R*sMO~IwnE^+?ShBC^kv$%9oVS};URRv zg}J|bP&CUOCrMcZYX=T=@3;(e{+>a2^KTlS>5hxw)RFN3&LBte}LL}Qw zrd-p`CI5XlO(C^yIFGw-5d-D7?pkbX9!m%@RYQpW+}9pZ96dPV^5&E;KK?A{&!6L~ zU;7%y#C2$c!-;^GBybUCbyRs-T3$gak%%86GMooCmQ3g1xOQ?dJ6&JkVKl1n-ZPu+ z5`0ok3_hK)Gbk6*n2I#-lP#C+g^+^vb6=&i_t1Xo{Ry!@g3r>$sdMGfj_Jp^@5{92 zQXcZWj*Kzg)*a}7Gp`Z4HQ(Eh@nbmv!t*4HZIkKW{pTX4)RdAo1ljYsdsChxk@S%pB7$IV+PiONdDVZ}`@qls z+^<9iq%Jsq@)%D%{5aOMQDW1@JZn>Dk=2MoN#60@_wcb#ei<*KRGMoV0&zgS^~h3y z@!a#eJGkNG37V#*&@o43QEKGUGIhNZnWz#%kW@w+p^!y^X8!!GnrYK8D#tXzL1L51qCm;$(3{O>hyYqfpra}xpgC(=-uAAy zQO}}0uoPJ?Pg2(nKlGlz$U~1lMY~&LiV?1CXlzT7&W_4D#v{edIYLv@v<9go`%?sk zO?kzFHQ-~^M_bpFN=B{sB)L~A!K51DrNZpCxYi*`f%XnzJYGg7h}N1*I}Nj)89`~@ z{q7&&*s&v#<)I|H&=iH{{qO%#e)Bi~Rdi+pUd0@_Qi_=4(g(^>g|&g!I=oakFAxNR z6eus^MvjI;(liZ)RNw-5OI4PbbjTBcO-x%|RJ0*3SFH+Uumq_YO%%aeq>6coORZTR zl^i&7lzZQNKh7qZ0T;OQwwoFMU;j4{2*w}@NQ%e?RFYX^a3RXfS?8#Yrxu>ol@dJ} zBXr5EX&9*(jG#-6nKl%vpjc42dIkn&HqJw9Ev{_|F6MAhDW{tY0uwxsIYH2YTl_A! zh#AI3=b6Yddb;2TZ6Kjz*%+Lo)n@BHkcs?KodH%o6qBNCF35QxEmkr|A!jj@dlvD-9lPBtSu0NW@)Y9CNxm`Q9_s zu=nmi_TE)>&b#kDVZiZTOHb#Xs#CRV*PedA@9+El9WgmJ%h2Ni$@Z8(-)-6Z=p$Tz z>+R^h`?1b(;PrR$;AcO_na_TX>wfZQFk7o$V?XU6Lf${WS+evGyo}EG+=MAM$&Y`L zL@c7DL01LkR?f;3&#~_{FJ)YKHn*w92wRbelKkv(R!^Vg@a+qX&mYH}KY>1U8@N7a zUg$D+P@#(f{X>e)$43k@!SV^k4Y&DC@!W2S$pkL9*mD*=PH`s(m}7!1PLP~SD07WX z97=66JM(^uZ~JjH(Chcu+OoLpFqx_-Y>IRxPFn1)8~o;V{fl%~K1roO%-(=mxCUc= zkVn~;m%uN4-g)UawMZY|;2b_MLduZSSH?BbFJ=MIj~hW_JfpKH4Outi><53Bl?U(R z>Q~;x;!=-dWtnm_!Aga!au%*Vz~Z6ZY%i~~@yrW|k;ROMbUO+8V2m5)j0YpSy^MT& zi0Gu0qcLYcb3YqjeU{#VJsf)NE9f3R#CYZaqC1B%&1Ol}z>8N5kO%JYQEAl}l{C^= z#@IR#q!{1XxuuOlrtDNRM$S@QQt`p9wvP^f$bEgeFo47Lg!l5TH_ zOwUqoJWJB);pSfgS%NJf)e2WNQIyU)l2qgHATKzC@^a3U5r}r6G*)TkXq^l9eTYtP z2A2=$z509Ee)e(JKlI!5mv%AUTxFq~vFpa8oOda6-}z%~-}e!C>JfBNP%K|yxG`WS z=j%7J)J7TL8M7^7fb;v*%0!845oB+hXimV(cUzxh*Gm|i8Ypoh1S`b6EY4!9n6EdX z&coRPQB;tEnwBJ1O8b1mc-CN9m|8Nq0fq$8!yS#2_Qt%O*Vh}b3KKSVN;O7X8)%A5 zyd?3`vz7JI)l%ph&}>U1o66LiZE!VETi4ZA6JS>~nA?Dqmz9nV2_23%jsoYR%*-U4 z89=LK!mv;QAc}1wTXl>7%2pdqfP!w4H98GswVx|Wg|&kSVwnKE9CcJ=j7V+YTL^_W z+8U?L#lZFCxM%}d)1Xxw+?7#6X9^r`O9jWi=EIo`8-h-v zlMdvT1Mk7(!50VyQB;A7$o^%$i~@oe!o*yA(yxY3BuSKpaE}K zN$I18>u0tWgN4dVB(+v0-O!%ASxm0bg1%z(u989a$dCCrVYB;;1P<> zOMpZs3@x za4rIbO}zvv0GwfN7P6iP+T*#&Cmybk35?{%;UYtzM|+-_1|DNyX*;`i0$|&HZ@OQ` z+_-*B2>(1{@*Yx3q|X?Q!>{Mj`4j__yaTap<`GkcJmI1qo2BsqGg>DonV@w_bR*Pr zB+*Glu(_MMSEi`v6e*JWdE3&zTUC_X4Jc#n#j)UP#U$`MlV0pLP{F4C zTFT9Pd>+=VqGUErSi3^**jVPL!D4H`6lD9~Jo)wN3U+msOBMano2j1o>Lrg4e(N{A zWN;|yo^L_*uD;~?mnwFL{HE&<{;$m6`AZXX#r&Ipit(c#qd4)%j@L08XL0!!qPNJa zmyXa=DFbuqHv7=&NBMij2_Pm+So=G-&VJ;8+?pz#I zevWeeVY>Ui<1g_0olCWLc~-P5ufQh$8p~DJT*dJxk6-qj<Cdb?S|H-3WC0+uHg!A~5P)=nDer?^T0DGT5Pt zsw#J^A>sb2$Tz$R}3QHC0(PB{6;EC|*z>J9wk^pq!2?w!mt$ywO363|< zI^ML$k_yMQYm)b`NCu%Ezqcw#GRb)P8E@bm(;d4VnNI?+W=AwG~c5*cJ7WEhmBUiw1G_3dC z{;<0!XR)^dz5R-7e0|e_q;-C2>ySEtf;f;W>B%--&-~yBtithv)Mb= z{h{@Iv8zNlP6~mLju{QNUpIpQ9zQu?Y`jeQgq?wiCUxB|2q=miV=9)G_OP+OMrC|H z*0#ib?AMOKxHZ;GQPb0=# z72&9C-m`V4o^E5?#_LY>R1q2bP5-HbZ-uBO(PMFOXa**HJ?3rWw`u0BFnS3Hlz%@Q&dv0{jwYq}C1>drld-ijd1&<8~;d9EinXJwOxF*i`bzW$H%!USOyihGW zEVAlx96We6Cr_Rt2CfQ37+aCO+iue)C$X=;3yQD7ALfGX8K*cC^8>ehLc|~n*Sf5) z%lg`Sm}e(#@WxjVz+KV&{34S@;?rl=5X1X|QQJKP6i?EhXmhrED;h*!qfAt?&Us**7h0qDk8lNm& z3q&PR#^IbG6#`r3ka)=xZ7NJr`W!il!kB_gf^Y^9UZy%xVeu5W%FxR)TqYTZ%~w?v z2qh2!@T`gwk)#|vu)w>%>&*;@Lk!JiQdNdmzVZ$}_R&vr>eM-OmLl-cKFaD>}& zPG$TAYAP?w?fZqo8K38?s0@in=ym&8Q~5z;Eu+B@r4*@_6qQBm6k{C4xWI6}IBg;e*_A&DA{jP#$&!RhDO}dW8NtX{Olio3m)ce#XDiNwN@=1g^PHsD!zKxdQfzK*qtgy_ zB*i$#nGy|TN}#Ntki6WT=8gOMB5=NW9Q zW1RIHmU2k{B}bXR<_Kp$b1zrF;dQv#-J}bPR91wD7K_POKre>qHpkXio@D-2cY6sN z3&RKg8#9NOII#FKtbnwmDDyF@+XGvo@XvnpckE%~^eJZMB%(WmJ^mn_BTMX)rx4O0 zXJD{yNsd5oBjNB-!KnuebgH@fjT)&F%I9-ZHP3iFL$BDy@fVhvD+J)Ba7II4y z&hY#n|2Kx41CHGFQZkn_JiU!VvAS}BwAUj;(8*HPx3);S8B58Kwe113M-FoSi4zRB zhG?lsaC8M&DX~T6H`%4ZY;1D=?0HV#_eExwW;y(tTiJc{wNyuMr(9n}Q8KD3x}6Tp z?nQQIF)l%<)Puf4P?i-+O42l`8MjvU$rA5K)+*+)36Z;M4ygrMaAvD)o?PFFvzE%0 zB;6rtwSpb3;+DV6IGIP38(1WA|8*4UA|#4Ld0C|@vre2T^SMGB!P$7A|@nDMa}C|@{FaeBnbMI)4y^{f*y{M?fI5Wut@N z%UCBhz!#nRZBQoGqaD>48NOO4^{%{~TeAHd75as>lfccz5!k-!Ny}k3&5DbgJ{4rr zMUYxH#;Y?#;HJ&m)mnqFlYi6X*NiOu2#&WuPk`Xg`5gAuq*QD?zy5veaoP@!=70ze zil#JRx|(R`HrO>?+Qw_VM;lmggUW4r+jiNBVHm$}-lMJk6Cft~o&RR?deZ>iPS>xW zfky6Z`ne`RKIe`5Vs)LBlc$gfX6EO}dR-4PCWBXhqiTVoKwUnnd9$OEn%fbwr?(6xGQP)EqQk2hdu17Afg6c*V}jIr%PAM+E z`23Lx(+)Uk2fVcBzIYG+t|Ra+CYagN0Yr5heBC(?zpL4kQ$kEAjstV_v+el93HI?Gx^JlbV zt)-B=RqV`y%(4VpO2z$DbL*Z3ZrU}^&3hKu)6Mu#4?o2Nr#$oSk+m&4*72otYrNsm zUhhzxYOB9?(_xg5-j1yU5KN;!sZ_ja&-EAm zZm@ZI;J4GeJOKB#6tlcDOY@4wT1J2P`y~JSKdZkIN+YzsWS?l~bN1ILG2>HIgJ*D< zi-6zqN?OlTC11Ih^~Zk}=X^lO*9!a!eHkY8739Qie))HHrQ)1HwDN;5?A^If#dW|K zLseGT%AgX>>C5CVPF2Ee^7XUCzvG&#`S+i{bRfs^jR80Q>W6vzH3#^?n~w6{n~spQ z_SL;a^Sw77=6i2EeA)X{!zaLc@TRJUew}krX8_#MqucB!34v7rF6IWFc^l|`FnSE~ zuR^s-4c^qhZU5cA?hd!Q-0@45{{fC@hYw7~0j&Trzb6n_ObrYmM4i^;qCin%z?!Us zk)>e5L+@NrU~}F^QPL~MxBw`4brnzkncOq_Hh0hjH-)v{hW$^oPYIxYcx6g^P}@2e zat6Bw*b#xr>8xjG*84Wke2n|W2pIckh|IJQ94P_>?VR`1$*7Q0)wV{gj0Zs*kgwh= zi?~aX_;f%Xka9%X+#pGfL*cl2*0R6jP!e8&qOBPFfee6I zsB!(S{j<1cFCV)=+y~=orYV9Zm0`;U2o?43*qQ*4in`tt`ADU#gFlHDP58&BVTr*6 zv5v0J?HlVH-#0GUW}=bS_V2$rzqZfA4Kw3fpbvr4u9nIFrV5J2T(j+V%IEvwz zH0?lMGAc_Cs3?uaFIY1=qe8Mh7%Wab6&$KugaY z6~afoc95h}f`&w=?B2ZqxFC-JMN!}!WT{3-MVh4CeCy5J^Qk|l;~YwWm0*>nEDhaM z`^}6KNFmv~xX9|TqB13!GZafs`%L=I#rmDyi875&tVZcd;aFSv$^pYeY@<&UJ6)tR=MF=GD%J9lMus*M> zt{hn+Nzx9*_Q(U`Hs@7udowsw=Lj>#QW?wJzU%G$>X-fvN!sy@mhDYMo+Ff(B2joI zmrD|ikmyuW7KRkSTC9O;oTHFFQF>XBTSuxTqr#G<8mm)^400>5rb1;2&g3W@gYn4A zG%GK=y{8zGojHjOdEJ}^rM!%JRavYXQhenxj<^B4Itwgs=V&MB>Xcru!(iZ(jaLHD z8lfawN^E$qV-=j#!ciE@IRqpUQ5BqWj-=P&OT8}Xa7>2f_;b&5<11f-Ek~rCS@hyT z4!-rRJn^glFI!K2mD4Y*bK|?-iJF@yNi)jIK(f2uU{;$Oq%&Qg?b42s!Z3Hs4aj7P z$_&t>bD(;R%>vJU;7_>iZ+siWhrYpVElgQo-$Di0{b7PxZ-YKw~Yh-hRjq?@5 zHAS&nGIvx`ZVMLoXu7v|DaIA$xQkL9>~=!hKZMK;%U?alVr5vkYB$>}TZ}eJwnW9g zt2zuXC|>x*_p$qb`A5tjzLC*jNZRd^giW{SejYd8Ez29j2@@ zWa2mWqft(lCRl+7ZKHAGoX>q&7PxYZA;@i41IqE3_2Z8rjbeU&4x7!eT{t@PbCj#+ zNUDOe$dMaoIQ^w#yzszR*>_|QyLWe4ec%B|1zp*}<_6wI+%1))C=G;sj5aXdJR8%ZB$TCR ztt%x1U>+D@qRXha2eMVqWR>%D>?UR9u$@J8h}tbHgAxw2xeA>QI?XVZ#VODD6(J`K zRf$M6)!Ac+;R?1C432%3?s$#C+BPR1ILk}!x`u9&aps|~AgsfrDTNcLPLJ;HCEVs| zUbz1;wD~GCnI=#DCS+VyTv{aV8(A7>fVEzJyQ+My-ZV`^^qmZnMhc&oH{^1RY|qM) zq>0aQsx{MwXEX>*0EPxghzzd?iYn>v;es*D)F!)K+JI~g0Aa%> z%uaw4ZQybzFfoD!9&~8Sur&9I&k=!NA^cifRaL!Pl2T99t9}y!%qgoXtdBnDi*M5g z@bFBzCNHm)5^Mt~O#@Et4dPBlNxV)Qz@9#*k-`=AGqz=3+if(_)>FV?yDrm!Yx8|{ zo~YWPGX0zOJDR>lmFEs6NZH=`PXGrE}Njh0DnqxjQZ;VT+LSHkj{vm6JRGOxt zKR1q>crPh6X(BMTCF3WeYi$xVZ3nf)HgPTn5{TNl5a%TDY>Daq++2eRm4P^B;&_Nb zE<26w7}Y%8m#5{-r{}=-`EmT$xS#Ot=Eq|6?RvnxGI>28OQC|pGq$(IVQQa6G?m*y z7L(wsm~bw($65S54X*Aq9<8lVGMzB6{n%}s7E-np4TQwnC;^t#>p@f(01?g!dx8*9 z6di2S?BO<0ztej0SEWqLh&M%eNe&s*E$|KkQw)PzlSL*eGMhyuUH@LDuHfgomUlUh z9I3&Tcn7X+?splFzMM+8P>t6vI%ijwvNmW~tAldqoz4Dk#?Gam9OI`xO?vPal#u-V&2Qnm@BOt)-Z!@uKk|j&;hs1C1ZoFx`l0ocoE!Tz zTUT}GIW<~GAm}9>2IYtu-Qma%pz-#`<=LA;_}unVef?w9jsD_*W&XK8r#$v7$u%KR zAW0z2;8MW=)9eQ;F6tFwOyyH~M4;=hWNE<3de4dv=AECPXJuu%4gz$}Lxnz{qnvmy z>pbA#0gAw=Bm`qh$->+m8|xb(|0KSTMWD$==p_OJjY5wHdzx?KKD@4d+a6I0=cqDr51z!|3Lyg1%|#r@*TuH)<-sW#730FQh0US|k81ERB99Z;L}2LoN6|`C z8Qa=E$k47qwI%Ek{V~_%`wn%JSg-KmEL|<>N^nl#gqN}_P2m})^?ugd|B2T0rQmR? z*r*I=T?mAXpi7!iRTV{E1Y6zVTDF5|&`&>i*1*tYK%74gQE4fHN;TLNd=8EM>21}R zci0D$$_BiZ7u!y)ngl>cw3Z3~cfe2|>)Giv!~tiQ~DsdDb`9d>;;b`Ir_h zKAQ`Gv!HF``T5ocW^|MGCJ-rW zGl2o&EJFA-Arkn6i)Y7Kj;I~g^tJHpR@gW#1XgRDcL~8yO&^HEBDO^Yt)-CRxtqBa z1j5VadayY9@vIAh?4n-wYCty5{n1vh4d`ZtY(QPt%qcWM>V$Ty$AxpA1Zvyst-ow( za$i%~1SL1uh`=|KfWPzO%PV@u`uZ{RKhl2vOOSdt$kH<3>EQC5ewr{EVtpf) z!FhAX?Jwg`|G!U?mWtes=wumLnvmyyqAE)tT|d+7GRjMwDM++NDaqEx04YH$#n!f$ zaOh+yrmRR)jWw1m%dj|PS%DDD&GfL=@Rql}iI=|YW_rCotEkSG(Cuc7Mg?W%2k@{O^Ml{_4rEpFiI0Aq{^C5+8IoQ`zuTp9hUJwtj7XX9 zbr}o>RE5tw*~v7vG8ER3CJ9O?QZ1;8f=-tC=N{&0Eq(4}>rg__?WR;=(yz+WFGkAe z-K_GQ*nbBroMKF&!y2^!B_mQ_WXC2WsNP=Yi`=ytt)IL4AHO<7eG z*3r|N+*qv82v;yRl3qFFwyfmpYJj$mJ+4GaN9klp?ruqx4wHtTyd;ux;{rNS+@1`X zO}6-ySOiKC8o>Ti2JvXoSx`Y)`m93z{V zWyU2G=@>VkQfxW$RFF%_Q_DkiqA1RcD2_eDV7STCzxM~+_H#c^nRYR!kJHf!H+;(i z?wMcV+(#eh>NhI#YkmSb_ezi{d0y1xqcA>yw@wnj7%RZV*XECFK@hB(hdTH9Zxjwyam$RqV$p;1d<~v+--2qk}J4QaV-1b9n zXZy)#8LzBi5(!q*o10oIq(we{qJ{-LqtKeU#RuIw2XAsLczw{nx>5--?t_ z2?fS8tW4!)UMk}k|1|aTw=Qf3A_FQ(G!7SX@zGXTSOwC!adcTt8)S<}AgqU?xqm7^^k)2_t4_6n3y2zcB5;HRe11zu08*F)BHQ4S3-v21Q$Mc_QT_f|CRuh-B|%7mmVP~*mY|JwYXemg zJeg)Rw(HXXWsL-DZ09zEd#B&W|EA?{+hBjZ$Hg1i5IJimg9Bo{ry1U{-?ZOzoADR# zQ@_Jj`}y;IM7;`ffkFt%a>Q_X6{#fY;w%_TIT})qhR9Beu@zZw7AYm8^$p6hz!oL8 zs6a||zeCr}F&x%OI7NHvlTnt&HGk-By7i zQjL7T&Gb8H_W}QsywZ)H>9TO-5DP~S(Vgw1vkVtN&i>K@ow*sd&rY(rr%Sv2r`r{Q zPXRF;GhEy7L3Jv~`Ah#+ZRL$Yr39vmd0iXUYogO2ht&j5D3#Q6g@4}$ODms~@Xk78 zy!3mUIU3)$2QsVrnY0da=z;Buj1GuNU~`(eZiCFU6smTt)S$1cd`?@}fWo%6Eeao? zryIt9yMFOG+V!3e*sw0lEyQ^xuwC%-?%p>L91o%*NfM$Qp)plpsOT2>se?lyt;S_<`zF6M@0tbY*?SNIxqkS z0vP~bf3J2>N_#Gxp8sO*?7u3d<#!1EG&pyl$!8^^!!9ne9{3ho<0@~TR>c^~9Hla3 zr-#mFYrlWXuT(ps>Tg5>F_K)g&WW{{nqzRQ3m1dP zGc9$FhgLQK*bdk4>B-;c)r)(-*;U_8w*T(QI)3HLxa~`WUHa%X$fYH+%K^W@_)kAJ z0sN}|Aud8u)L&4h))_V*`8jsK`D680a%LBuo8H3s(U0!(B4l|1u7B7dSCm zzvL}Gv-~WNZJy({`2!an`|TIL2;h}}>NUYJsyw~>U02=0{0_NS2OERSKGyI4hu=YJ zA1tI3O?Re8Z>~pgrc0;q*}y_TZ?4a^w_Z!u{l?`4o+!q!^{?N@;(z*8M3y146w&Ei zwqIPT*fKIOn|HsECT!=I&#ilLX@Pfk45|rMke!Pqh`&+A=9hnGUuzj{?<^f{t!3q$ zXV6O}kxDYC3e0745FZ;XbK}SVElPN@N2W6lX0z^H%=drrGhDkk%dfrTHN5`N-pf9-vpKF@LC6emLm7lh zz>TIaeTlof>6xRcSNU9PuDCU4jvLbf#6vc%>E#pWi?IkH^~B;5>gISKX`d+Tp- zX&8cyT96cysw}C4A_BG$!A>Vc!|)U`?8iiHU&S$6=aY0W8jXG6o3l9CIUdJdj3EWr^UZs9)Qj-McA^oYl4Uu-po-=-4ukywqoq9SuO2i$N8_gC0>; zr_IjvfRSxITT~8-`!&zj_4~?bSH)mw?_Zgj=@Ih>*8oWb=Lif!<0YT1@vO?Ksu*k! z@hMomy#3Py#Y<)_nTmGZr2qgR07*naRFs?>3ARj)3;F$7kYE-__U+rl55D{Rc*~pb z=KAZeWv0_1^>NOOr@FDVmX(zizVP5feCUrq!hiqopP?vA1QEnDb=$;#69LZ#>WSS+ zGB-C{1HeuDP5!ol^%_8Fb8FL|<59EvJ%h&uOt7i7R`hx^!H$@+qXRQt3Qscdgd9_| z!f}oyN$B-@-bSzI29KJ}&o2;xH?0*L8=EbA$@@37*7SS5`aZ_C0ysl!6h+BsG(_MT z#E~UhGi{v*ou!oAc*706``z#2?r(h~hYuejO;aS$Nd-y@{(5041M%zJx%1rj`TP0M zAAgw7-Ftsy<02+<(#C+|nVD|Q+KhQ?7Z(?5|4^QfFWRy?qK^gk?Ooy@{{6qrKl&%X zSij{_UXrCLw%cPk8U_Y)922$)&KF>V??1~jUhfll>+3 z@tuM?<2!B#j?B)^*1r4LN8>f(gDS0AUtgyTYN#$KiOkOQn*d^{<&~RDITV6C&%G}w zqy{uq1xhp1@1vr^U1h@koKFd9T}Tfa<^Y0?(%PQHd89Iq!C)JQssUS{!#D=a2(Mq! zdZq}PyTCLTVLtExsSAGHw8?!e0MjTw;k@re3hC!e7gIyEY@3PqAnI|yfB!zJvgG`Q zWk3B#Wq>%>2m8pshd7(WAe8np906nLec4qA2xvNJtG~p0yBebo!u6hzBcn246CA#i zf95Z%eA9v7RB4=W7~wE^i4=ltb`C2gpZWabBw5A-Uw#6F;DLvqA(H}IjOi-H{@uIi zWGOek^g0r$*|&c$olb{D5%OYs#{xp2L)3XyR{T$Y^N0EV_q?0YDCffY3k-)to_+Eu z^1S5nuRO}y+8Vdr`EmwZL!N!&DZiMM4kf+wLRBkY)qN+-)^Ac=%QQ#0%#)GU@ zN`B$ry^n>Zd4v#LICq|-*S(UmC~(ek@aQ21gE3`k!i24G2%Lp9O~{J^i6TusfbpL9 zzKeIh^V^x5pAFFgA&*2+VycQSJ@RFK{n!30F6p5XM@L$0kt3Z&%LG>$ifW8f&`VP< zhb=)QlA^E_)fk~WbUP_RX};yPcd~2u0@q!8l$n0F&UdM`VqtDJI2-(6HOADNlX31R zs;J9<>+QF4=UuPBng&#O=l6Ukl`-^s38zn-<>@D%!{D6p7X;$^nG-)E(Z@Dpx5t_buz56=uQWnXl{7*t8k`5cRQ4o zp{gv2R-Qpy`e>u8uDh12ufHBw6_jBUxv{pww|@J#^U|Ad=Ccnz!pXBMtZZx|suEXK zR7DOr$Sw2Tj9~ztvs9y%peRcZaHs?)U^vXlRl>X7d9JB8xL_o?wUoJFzbZ%(6lH}> zJVU*#Or7*z;vH*JN-rfXB?BiY^MXTS#E-fWe_S1)M52x1Cc8>jIFxgIxOCck&9liO4v8p)y%9pTwW{YHF%*rz>EFJ0N<}K&GD%pGUZk8WiCG9!p4$mRx z@1%RvcaYjmUijTV;oJjHV8=PSYgt||Ag@T%l$Fg5cIyu39)FrN?ND|Sly&4X#VJEM z%2~YOdY13Mm;HCX0wpBfxfwRsI&7VI2BE*o9({q?T@LI)l)8;hf1a`^=wzv%?49&^ z0)|7X)zb`~dxjV8e~9wg=MY=x>8Bm$cF!>$4=@^v?VM_5z^>Vh;b_Fx${J}$lO>XB zl%s`ZdwGlV!%dWQ%ytAFtyy{DJpHA86um80AA6GJCyp_{xIn&LAgm*qpT!MEoPOa2 zw1n~Ud8Dft*^;H}uc5PdH^_=|Y}t3~wVXP3f~}Jq)>3+`dIR3$x%X+vis3Z;vTXewoqcI?2)@s)fVM-tsEU_87VE016YF z*?uk*LXc?XRTqk?UOx$&c4I6K8B_zj!BvFFxXM_pE$Vf^=T=n#{IRgL%ING1n6(wo zpIBz&D-W}9)AgMBvwKjsB2|Jh&`A}G3mrxSpLba43{tSe0;CVtSU>hOGyC^p&#j_N zg~pL5l1f@|WtcNH+Tnv(>I53!yb?DM(McZVN86x8RaF7#h>m8@l#4)no2izjY1o`J z#-o=b7Ip5QXn=Uo=VEqg8^H6Rz~nYVKn+a9x<+tkCze_JJ5Xrd$iTEg$auYY?fQN# zfTImS#?L;t<&+$A4QR^xUZ!R@x(Ps{eg7KB3D=yEf|eTVJs7o76OVxlk*D$^U~?xY zSG#@M;P-TUwSm>RVcn^nr;V9uKxi7UZ38^h{c-wt@$>Y%XaIU0o}=2aemh;$kNt`m zEiPN_QB@V=&28+spu2mKq?1w&Mr<5E&2V)C)k#Tb`=p%=XDq|D4aTdRK7uyUBy)YT z`B`+9V9Juw+6KkOHe2HYnP{q_#EktssXG~Ie->>GQaJMM0r~c}H*g&uhzYr!U2s|@ zS&G!k?+>jFQSHsUY`+s@3^GfY-Mx!lH(blio;@Tz@4&In=ic^hV(IRhC!6V042N}p z+zC`}`rIV&TYu*qZa8MNvFX{-0wUw5jzG6wc_-1C&zl5D(PGSoxvapQxK)7Z9TT9<>#9yXf8fSxH=zkjEauz;8^!O&(SKKn0qF! z?>BT8XW|8Z1jWG?NU|cL_4*|Zu>n(XJ?&HycG-*&u=RcwCC50gL$sRko!w6Z6~H_ z){6F_2<%5jL_DIi8LUdN`3O^t{5Ys`>>$VFLv&{jS<9hDk5u?CI`M=CGvXp(@^V$4 zVyjLw`@pC6X_xcEof&nrQ_S5joLTW{Oyth>DaM|8c{=2bUCgGWcAeulzH*FR-3;Tr z0#>RNN9X(8ur$}yS!&OAZeRO>`**x&EZuki008R1RfsIZ<@t{175CkXU0Ffy+7<71 z(K%OYZMy^8QpgNva;lBTDOVpRS!$Tkz1zOylE80y_R0FQ6oS|9xt8B~;i1dk|HNqh zBH-6L$LCg_17Ke^OA+#^IsDwJrQ)C8^wu4(x5IKWQAUGFP;hOB0DxHT|JeP!_h;Tq zxBrckhi(^h<_!6L_tJUO-H1*Hxoa18`NEFp+QAe!Dw7(J+KJVDrFQtzxmDiT$`32M zleuD@86n!hZ*Sr97raby#T9b+?f|@Mty{_qU&FnezwH$~y1c=?C(iFs?~AYHoa33*O}_2@pXB>* zI?TU(!^^pDhaA8-i_6boMo(e#!o2GQmarW$4t~#)v zG))bk)H*06ODR0O3Fk{&!5OC|F8c@o_oKzx8uB`MW>tbh5J9tRaaeg*}7i3_%@Lee&|R3&P4ls{{H*< z&hP&IT2kHHc)?yUmR_&No?Q!^TVA0mD}MZc{#*R}fBUb#380(co$q=#pZMfGL?F4> z>v87fvpf1pCZ5hYj$V5c7tVW?3?U`mZkI3I|5=V6J#xi6|NWo-8GiHEe+!hX=ev$l zJpIh0^!xp<`^i>U*SP8WmoXd-0gtmu5y!l%XEdDW2?xP=tc`Xc0i-n(%Ux9yE(otw z)PIY5K5;eB9HpM)Nlmat^l$k?7cMM&KsjD}Vmt{%ExX(%ZNxRi2StR3tW);X>q@*@ z3x97ODuBLD_#D+?eGzUly;69jEAAh^ndO_G{F|(;ZL(|E0-a8ZkdiVlQHftP2g8vE30n00vTCG21U@21CmHiuhsC7@taIFP z=N(Ap9U%F5Ouyg5I{4Y2{#nkQIzyU(mJ(roG?vziQE5n3;ybdnDCN7g#T&y$CBg=eryiPP_ zW%$aM9;K39=*=OO#cT^qQ3Sxmkmv-1pZLn6LTb=LW0fGue6HMEZa&J%b6Zr_@y0jY z#o@w?eVyl(XD?u z>y`Y*Z-0Q#-S-8YF=%H=Qr`}vyaFrG(mP?wqCllSim0k8I%!5e&gp4|sB-?W?D2Lx z;zqa4I*Ld15=+%GT6rf|5rP@KM6O@#nhDg$5=kXFS0*e-hc%LJBDu{Cc|a}k!{sqb zk?_^d68CoYq7CH5n8B$ttjLrO7Q)7PE6+(Ks8rESQ^+(!m(bA(v$CS79H&p7<+0Cv zikshXH}ks>()o^~TzL44?0e-6oc+vwY=8M7nP2F!nHP*lC5hCy!jjtxU4dO)WmH;@zWEIlFFearpT3vw-n|^U>jdKb zIo8e%$qsiZXK%!ea*luUlkBEpWaasj z^bahO?%G8%%E^+Hq&tt>%;~2-uj<)z=jhF)EFIW|T$;zs^eG4H%2|Y>?d?%eT5z0v_6(h~YutEOpTYT)l*0|iGfSkq zdz4$7oO$$VMq4AC{I48+&CSf+@hv3R-i4DH2vIvoy))Q@lG=kLES3@)EW zpvnsm)|vw2G_z?&QIwQbQ5zig%o&tcRK}tcg~p(jL<+AcVNFGa04Goi_$HH*YNt68 zt-S+Y%G3iQ(gi@kVDV0WfkG<@!qn@s3XGLRr(rh|fk<0}!?Yq5qw&}VT5BKyFC{PK zBw*>IP=iBXhG===nQsx;iRVYastp!3Kv+c`o!kPgcLI{yhVnEB83B>lhHdcEUqdz# z!r_>V0Hv#tY7#JOuJ3A~ChkeJP6ANoBMgNQ2zdq`zCFc7&iJ;pX>6-DgLnGb z;yd;AvJ>aE4W9Pj(*R%_AaD1x_^fR(f12?PTm&BN1U@#UoofXTPSr;6WQ61d*zcl@ zQftHRH)~X*5tS)PM261%JYq9NS?0(@(wUzn>2=8SoN}B~0+2$6$>FXT8*{)Usi12EbKFfy2}wa5SbS>fj{J#3**G)AalH z-y3{x+i8H+$JV-FP+1pqd|k{E1?AHTR5?m{hg>ty$U69yd%=xQG19(}#=io`T&SENq zlIcWWoD7bc{C``n>#tG~M5g)0UPtfnjrp5vj|T{lNyq43aK(CYi6x!eed)zo$nR%j|AdV;}p*-k>H_*{nU z=%u?7sIW1`1{N~1r~UY{W`JZ@eO&dIE`Pzxl`F`NvjgCBInXyB=IBJDr&yvzUhwpn zp628;C$Ctgm)`kO|C?{HGQ$I_$9Zb|0=LZVzv$Rpn(+JI^LpO$yZ7+q%KD22eoAZk z-N&BiW6z%EKfnFeyz7QTq^9=;A}*e>L}iHfcddXS zCaym9y>mEYsfHuUm35!HI&2V1K)yK^C(MA(}dYidA3O1b0Ujo@BntHtjk z^SF&6M9|h+i;&HpWSr*|g-`vL7e&4QlK6e9kTH*{0AX=~%_d}I;)YzB!nU$CwDXWg zNoQ*Rw{?+a=yR{uTr*K~Svhj#5ZQEK)r%;*b}!*mibO!#avsU=tqBtA7)HQdc$;1- z&3k|F-TdeO^eeT}%U`4jAvkpKYW~6B|0%xpjo-o#yyr(ab?Q_LI1jwasUcwlV|i(5 z>7s!17gMyJWqxj!@pwdJOxJV2@F`cCAO#;hb9vjAy6?Hbu-w|-_Wj54qU(6wwb%0C z7r(?{YYQnoX)O8~E_Z*eRo!v@+8*}P){=HI{?+?_j-UQ}fA>YzVW%R5;M!}i;e9{< z&v^UW-pcpB`@O8Mt^4)~;2aK=Rz3~o*IA}9R3$Zeo-@C&#Bi`(=MDx(e|DC`hYxb| zH3#^kKl&)$G-b5CjZ*50VC-L{L>0OAUO{Vp#dmCN%uyb|MgV6~TEFNqR2k1`mclcx zUAXtxGX`VPS|NpByF{>AJ;u}OPu|;61Fhc8=dfY!vpAHFDOZDM$2Ijf{)zB7b@+vgfj6$6W9nxX__ZR;<$ms! zlh>;6)GmUUhkg3UUuOBH1HY!oNu;7gf$|eTg`>2_OD7ivwk+vM$(iR*pp|BEagMSo z5xLL(Xq~|p-cg$-2}z>J^AclRaQyp)FHJOgQIaH@vhu*24teIBbDr++ywlDh`QY#U zE~lP9j?xLEaZaKsRe#%1X{y-*P7?bdomX(ANkvZR-F_>JHCeUx;(^(}8= z*WNuCQw906AT2HYvuNdWUK-(5X{Urt} zA=`I|ZQ&@lH&I3)lqSstqrs4IY3TKPXato5X$48D=yx=OaY3dv+rtrgnIn<>i}(E! z|J%>}9S$Ep!0b#H8S?5zFeXj3cPLq(7uVsL$~HvxIP1{bGd?}D%+um!kcCc_WVk)x zU;K-I$MW*JziwF}wDt_i(!am5GNejkD+57xRyYs#I^)|aOEf0PzzA#j?O%I8|NY~i zAmZfPIchYTGL9vK_kNu`ETU98jt(K}AGFKx9&8638Sca=JJ3X6BvF zy!VcXHT54WB6jS3&bdR9seV3~_v{^eMZ}7=R($JwzxVxgrWtR?%|M!G7+WE|!xR<$ zJfo))KI9KGF)7dXt9*@%vdytTy1+Efst+VO);-R%C?#B$WedJM$ra>@ighuZ>q?=#G(dXRE}ToPt2po_ zPo_WELg+2dpWL8#_yAfAn?u3rm!z&NA$0NR=`^ze<`W9K7xb zsx*}A6SgdW_;a7d ziU7j1wKYMCSf^76L6S&F!B&Q>pHNi>sWeq(2+ooyjjC(GI~!&IohQng0KL{z$>jzR z?>atH`OJBSZ`L|2-dntzWwSQtfVlp5Ws#fzcI#s{AVQOY+cJ)&obI3KgfcpyNtZp> zfCgPj<$3Ee@^%6|QxL5MNW^T7$SK&mv+a2>y4#mi7Il2qUAD4T8r4%X*WEax^B_^T z%_s#M&? zRCn*SkuC3@r?Gj-?`}ISGq5sLqY>3)LbW}@7A3AU5%j7PL{y%U4tfMY1wn6lk*t>7 za@JB!Civ1I2Yq@g3kWSSqcO$C7Ukw<^mnAhI!{?MEYgJmqG1C_MK-aFZf} zTB-)bsF@12gtPDTe>a%|ptrclp&PGb>58K<2;CVIU2r%^LB6=a@W=tSPCXo@iM!jW zU4jG6CXCRq`l8HKuohWX6swzXm4`$}$+AwrTkG1ylI~n;)(9bJ!OAB2ahh~s(YlfU zon_*8gVFQs_eT1-3;qRR>#;JeA>WLPW^Ok38ndZGJ5Pm(>Kvh#nVyboTF|z+-$q)k z*`&|2iJN1aao)%r&yVBooQlA2ydPss+~1@rQC*?lWQu8<&bc=Eq-$OFeUnVm)Fp3@ zZ|1pkHhwP!f|N#buzfaR3i5XAvNvtdt0lB!OH2bx-DI04aH^E5v!_G*j`!ZT&r}FO zqBBBpZ6Z>09rMp&o)P{}#_AVafGBac+aa~o;xquf(^T3+rF~pEp&Fe>)Ja3O7~xDo z(pw-|*cTIDnwncpuD#s@0J~HRE=thKDFgFRf0nWH{*yb|bO2A?zqI4C51u^Dt8cur z{rh>x4(vGQp4AArJ$aYk?`qETfs<$W&Zk{d*E*iH>a(B4KXPi%pR2=%k;9k_EP6e% zm%oz9AH8|c?M@W^#Rsq3vprK?K1=jM zwzax<{a5ppqg((0AOJ~3K~%~;>habl`U863@M^Yy?N|3aCXC07-~0y*fAEL!8+)^l z{rVh$FLP)a@O8p|$Be)58l-lNm+qPn2zItsvRu5d)bItZx=1bL4kKRb3kSWu^StF( z|2PK76U}gOfKD}&?FpmJ5yfQpB#Evq?px&gXI>A)TGNlWJu=zc75D|XVxiBc|Me^R zx9|NFZ@A^|%W8MMsQC6j|1e*6Y(MXM?MqqdB(2C~KYH;6*vVbdPw)<@5?mP92~HQW zZXh{+urv6(*L$t`TnO-r5L}dVK6?&dlo9xkFP_Nw%_0NNO^WDqT1yB}JbISu{07PL zkp8hlBnvx}ZT=xa-*`{7_cu*^ivU1b7BNw-*>AK7wDB^Vnz>Ro3A0TCavhwn+Ytni zl3toonTjSLKff0fO~akO_spZ`35=Z$aRHQ)Lj@gCbf09@A1UWPS_0UPV9 z42O#dLBv)NXr(xF`V4n|{XLgb z?)f70+PnvL*(QEb76M3Q`xs?i`l$hJrHt!Q^G<6(U_qU~Qpbv$b*<^C_HQAleOI6G zYrgjD_}lls2ODgiY~9SeP?s&5#t(#;#vft2PPc1(2s18qJ1#?Wtf*_5hxkruI=^|@ zwC|{C^7S;P(kPBi<4{peWtQRG2xGUM_>Z`SeZqm?MGch%f&vwpQYy*7dK|Shg>yJ0 z+neirO!CpvA$+4ZJMPC#yFJL zeC)%2$A9~+-@}WPVrhWL6jDpnB-a0u)>HYIkv%I&(wO-<85g*^c0nVxD(bAWD8U*R;w~FoNWsGo zpXR53_7@2bw9X(@_`3e3lz>)sFf9g(bfTj?vr+^Xb?bxkBvPW4#1v%=6s0Lj2+o{7 z&#%AkSNVo-`6izKk{8GE5&}u0a6aHdAedU7)ccxM9rxQYnq*C|*m91Cyx_;)uAcqi{GFc+2Du=5omKKMU+JFlb#u9`i%@RJ9 zALHtcE%vLp7;Xm1l7wu~V|!9zrNqkwY=JR?G)-zyxT!hexh*-sGr~r!?SN-V!CRB# z~@VkVGj=`qUxwGuM@(Rwr z@1xxRryu0TmpzyBpSzVSuUX>G^%18|!2aBGZe$tc39BbhbLPP_-1T>#AzvEOJ9>zP zr#_vn^C!6C$O?mnAyO;OpS+KAcRb9o8xJ!&wT9m+$k#w04Cp+=p0NyViQF$4Xic7H zc;P_8V5IO_%!)juQ)Fp4KS;qjdO?$KZDU2C>MNuJvy_AOJW`I)GO)C7Kt2xGQH2Z= z>jUc&diUSO`M-S&3kUYIdS=Ao8xpo}{Uj3!gDWzQ9=?%Nzkd(cKL0DQa)l?o>RFhe zk-Y<4_o|mLx#cr>Q&OoOi;D}m%}owJ?Mqnw(1&0%*6kY`hfNYRk{|=d8l;j07waKN zt=XP<5(T|9P?jSKAMkZ{Qoh*7oIcI^qZ#AEBUUG%VEz7cB$>iXjY|UOHVnncVcdw- zdrtr`IJ5#;MzZf9qQAmYUr=q0!FiIj!i={ulQENGLNbsn9!@E?49>))ltz^xjycHk z6lWbW2u52Kqftq}r$D55ClN(LVLaE|cmtas{TK^*#_0SuxBuw}(0}tuuDJPn4nF(Y z44(cHNOGJ98+@H$V^N{;9-@MR3z3B?qyQ;V0XA>@7VDN9%1#QKT5<3`e1kOJ#tW@VeX9t5WJ z;3Gp!%LHfZ`shL6eUz|Nse;Ep<}qVJK%x^6)Egp?_a?qK*(n_ye=}vrm1T)is+BL5 zvRRLwlE2TpwA+m_-EDUsNbZ7l^T&0M zodM})f;&6e#&J_zJKtfaoNO2LYpi8m5;I7vtr6qZbxctbjHBEhW6P2xO>spE{CZ^dI!BUbuqe?A?l)8 zLb7=1Amd|4Ie-62Jhh}<(|)(>>L40SWoeuLIqP6tP;PEvO-a^Er`H&K9q5YE&M~_< zt_@9sM+AT)J2!+Wo4q@SoOP}L+f7zbb$~iv?tG$ytb%~pS zU7(RUh9)ZKLrip$QpL5?Pi2NhkhLFd0oi^ZH-4fWd)=`)lXz0smkUkMCDdz1=*m@1 z=R=Ytbz7pXxdss+)hZ?6>)>bnX%}?vCdf2%GO~4bJMNlml`@X=cy09_N;mg54OYzG z&os~$-@TG4n|!(!H`mt$P$Nhy>qHr7lmZ%dvcQD( z+xJ>0Ks=iQ%$o^|zOYs+PBg{+v*5)31D1x}^Qo|(z zF+4!nJRSes4fyH=jb(Ol<}17QP#a|0H9FL}?Nlm$_}b_53wOP5&#QUIBX{s{vB9xC z0_#2mUVqQu?b7JtFY)Anr7R2K$g_qy!8%$f^0$(In^&R+agjNkl+__ftNk15{s zZt|~tRb)l(VSa566c!Sd9l=+t2(^icT_36SKLHl^t+*YwZHS{2un~mp;2aPjOM;_c8|zP+es0?`g$vyyCgM_9@5t z#gE>`yYGMWl9Ppe2z>n1Ill6b-pk*7>q|K_m_EmJ>4n(sk6}i)5lbx8_jWPHb#0xn z@7$-||2BU%?~%rb9^hR{Fca*?8gBC(SPNbDkgA!ZKH#<|;9Xm9G~$N>UsY7+*D)L0 zWc!!s9XWvRaz~HJti}h83GzZnp7N9%AJem0Sy@5XWx3jZ zs$;jUk5>ObB^5vUaXW*Z+{2vL<;aktt-v`N(zm2w%*Id@|=UgkY_yY z$-MV{t32uI!#w*LPvgWx4?ZE+0X04-Wn_wSIZqd2I8#p5VJ_pj2tbQw-z3|$;_roK%FeB$1L-sVJE!Vvt36!AC##310ZZ z=V9v2Kvh}Nx_)Lv)9cI#7f90>Tup>T%2;!^sR8D!tMP(3;2K602>$SQf1gtioJOZT zloC`HbQ)O?mCouQw1*@m7dh5gDi_#iOSZK@$_QY4L0vo>Y*C=S;}akJJ8ro4I4^$1 z%cBH`6lkdkehQW*iLM7lU3j}5>`_j-sbv`%%g#F9@;h(jgCG0|>^nl)TOi1Utx18> zf=tEi;ARLZtw@!i*Y9DS$3kS$3UDSeX)Eu^5>W>d!I^>(6mR&A-{VJr@aDP zV2wjb$#_&CRLm+%)0p{MlvNzUVd}O^A=k0iEQL z6(;N2hDycSug=vDT?`hbbwF0hxHx+2NVRV3|Ees?nij_J=HK~4R?nX0TfXZ%F~&sD zyp{w|i3Va#P*uNlrBtm$W9tBzmx6vjBY1er|NA;_{q!x64NzWSl_lx*FhO9w$A|bk zgrKw@UrTQUZ%I>4suI@MHp$Zz7b1ImW4k~(kJO&`r^ooNgDD#i-_HBOhTYa9AaFMEevqp^Q^Vg94|-6G~v&a zBbeX`K1$?9=4L<#Pp&hxj2oYYe$Hx9@Z=k==ZdS2Vsynq{~FTweUh!u--gZy$jJm1 z97P4A%(Jo-neu5*p@c-|f@-|Q)?Fh`-f}y6A~~ZqL3niT35922ae&SQwkS|SlJsj` z{Yr6uYecq~BDY}43(|f zV9e@%MQS_?I>C64Q!s|N4_W_k{yCa>>fqeg`7I z0i$2fu~&aPE?uG8K949iF^h-jU3(lkTxRjWkl-xaw|#*}KX(V~Ya1|eOhy$UvlJe* zivL3>oU<6`k*T1XIEqrEm1J=-vbiM@)T?~VwjbG&N(Fk}lI0pB4K74UB&$56g2|*p z)q!LS_$`CMQb|Ej6=I_#SsYO<=TzeYykdNAoiN!ZR29QKV{?6zT&FB7rR0Mi8)wIq zg`+G@{Q?e*$3+axy7*GfvV^ToLy`)XbBT3^FgASteV;<3L1xHMu&4rZH0H!#f09Q( z@p+Cu{k=Ttt6xg7IVR~JB&-}ktXsj zCzFy8Dtssr8d9Ng#?wD~1sipJ6@)}7PY}_GaN`X^RiFcmzi==88=j1~F9H@?$E1#2 zr)+MFqddH`vCdExYx-8!(Mxrlt0AfugdmV=Dx3L4S_rXzgtxv8B>P}dTF}%$>@s+} z;Ac~ZR@UInbW;=GCeyl*T>!wxcI%BL^*bN}&jO{gR*JRDl556Gb3I*)ZO_V=b^*gK zc-;j6X0xmF8_gttr^* zy+_Gp259MmN?lfM({2~k?)KHJymGwv29#^sYmViHUN;E`4FDWj zo;&AVJO_C1kTXG$dVbZid9E`qnj{A$C8`6y2sKTv2!xm@*j&GJtu%AI$2y^-t^;hH ziNQDmgcux?s$tdE>rD$tgCIUz(dnbz81Yl!FOFdl2pN+Nm0$|ChcI)0)8v|ZU2zr> zRGUB|#gyd$%sjW|ywiRpCg=!3kYQ$?Lj>%bool<1Zt7yy?RMq%r-9iJ*}~{uz}V@A zzGZmVfu?RhS!?PwQO9cxbwJHeOXD>6)4iT$~L;a2NVGDD;P=~~dNuDkd79IkBPt*G_b=ET z6nxn=NBPDZujGz%8)zvwzBJ^=o_*8IF~ciSswbYCyy`)%gA5$@|n+Me?aoor&E1m zcX?>Pwu(J@5`E1c($aI!FPH-C6gcy{uyKW~fjFT^_RZc)dGAN!buApgZ_U=D6=|O? zXbkY0E1t@D%-`;PD0 zmb0!+64}d?oCOLlX8m1Rhta|%1h?hF0t-L+Q*8Y7zl&vzc5A0B*#6z$Ax!pWMu*Wh zVKPSarq`qU*I>48N64Kuh|7!IlVh8Z6_RZD+-f?}q)ak9inUxmb z#YA%HbvD0P8!QdD@mbS(KiTuTYZFln@=`$l#+H-W=TU9mO1k(o>SC6yebw>9yyW;{ z{`$U$`I!&j%4Z*4y=3X>+a6iv8~)@2eDFKJhOCo3n=ZW+GrAQBE%0`!m%caXJO5c1 z@J;Yxh2S%Mv5s3`#c!W&RV4%=CJ@SqN(S%1i)sAR)l8`7eJKQ?G6Z88KRBT{yGHNm zL3)SxqtfK^5Q{I;W`I^iOqA5I)KgIwHDG0$o~T{VY4E)Pvm&SvTZv_L0#Zh-RSLN2 zrki;1LQ_dvR0nKnM^unB4lZ4f}TX8Ae5@>DtiL-3&z5Tv1G> zxqm{m2~1r-xdEAH)!WVu8U;4~vJf`zp%%qh3{D1lx{^uY636n{DhH?Hyl_DXV@<7q{ z?|baB`70|;t@Z9in1Xq2iIK}#uR6QhX&m4(z|b46zZTlD9+L=)aj|Foqp|2_PF1uT zK=G&k-H)?x-|nRxz8Dii@Gal+P5jxP|3&>tcw*O++D8T`CS#VDS6EtJE{`RjS|jzA`v!_>jWi-eBkZxDu~fDE3ht`RJ2=3uanNmZe= zCeJdeNes-^$rrfF;d~&^Q-YEtTH>9fDoR3-WW9`#_4)9-{+6dc{i)pWjHi<(x}LNm z0>H-6&(gSvD8Xb>wybI?1yyCpvV`7Xfxr39H*n$;x3JXjF~K2}M(UVNW4w#93bo^y zXGvSvI88Kttr_(DoH%(Joy1I}yw~T7a>Pk*7$-U4IgRG*%fE@?TYn3?y~(6-co&`W z?J?*yu((WQjwkUsfj}$xv^>bQs-P@jOKaZLyMd}IVnT#Y2r^0ri=yB&!xe6D6RIRZ zYsDdNIG<+d5U{o+6@s1+99TWa!^0u@U;$?hX_9dI+&NCHkJ-P_$4v^>!Zy{%zra$K z@W{p{ArmMc7>yi0b9f|0VM+6ZR7pfCP+61)wxEU!rNrTPUrDzU!8u6m3yk#*No^j30AVF`)Hgg{nR^sT3GmSH9^As`OtI4Ky6 z4c-g13J7N@Muxu3+Zv2(n#DNH6rsUC&5 z4wWdFftOW3ZXRB_9kpEppumJ%?bT9MXCf6M{pJ;6=hkH4hL+mZ=(`HE+HWC z7M%5HrE5ne%Bu?jiBjNUJc8b$Bh3Z2a)8H9VwLou0}fbPNb!@v=}(>DfsgzyUc_XT zo=8x`z~Yf*wD$B59b)nLH9U0N9cX=hnNQC0MMS@WW! ztSSTwT{EH_mmd6jtfp0lbx{sWNnOjOx;ikfTM(oH%XVXTN}=kym^!w$EEoEJWsE1iq&ZXv4&7S)p^Axg<$ufaRtin|9{` z;@tq<8RxSDFwTRuvwbq{)7{!_{yopOZe^F5Wl-VdI1xyfhNwhh#}lfeAc%S#%jjp6Ynzy|B281wWC9^zCMCf+%A#QL&_SdJ z>LfAmq5?r8BqmMTfRPXap%pSq=r0TjNP;s+5m1>zCkZl%V5!uSVtorUE^3gg3xtN5 z=L2ygxP0so>B<5o_z2YQczzN>1Sp%~5|9j!9_H}VZsO6~ZpW1+s0JAC%moqa0#Bb? zK+1YfNFDvY8i;E)S|Lp3!d1_dcB)%*^xVx|=b(8^Gti$C#?qj&A3B14K5p zXuD&mxrgrB(u|$9Z%OK7<9W17W&>?PKxpPtXHKJWzKnjT&{0yWJ7(u(oV#;lI)@cn ztGfQw?3@JJ`|IATl(BBRF=lo>j5oVut!}Pox8#obes1Q`{8~JpP%{s#HVka*Z5x1X z+U{OYvo=X7(JI5$?DXzh)tpi1Sa<=7ILE38A_NvLnRP z{u!o!hZwv|hx-7JE5}i0RL8#afDC|0!EMc7&4n*^&PDOg5vqG#oP2IgK|4zda(1M}$cM7hy<@-}+V-fBYwQ{Z7t-P;O(k4sV-q zGt(LI-}x1o&p6iyk1MC2O0n~x3cYOBbg+ugp%H{>Yzqg+HTnqeucK-T+kFB0) z|NXkBzY4X7jOC@2FS#7h7vShM$M*a#T%ZnZJRpwm^h=(BzV3SL-FNMIsQJvNFBl{T zaHme8ub;}I>V5?Kg&yuWc6<>4(ai;5#T+Q<&FnbU%U85u({2{*?rh~?E-t++bbire z9uMm;^m)w>y=JC1aB(r<_i~jRRKk}o&5jw}yOO=a&T_Jr?$*T;C* zy$@f~sXp=WIo|PwQ@rNMS4~epcqUQ}3Dx;&AbihtR?L0Z1bw^j)T0f;Zrrn>~I!+o@RhqDY3_1V+ zAOJ~3K~!fP<#~bN5p`mr_mPA_I}WBwSTUJi%=A@E0u(%Qb~Q4ao21~mq@Tvu4?e2M z-EhO+()|~*G)*~n^ax+L=iYb^z5z|9$%_zh-t+z6|J@f|U%wbzUS8(v<5zLVop;Up z|AIQfHG*GKN)8;@fAI$Qu%)F%8u{qP-){YGDT%6!JJqN5wEF!YnlT)r+S28`C9k>W zYKBS5`glZuDC53IIg$BOM{C9_^!t7O*YEkR%Q*Yx*^6HIg0>vig?!=1%cgOxNM<{K zZnd40LdE3ShaNZqKFpMnd7`dG5ch(E!Qi6DHx?pl97{iOdAML`|E~cY#jdZDFW#b@ zv&YofW%X?yKCeK#&uKatLJ=KC!OJt9q#DEUEPQdCiP z!h5{)t$cI*tYOz^;%JKjXzLtO34(`T__<%^&O7cU1dUJ_jRx5zE6IJUXm~>N_zc1LMkd^{o8;*C6Oi4m(hVM zD_b*Y0)_ExJaUeHFJb5%lO!P%jwNqc?j=+rD!}IbK7ar2_ww@5R%B-ek4ywXND`f3 ztf4Zl4eF(Jq4vr;ZVsy`FR7GdfJIaVGDHU2q$*fZ;0FCDuWlWG)jx#p<;bdHO$f}S zL}n5#p)wW9Sx#mN!$cunMPdxY;HZ4yf4u#D9I}R9mh$C?VgGPQwN((RgoU19t+3b- z7#9`!f?%mXz?UY z`#r|nBcv2~7g^^i5{)HY&TvJAlOPi?)}t~(I3v+l4Dr@7IbG1xiexAW$`VG9s1#FK zoVAz$QpFd?KzZ)@)CrF01nD&UZaBnU?>ogKANm;ikpbg}&e0!A&OG!G8&)%!lsMx! zFBL%qHeJa|k~7wtt_9{f^!J12oM=vmBV_^(&3|I zLg0#mL@Q*_Y>l>Sa6rVw8X*X^m$2MAqdhUm0)2(GtddH@>G>aZU&02bL3hwTD4sHtv|%V*M1+xnTJqHa^{c! zJ7+%r5f%nLMyA4hhj9+9AxqP^UYS?}UTaxPT?K4ii??!~$tEl>MaC`&dc73yEyl)L zj;6BcM3D_sz@vl0Sx;Hk*>%C;twRJsq9R~yDv#9vFj-y3mNe|ThUKP|MoNwMmY4_? zohj!$-iMY&)>w2#RQ>*{P%5(dybmqIuGu7a!JSZl4$;RGLQmrwHM1@PNe$>zgBn8B z?`PR=WSi``-GGQLyG;l&11xo&KOtmfd!u*ATQ|ov_d6@K66YBNLJdB4+ntvh?gF|^ zT~ceSI^k>zbT(kE4=y_OQnpOBruJrZ7^mQB^L-c4=>jy}zUbC3?Se>MK)w5%8&Ih$ z6FU!H#Yv(gi6ZYZW(3zyp_QSH-!<3V*u10PK0^;7 zI3}Cxs5B$nAM5Q_wTg!&jv1Myb* z`G|=%-nmFFo<_LpKvrxcO;Zlucr7*<&fRq{ZhMSK5}NSSw0D6ZYZj|O5}BaFdyF^W zV?tIeXJMcYtN>W=k#**}k_j@=HT&JR0Xk8)*9G$C8R=6%udX{QrgJ-P$RN?#4A?uL z7!l`=ze%)Kr*d-A}J&I+h^<<$+m1 zTGy&X@w(!e_ihS|b~mfLB~=7wnXr4Q0d(&ZA`3=@ogjJhn{GSv0CHC?!ZrzCo&NV> z8srfomaK_?dxTJE85Kzo4yDo<=#{b#x;m01i@DWeHgRM=!DN={{7($|ZRam7v%9r< zUqC>Yxf#n!$XQ@`9t4gdB~(7_1m@*5Fv%_~l8eL^R5r^54Bo@&)39_B(yL~^Yu?ir zY)=T(MQVs@DOgB%55P$wX4rL^ngz@DP?>J6c-LR;$@&B^w|}0sANbx2H?oVBA9_FG zhkpdo+sXXAI7kv=d_Z*73NnOD8Qky#Ge=er-;P_`TaGY$(oROzK&O1)HDAuJ-2MJN ze|OvFqfDHkrxM=r$miS74`f5mmD_C)SqsTc3x_XqKNq&;1IxAF6KaOAZ<)f*I(&%n zn>0^(`FFgW#eEl$_@19fbLLJw5dWbR!yo!l*8h(mi}JU-nK2h#G2Fus&jP>0YwK{* zPR4Aw2*ABQU!Pcanav?GfV-wNBFPEW?yTfc?GEhk1qgRdqar&z?gj%eyz+F)bxmEe`mr z*S?gGKYX5_{=jE=?*luNAi5Sp;D3Af$9eg+N82?^2uU*dGD`FAOW5OuUH+PW)|8{$ zaeROiRQG zA4|oE_?n#Y6B{6CsK z-SBAqX8=S5c_Ua)j3Kn|k4~~1G2vXuhM7jYSC&$>>vijwHGp?>f6aA@NO(GOQe1JxG48nYuGU9wfVO5lH0BohBO~rpd3(uop@ z<=ijj{8BW@chmklbnw7sfs&VN2M!$Ms;i#F0}q@8;(B>G_j*|-n%ENz1`7lMM~^;< z1BZ^$8!qyZ550$~oWy=_l)0WL6QTwV>sZW%N?6R9tZyU;ff9mLTzZeq>{sjGKi;5X zDkWajWCsa8#N=-QvHWGMLRqiBpVb4XJa`HQ0{$9u#an6Y$v|II-o0| zE;SVY-L@k;rInzKJvJ7Aq*gc#!N)}IAUk{DDPA4|(=sx)Kwk?=8=_3IbEJ7nBflKUlmV|3-uU1CfSbSUnMA#IQBSDY z!A;N%V!hqUS`d;nX#&!+WdM;tZols|0I{hozy52##hqWcADQ>C#-fuHF&ttLlnzMK zDA#FXc4B1!>sUxNT1FY)td`hIM1ZP7hQMMk$5X{lfd+`5vD2lCR{7tFOj8 zk5-bT2B^JnDDBfagvP}hZdsP1h2Wl#e1yMz{eMALhJi}4iDr9q4Uty(GydnsiQ6s4g*h~TRTlFB)H3wW!TH`UQmiCXCs_rITiHEz<6z)#iPff z!>D7eU#(ctRp!AYg5~WF!MaA8>kr_m+*U$G$vaOG-lC=NuptjR1_XlvR}Im5Bix z*>%3oCh@g&O{x{6(vhbSd|*j>4!eSN)yF1^N^4SQ*sdi|f|P8hIYTs)Vw)`02oXpV zN${SV@81!PG*GniXi_xB7A3SspwU_oOnh7ASsLs4 zNr%ogLJ1D)gkB<N~=Wt5m>w0`4II>J* zt5_c~1c$2Y4yLKZDvJ-EU^Vr77a;^?8S9u&CM8LtDaMY4{Q@Nv5{W|4AEYcTEV917 z9>KI!Bax&8oRAE9DW$4Nyub#B-`wWo|K>-y?wh`u#TR@f8+Y7FCQ7ni!ni012((I> zOe&-ln5v3$>slc^vEH|{l!amC*cF)bfofb*DT}kw5iqqxsn!DLBADP!WM^6*Fvg;U zM4@oTlcZ4!8Q(~Lfk*?`fW_|$K0e;o0B;Rw&;WT6Fl*Rd3L%=huRAxb)|E8bbZMHl z8|-P|UI1#QmeG_&H@%k7?rx`!U8sY6F{vr*IH^0?WnF-=J%^aqwC#S^Wur~muuTo( zsdV(b#Bi6%HUmD<)IHxR;o8U*cfX70oPt_e)^9f;jnwr#P}#kPCMYuxX3T?{UBI;a z-x)A=j^)_x|K|8E*gq4jU<&4k5KuBD*8ZF_0~|RR@R79q@ zl#P7&Y=3pHX?C2(jMAaKH+y56Dn@yiK34LvU2MaEOi&E&BjfJl>$M z$hzD`w@;;tb0vlY>#-?93_ON9U~esHn#ZIB1=dugX+~FuEfZXjtoDjcLzgtwqTu&@6V$t!6&YOLceWSoc1yGc+vm`FXk9 z{WNXwww@$9nVI9Ue`i^`&AY>e2=vB!=n>d2%PG6J33A4SmpW)0^vrp?*VS$R@eXc0 zUKZ;5*1LYkPFcd>9HCBJ6IvscM(S+lnBA?JX-$wKCHSg+2k$&~r^z`0C3uf3*U)Ev z2@d@vq*w0xI{ zXKI2!_t<{^;#*(Bx4i8`{N)!Ox?o#pMg<>w@C;vf-LwX?8a{(??j7-uHfntNiAePu znpyNW;M_riyb2Ne`0@^dtC(&wLDVJeLd*h-s#VPnAnO=-(^jwFXE@w@O~063ckMO&jd=fb zKZZcanv+-eZ<;2T1tyNiW6H7w1jFHgB)K>fQwYJKLlMyJj)%y_u9E>oyrwTk>UsaZ zeN%bvnLQ|gM@d;H#$P&Tw|%xV`;E&}#(3`Yp35z_-i9Y2gk(}wv-4+<^LiiZoP=1m zXkl^Tl6_}m3}?@t!+X!ZeJk|)7k`f^CAs?e)!cXA13colNUE{~eT7lzwTvQkFU1ltVsK7v6QW{#_rT$jX zFlPfkh>MPk%dv>JdZKnhgO2(d{1sHSDiuDCOA(?UTVJNM`2iV%4kO;_Ag;pXK8V&H!gJ(!H&4Gja`S<_f-%?D*lw|~flLX4L zBFhtGmc)8xwJf#P3S$CVMnFhw1=f)!5~PX~*LW&GXhotF!U&}E2qjU{QdK2h2!scn zDngRRtQTM5t17O7E;3A%_oR5T;1J`Ao>UC8BrXEp!ghsB5|*zzj*`=0Bm_pINjDx~T(0Z%o;`Vz=l!#<=f01B3cFq40vH!CAqGltM*Dq0G>! zqDSB<8|S%GrnoHS@b(7xr8%FHeTHeqX65KD^*Md^e5_fV#hT8}`F3*>LSSJrVO&H& zHBAzzlNpo{oJ})~hbzMb9|XCt7;43)gOxOAM3kML1kf@dvxJ4sRm^YzK9DDl(Rhqb zCD&9F9_S62^mFpfZOXxrd-9w?)?>La6rp6}K#wDf8oxH8kP^{zOiGLPk?pKgMR0=A zC~h#kiPGFsX%-I(CU%51ag*Up&Em0923jeBwT@&VF5un;dc%}Kt~q^j3zuhz;3!2x z7C;IMX`m<_iG=O7l0*nn*+;92U|h^V@{Tl5C?}4Iu23pN9g6kDDI@dLlpd{O(u5i+ z(t)NL7o6P;Z1*y*d(t6J-+h`#9^6C(&7+0kfG`-UI4^`}dqc3il9S|cc(Kp@C)Zd^ z9sMl9Cn&PoLh!6_ID|-9TGZtIgvyi%7pF5G2C2eXSTDB8a!sBks2Y@P zvJnSEjdh-~j2k+Min2~ZP#Q~`)|r7>LMq}^%F~4HVvNiLNQJ2;Bxyzv5?9xfCV&!} zvW!wu!(k6+H5m#Y48}PU1o?s@5ExGcu99da89N&{N4|BZq zm}1OQo`Q!-QBjr^B2BR-fOdpn5J8eih4d0_JZIkar=0z(cT=o8^3-EPfk+gksZiP@ zg~wUYLgOnaq(RA;>|w1SOEWf4KJ@={_vTT%U3H!3XHVyxXL#TD-rVHgBsVh&1TYXF zfQn^6&?-?Z6~&=!T`n!kUe#LNwYrxsyH~qht9sR{!M2uY+kdnT-4?AfltNpA2$q0S z21$T0ND`7jhMPOzcX)<#&Yt>@z0dQU=eg5+1HoFoS>e6U^PFLyefHUB@85U$F|0}u zk;6wSTpej@yI{>)=kPue1eHo?o)#JxeX=)^DSwdnA={pGcE`}R5wt*?Z%qC{?-MK8 z7){LR(9&+$F&I=dO_P&&?I1#ut9=wD|C%=nNNLOQF2)*0FB$LWI$KKR@| z=jYh%Y*G6q&fsFz>fbzg;hM?(VqjCG~@tNnU+0(k}O z7lD*ZS)hAhMK^&L-c#@FB9s8{sAqGUojsb}S<2r_pxoR*D~+j2%B>9shYq5v5;ZJP zg95uZrP-Y@-`&GIN2nWo@X2c0THMT19=e9=z$QTo!n`HSYuaXxXwsZkWo>}3TVS~` z7oy38n)5Az*FkiENJwNaACj9*R**u(=&~2@SstSwh_Ke82PN0tc?U5B&OY)Ld{cw& zsj6e_;NH9l^EsH6Y=#92B{kX_Wobk{J!+xnlduXpGM9<3e%6!gjZ7D{7+Vnv$Cz5 zA@#EdsN5qD6DR9d*I&QVeEg%&4){$IreEZ!Nt{+QhojAwU-5b_gi`a zwBZl_(ANa~hU3RqKI_3zl00PfJ~i(0LHkOthSx+~1&f1S1J-0x{9d$fvvU{xKDM*V z)-77?EOAGJyv@SUCO3KyO;xNkV7Woaasp;JKSp67k-$x99WRGxzvh&lp8McfN*h zeMMKF>^8;uq}-+RjmX!Q(w!{k5IOFONb1g_C~`WMl=>;ez{Ys^HO-ZtciXLWHo@tw z67W8)^Me$K5Yb94=G~VoANb&h_}PE_U(;qqc!nZm zE1OI}lna3P*_5M4uSaW*wRYtlCB)K|N{VH=ru~&PpEkzOwk=_wdB*$Ym9M&oxBs8- zNKSTA?n}Iy>byFyFN^&-GK3KLsh@r;fAWDpC5FI}Yme}$`##R*=H&@|hYlTFT~9nm z^2RRyB1ma2rIcuG7z`@Tojt*O{{8<=Q5I|+Jjh#r;h!?z2f^UkmWA4P!N1u*uxC0K zJ0j1!{SM~y{g1suh=mi|64<=L%3t~n8PHAFrby1NS@)Jy<&a|1ayv0M1Ny#fD zF+29IKRW_IiZo`CVrjCUi#;T8bvm7;_#pu$^&(Cp)k4W`fY7 z8Y$I4goTYiEXUvFar4%B+>V)fAcW+3x8A~|k3UYI(7jIbUlOI)iJ;%u@|**|kOI(J zrJSsYh;3RN0-pmU=_ZQ>YpGD0r=L8||M1`b61P3?7PLt~$s4}wb-eWMyCE|L>bgk) zN7Lp2NWeKySs0v4D0_&ovpXRwgO`#zLL3iqLK8%?)!jL_$6#2GHxWtz03ZNKL_t*H zL!c}Q+WDM;2oy%s?6hc+001Kdr4rcMamc~dvE>W4q%2E94vH7m0B>{tB4k!kC9u>K zI;qBFvUDsiR5351U1oUl0vpP5`nB~YuX3WSJ6=Xv4l-#{@K@Yv_Sh_((BHLdk% zDF}I@rBEs{-DGmMW=MBgCnoHlFAOWsI2C@|DM?)U_c>%S|u2g(n|<3i0~y z<+j(o21MlMy5`h}Kge}2xQTO5JjwLbS?)Nr#fe9sp|Jw(42=zl5I{(Tw}e75pDXIx zG91s7^MQ99xTa+HWJA+9ih&`Bln2|$q}H6x=V&DmNR*Jc7-`yMH7u1v7aHq5QYEX6 zLMD}_6dHUQYYVM$Qx9lDSzro-vpe{CgOnN>lHD6Bu{xcN=)xo$@1mgg4V5$$ApxAF zR0t&*3?fY(*xhlI#$-@0<^`Mux;LJ69Xi7c`py2Pv` zda9v9jR*J!rh8M$&4RkM1gB6D3XyD3DK)|ceCr85QbtMeg4sMNbFBiSB=g`92R_kB(Mbc`YJdf;$orOfju3V+P6dQ6sH}) z*DZot+X4aAQ=|4LN&V03*W3^MFYT^OUi4>BVQu!?-+pBh*4eFz<#wwoQ@K#sb=SF2 zViHyq$0@gy#M%a#ftgORtfD4nr-*)@*zP*l&)ES!{RLF_yYmhy&3U%neaqKwpYEPr zNL{=RtgpA(g}~$PJQuPkzSzIJ^L1_2Kdx2@Ea>vbt~2!0y;X~xwCi<)#ICi|IS}#A z;jG0sEzza%G0q#B=>!qMc}Hb*x<4Y3!_X3`Q`&~uItU)26s9z&7;)2xz$Y?WVUR8` zuN&NSPG~G5#PhD}Vr{$5ChaR2yJt))m2wf+4dupWW_b&IPStUtW31l~AwiESj^6bm zl-8X5(j(Z}92G@MXVN18#1K;69v@O0Ih)kdA%OGw*sH){YimLX7?baxPl22S`Yo05 z-M%ikh3d55C%a;EAgF25yuPpW?*p9O-)3zivpePN7)X>IzS? z#TP5>*uOX3VlGQJR{CDo-d*4Bp2`0G?5-!qxL7O#Dd$w0t}O1EqCn8uPc3cW5n=(* z_1k7WFuGpW$CR$DzYF>VlV!WEl4klU;1K*upHB7C`TCdj3_ehn{$rAQ$r2b{?^zMdj-U~j9sH>iYu^Z@9z$4F@0ORbGY7b7bCtvp+H>?LnsE*I73wm;@ANFe z*2uMOLcJfw@5W`f>B@L>%x!nw#%DkN*-LL2;i3B<;-1&vbIHvvmM^+r{1vL-E>_->IAu3R1Po50CP z^eN><$mF}2i6>ny*_ai=LW*?kJZ}nZn>Y@tKqz@-xYn~QLI@5YIn2ouCl+yFDFsd2 z@W`W&F5jbTM5ahggb&e?>(WLG_(LoexgvwO-P~DeL(KU{m&eO@vNz{Sf0sFW>CKtX zTd&g1pYr(xbU=280{7=$9YHa6VCAwBi{o{`F>CY4*sH^maG3HQw{43LK9NsjQV@|lcW`cdJI8h+fBn~==j`H-=$CvZf*pX`&5Zk_w*}2(RYe_A3 zW%~o%`QjHZ`g-twe>r|*2XKi6D7fDTyKOD^-S;=lXLBNvuYUCjKKZE!c*A$R_VVWq z%f2z6&w16ie0#zX*6Q|KZ~Jw=?@ixx+2g(a9ly)3{OZ4eMeS2NSlf07TO9MASKQ5K zAN)L!h!NIWP8~nNZ~yw+7>!5#{_np#5xc!hv7!(d4u^d9v!A563@C1`HG8|0 zybfnUcsP6ZTo&DAp!2dm_f*{TU{N);#}Ru zrgeB$@b_aV-Im>JG`~}0jx+a(Ah6ocQ_kS!+EL{9Lw~v4Uz58&kvpz})ZO^L+_`JB z$Rm$F+S@N5b@86=)lLY+Hy}2Asq)~Y47@gSPv*|PiS5iMfX@iYP&FM(r8KsD_ zU^Z*`;%ELAV|E5C}pt9+!|`xB`i_ z5rm{DG&|edc;{(bmnI#6HaY>kk!(qlURc(7e4FgfIv`aG7?>=P4~~%(2(YHmG^((6W}9n{)cC|?z+P%N3u<XhOh7a3U#tk&<9az$0Uz4G?{xomvQyLw3&L5I_b#W6I=@FMJMeOMGJy zDg}Y2tz}%62vQ#67=2Rz%JkwYjK=wHrjrH}9VL&(iWjw(ljFnKNgA+%DtM|Gb22LG zwxv>vv61Y}YDTU_l!oA1#JnaLiHw1%OYFd1to_~x<>jM_T`BqG`#!({S`JSf zJCkjyp`^jlG!1f~nC&>mhYU>&NUt!3VK@j_?;sfJS&LB;Rj3R^B>=?PWCbp?LdyhX zx*%{-;M;%@kucJfqM)2dD(Ps)1?{|nASk4y5rWn_;%U#;p%SGEJT2abWSboYI74Q8Kyi} zMri7ZqdXFk&y-Z!VYHzRU zj0%De%v+zf9d9r`dM!xL0Lkp+X{1qDj`#g_N{5 zJ@-;I3=WhWJ3U7#Nm)q71I=VMqbN)YR69>St7&HqLPqeB@nArq4ayrZkyuK6uqdNw zUCrjkfWjDpjm&2?z5wTEl)9u17Gd)w%R^{9A_PjQ67c}Rya^oG95LOSVS}f2Fe(fo zfcKKNbreOKl#Z$*0X#ual$x_U4NYws3=&gNX+c$Lkdn3zNG;J)=81}@D9b!4zi{5u zuXjl*t2C~9pPnu69YW|ue%>wzaDTCAt;HBaj1gnZLec8IM{AR=2bLgHK394_r3GM@ zt4%Aj0xGNnchF6^G=imqEx8zwm3*rpOFEaLV=u1fd`$U*CC~@EdbvFplfG_2&@o?E zLAHJ!`ykUg7}xyIjFWRP8hjrC&_wNK8 zWxzIDT3-mb>5kLC#(sZEBr~tem2hRI9WZTnD0UIt@=Uj`$ zHHF|;t~JJx2vyTLww|L(Lopf>gv8Yiem=*|Yvw0T<)DGYj%GB2lG+FAojscE-DGP_ zMCTlJzA7k3LwwURvlctEw0jdob~UMYC-|mCMHbe1>%pBBAoc>l@P*n%DFs3>J#&s` zGG%=Aq111P3x!0#@1(yeKc14yfOLw>2t;K#bo(s`5qbK7FJS9>Q5WyrV&14p&wmIG z?>u@uA`qywPWIC2s7s=SREz&uBf9hf+AeUG+9SCNbk9%+@)?sz4E?^>^~ItnQlFKn zUGifLbYzPqNVO-eO_6so7=fx&*Nzz!qU*rY8$U)deFc21Q0V(f! z?18&10#fM^F|Uq0J3|m6sicigpl4bwCDm^~LL6gSA!V=_CoKSew+6D**YPi z55})s>o3Me*^x1pDw?jDq!b7g-lxUB5F)ufE@9`~l`v`$j{;v61 zmN=hL|JjEa{?HF!;f@J-SuLyW=T3ix$zT4?B@Z+D=6{6H=jWR3%F7Piz%iu++_`a>f$Aw@Vqo(5f5pa2{^#Yfgh&o+{Ua>as@$_?*uk@*l6#I1=%iptR+k9$Pb1Dm>tq=Upryt?1FS(t&j~rZV^AB#l z{<8OS=2k%#AymroEJ!3l(lC7CVK?^vW|C=E?X88Ymw!cssFDg?kJGzO0N$msB(FcZ zaU}SV#U`;^x#bw3OTc0GOfCZD0f9=#%H2IWi!g@Jq~}SNSDvf+N{dur+XjeP0JBVG zQI%y%ogzU*ndWaSLG)y4yacqRNU8J^@kuUn(kEbKsoJ%+BLRx#yE4z=yLIj=sV)I^ zO3LNf*5MhwIii#@0ieOj~#X7btb-lmi&F6DY zoH&``5X*}mu<`L!cLw% z#rF30LV4d8M~F`S8o6RCU*~O7)duik|K`|IBqe!l+cYK-*$3BZQI0+RG*3PA3_91n zb2KPSfwPW)&+C=sl-0C}n4QMs9An5Y5t)}G-6OKHerCA_?#~fd*4d)BwqA+P^?Fq7 z#=Y!>*4eTz&X-Q!srI4Q7hwS$ugCYg(#2R78!wJ7mVe{g{fVpV@D%`9hH&bK10wV5Fq3YrM0FkbJubWm2Jv7|=0bL}XNI3L~)uVpXtl{ZaJhn4&T$6}a>H z&qo&q>wKOxB|mu~y9YZpYEhPKjE0Ox70!7MUvm}r-2Gw(!zu+Ynwl`3G17`c3q%Nv z6%6oaVGHpI3iwl3w93xI9$(+SqPMX;i7 zEwgz|jFPW@{G&YZ&UY?=Uzx#TAq37le1IqJe*i562dV;XJ+gHatwTANR4G0{&Yvix z#Dz!{0#j&Igy0<_1lnm0A>eGvxz^giw}1QJV`Jk8Pn|f28I8F1rt5k1D^H$8BsAnh-i_NEC+AA zfe->^SrA;Bq>K-4(O8$j{4*zL_V#ERht7HLgb-*YX=YOPvYm2pxx@oDsBkCeqdCN5H zifmgFW26$v_HC;&D3R3j=_MC9E(c6b&$;VO-%mZCBBUnRz{6(DNm)=9B~u}py1;NW zfU?ZF)D#pZDUU_U!8~mn+7P(=%voM}`V7Nn%671vX?B^IKr>QI%YYiB=WZ@7u}Jq| zxM_$8f^@XjGT*h#&c&36R%&SOf$p{qA2h7mbdcoP%w zw=*Xeg82bWbAv)w0T%a1LhMEp=HjY zf8^XlpQ4$Zrg{9UOdop!Kbvvg-7n(M&39t1y@4D5{_Apa#*%A&y8q%!Ml z?L`pDVE{qf2E3G@6;jJg6cBg^vaIk$#m3R2=#4Feu9)miDawL2q=04H)>MN6Efc6I z2~-B!S)I~8))jt-Xw5tr=^mbN=mLBE3VyATs2H8Z1BYBfRx)oYtRO? z7AOTxGpC-8;isZ)O$k4Mbgn#p9!_SqUC1!bif42K9AP#Vh0FdCK&2b!VM zR7x-&7)HZ_vNQxAm`!E~0ZOF26t?!bHlUTGDg~u642p`nfypegJ9C`fo-rsTQYNcn z?;Xy17}ltr0O*gF#m(Gh}8Adt5>Z&M&&lI%T6`7(`8xjy@Oa95bfy+v_f#hQKtkzFw& z9v|#-fu6Ql0Ky$eu)OeO&m8FkMX9dV+Lb(@>3X}mWU$8j6(F|{cDT$2ch2?dx~iD# z+9`o?G6U`&>r#$strIY-vidsRr&X|~e-HbLy1p8+yT41dZUTl9(I719*zMB?Q`WDs z``b-y*O}`b5Z70AUntk`x>~dQef?Uxvi|$xd%8aAi7WS=m1A^3opW~OnOf961bp3M z+lJ=sHoH$f!{pcrW+%_k?oRNwC3r_WpC@v}cz~!1>~zlL#AzlcPE&91(C+Qxrc>I< zlx8wbxv8~54JzbtfG!6Nwl>+i=4v*sIYhNFOr*G8eb*Nh{m)%{uD4Nl|GMWSvAQGm zbV7aZEZ#N}unw=@_?i61)SnsIoS+ceF9wA9UDFG!5lq^Vjd|7=Ca^9b=U&WZzty1cR zBGwp_$F5@04&8lSj%&r@Sc!O;#B)idpGXwWrF0=}TQ9}~k%OW_B(hF=UIa=lbL@0| zT}gvh#Y#^0bz(@$9j@r4xhZJaSvJd_vOf~>2$9CnP8Gc*q$I_^RtEAj95V1u6i8vZ zFynd8P3Jt2&Ygmph`4ypmn4AY^V|R29jB|$y5)PpCp5b!vD0lrTQ7sVfDlEFHb2L0(!IbgwTafKszPNO z=?m^J1VS5xQY@lWQl{-Ma{TBlKIcsvzwn>Yk8Xv@-gB<_1!({J6X$&=^yLAPOOX^p zGvUNq(?uaJ$3%| zmV--xlYrkx{@br>Sqnys(TLGc|ID*HmUBzX-0pa4NVMnMERW5lbrY8kBuAoOwP+Sn zA=IV&()82sKkvJ68CyuTk9*%Q-g%0m;1!oq@&cSbcACdN|JcfReb5(Rc$sSgX#CgS zXCf>J%NHxH4?MoTs@~ly4KF%$X%+u)&4xCTW00MS_EI}%vRM9*V%i}Q?v_|@9~=h6 z5UDrv?j^D~kOT)YrX2D>^qyu`Gu@f8cXq;bcgB2Di&V@R1m-`JZ|#|SwQX>)vo2Jeh!LlEoaZ3SvW*>fR1;b-JRXEMvbc~*RBnN_Y2TBtywcT-htt< zbKU3>+vMuHDuyLc(3Lcw4hs@r$g1kitpju^jh2{JSEoFW3!V`C>iQ}J>mi2T+^e@P z$W>mQ5%lH|F=pUk2@k7oy_$jE5JGmYi;MY%Qi*7HCAoJmRIa`106%ey;M+FxT3)30 zw3MP}i@H?RU9NoRR%DU%WF0`cToDoPx_N8N|4YZ2&l92b$dMyd)urE2mnxl2bc!z| zQsZKM-mU4@=FXQYsea4(s}PFK%`L>0pmV^+<`#pEjfFeVeor1&o|`m&Tv_QcTK0YJ zwDyuBr`98P-x#vBc{eB8|K0D}J?GlNXSMIuhpwTjstm{rY)%iEz}N2i>gX^s6J*l( zk%-4vP>&o(lAV2ju2XVXh>2L!5m~RKXLlSF5wokxl@OsK#DIt$=_MkrVE2ej&Wq%0 zBN0=rwS=6CO|S&)le+=XOYatA8cTh?YVRXHCKNc5oDjP{n7Tt;tbx+_kw?E}h%VJF zB*l7KE0V{}?9iE0VMWC9x$MSDScz|T;PG z(TWHof1j=?EA@Np^yhr7c8T(wD}H_O1ZPoNQtE6E-#!&UwD?jo-oj z_kRX$N_^8W(vtSX2`~l4c!MCIs0{PQqqM<$M;jtr8)MqtZ3>+fv$m;GF(6$)#)!^2 zt;#5Aqo+`ye2Zx2Tz%l`w7|_TX^9|u&wao78+`Sne*uFLcmMEPkh;jZBy-0?FdSA? zN;1?HF-VL`3u5mg!UvkUr6r(;nz{8@-=gz-BxL2V>DtL#T-_qHW^Xp58dUuHZ@nGs z1Eb*p>pkt$r;}AQaQK>oyz-vAvpOOJ(xiNj&PCq&oqn`)&7d=N&img4=IJ zE6}A$6A~f#wr_bkfB46LjzS`=rwEctXqvXhG@hswRz!sM7^CnpCZN}47Q2fqbp28# ztMCws&QfYa2p%Joy=x>53`te05oUl35z(d~d^H##l;SHN{TQG7{dcl`@)S`@?)tv( zt zZAKzrmLu*9TePCY@6LEh;do6kp>6|haJ;;jq7M{|KJj5*^5Pfs`L8?!M&U!?r7ymn z8%`hRhKC;Hy*Iotfz3j5+x#p~kH^$fF$@x?1U3f7!y(h%ZM08J)a!SrT-WaLk*i7$ z$$)i^=}<9t9yKyZE3g(k9<3#8!7+JoDva zFc3s-c=9vHx$_0DW#h<=)Q>;HiKkD}K6MiNxksrdmd&jKJsR@#hmTW@3ZD7WF=i9V zU3cF|B_%UwnVy(xQTrPO?`TEzf061{@oHB#W zOQrCI>I^JFmR`NP31P~AoWSO`b;xW3E=0<^?0rD1@`7yWK498ie}6*Rwe`v*GRBoU z#~4UCSv{f4k=eVy9Z=MLmk2*{(NFr@_piOXw*I|a2kiU5t=F-?{ra|j@OT{@?zhW2 z_|)xpAx33lx~I9BQVJUab~YzimjGe!kt7S+ASLC-h{3@FDM+}zOS7Bol*zWWN^5jc z5D2)&GM`LPg`pS?sC}}HZl*J$b-2bZtmyi-x&1o#>)LPUh3#+ezOMAakQOj|$4)Uk ze3-4H*Aqp$HwpaoD*-H-Eo2k$7FUk1RGITaDK>Aqfe<3zKFI9YX_PT(vF5~L-4$X6 zCyS)QHO6GJs#sC+irxZ#8R%jGg7*94I*8ft7s;ZY#r9qQ>-Je#C$sDWQWk`0i7fNK zE^@)<@k28Dfl!`MP(W7(8-)(DA%A5yUcf^lw4C{Z_IX$f3o31Y1^>^3NZ-)?)MP%Rl9$470 z_s7(}>brmKovTD5F!+VydL4KcV(CmF*T_Xeh@J}lIV=~!Z!c9=^TDq&%@~1pE*Gc0X@2z z>bmb*{q244JI_w}xhU@O$B51?b7Vr2tzD`}c|i-`Xlr&q{5GbadN<+RQy18AS%xqB zffb-ThKAXr?_hMtKUsWt?=`n`bur>}d%pGW6KnZlZy#U7mnW+#t6#Y7TUS1Z<}7aV z_<6^wMitZDi`xsg^`*hLD=O+TZ41P@KJUBg4c|%q;XlKE_S08%y68Kr!DSJmB(&SG zP<^DbRT%b~i(l*Z+HXRws%}GjmKc*ePuf6I+;R`?Qx_*N%pd%Z_`m zOJ0*cbn_*Dzfg%W^8A-QpU-^kGwhtcI3WSx6My_y-1z((DK4TA9q)q}G4=aXeqFM} z6)wz0%cwYCfqd=~_YvTwJ%unpbbAC}(?bB$-xYwaSF!wC7u<(Tx|5x4ZdhWLF%lUj zHB%-;fgpw{&N`ZDLueh=x+N&(lR&~rLGT7?+ms7fcJIn;2b}}bIRu{q+99NHy-R`& zAxV~{;Tw=nA*R5(&rWzr37J4?sZw6a&K)LnKuZP=IzVZqy<=+MBZsfy#L1Hj&<(`O z+-Z@5ge8z55eu+*aa#$C_w||6%klF3xxH8h{#lal@SYpk+@k-9lTHV>d(yRGoIP_U5t(zFM3M!u=$>sAWJ_EK_(gznr5>{gs z0zEZU>krY4kF$2;2rBS4PUF*_wpWEO(!sR7O$p1qm*F%-Z*_0zb#pa-E{yv#T z(2>4#HAuj2in9`6P*u#Edf9E_ay(x2;ck4(YkVPCa99OmkpePpw`>&=*H!FkO&+p~ zMI52P9%N#MS=&+#N=(i!7adGd`RBzND6Pkw-hqssv*uwbXnm- zKx&OFG(LhVN=g}tu1)rmF=9kS`<6Btfzz!FS(A`}=`J2DN z?gRH@LO?~&$A9I2q+zmJ_J;A2FV6;4TQ)64_Is-&niE=0^g z;~PgCJl;oI+hU56K%{X2Sq+&r4I8E6tB*azY=FV@vp0=5QRLs9}23=NcA3sAopQ1KPHm(}e zv<(NZzKSr^+;a5|$O1-g%<;#MbL~ynpsNxiVCVE1KrortsL~LkzzfMdMD*qsPHEi6 zkkM#^(Qt@TCC(^7GpL5tT2K{|`iZ9zKF{f5vUEv{pQNVJO5>x->amD61yYbqdzB() zJX9k%GAfA9veyKv!2w(|LCcoI*Nm`UA=@d@Mp_i}reQK|k)`L}&$hWWWi4>eIJ+N@9;j0@)TWUW3xf(R(tG0@UA zAsj-13IZuX76#Wu+9u!tlt630ZD8&K8cC22;gS_gInYQIsT)hB70$;@v`LH0E17&f z+oDuw(;Tv@x4%GHf*O5GO(6s+hTK^;ujXBaW$=0dTxP4SNL<*-_Q8U6(6|pCbY&et zkWyk@vjBI5=#;lJi7`6xsW2&S_!O?B+9d&#Qot3;E{jaI9GZ-1NB zzmX6v0=cjN?}Ix1WAyLgdRz9lT?ae++xAt*eIRey7a-Zha$f1*x1`|g#;4q`RBAY- zy8Olx3WHP{WenwTj2e_FPZ^2*8ePEJ24hkX((X*KyAxc~K(8I7O1XrEgQlG@-)^ZiN9b@D0L1NC;Ernh@ zZy~xxKV1+KAgABR_av&EXD<@8Vsz*r#dySApF@=fsSHvU_@YHMZL$Y68Z#cE=<+(Q zTArt%naj#fLG(FiUe~vRU1^6t=-PdD&L#!0GK6SX`cglSHZcREovJwoh@HwcE!>lh zuukuq!b0B@OGA>98Dwd{4Ea zmF}sr0ly>xbjO!@Oik~GHS&XqE9Vk2k$U>B32A+u$u!v#RR~Fu0ki(|v$#)xSB&Yd zxh``0kl&r6w`o^ab~z6KKL12gYoyvlmt)*~k6>$}x1eMKf0ap~uTpe*e*b@2LSUBj zua-yOxC(+=OY_nHbkSYKc!Toq-HX`RKyGdlo0e!>gtbIt5JiC;kCBHDqYfY8+<)_P z7X^{ybV~i94>5S-8~0sxp$GVLPvQ4Y6Pqc1avFE~E6g7FL)_`}fz|b*wytITtv|8y zo!fnc$>07vhPVDBgdPJ>Db0`G_%eR;(Z4+J7*Eanz^~xT)3YnTUsG-J>Z?`(!r9}$ zOY}7{vg=@YLSL>vnd{#!{%!N;EKr zn)cj%lvllGvCa53Kgr~;-og3S;JJE}(;WY`?_%_l??DW=Xde3{&7#XpxIVIuA+qHEbX^%NTi50lcLb>zpGtiO>&T_KdgSx-H!Y3D7z z?HpCQHAJ#Lt}2t#`sDnnp|J~qaFGi*lFU+ka^UL7i*)Z;$rXY;&%P*=<`xMki71(z zS$y;;V;FA?AV%7zK}eZN)g5`;;Qf+xC?KU=5pd$AE{xYbBEKMs%PD2?YOIiqHjKm(1O4sq)SJF6MJ9Dfc}e zdvY$ZbaTclONkZft`R!8Ms&9-x6h3?>?3u>CCYFx;HrZMdFJ>Dy7)uaztWnND*{hp z6(FQH&%csljNy*w-@%t2dYDK`?R7c8a(Rvpth%_P%7sc=R|$Mf&*px26_81=T^ysk zTiu#8F2S{Zl-L2-La+c1NkkTnz=i}=rZFx7uuEVz)j>&>-4aBOf#j4d@k-YcdA*WO z&|!Nr)=T0t$-3$uTa~72OnAsIB zFDL29Qsn!;1eN8I%+Pa)=&rp>+tv;8y~k$>BzIf)9tPR(-i#rzx+4c_gD8(RYTtUuJ`fj`#;O;zVo%b>HEK%>12P0s zDW{o?flxb+D9DS}BMh_xYbm5e5f~MU z=px=nDlM4LYc_`khpLLvXh1;l;5**V=il`%HVTCxFdmjno0^@+9_By&+b?q8yWYc_ zfAv=|hmWKQOKf@N&%TxSedaTW$rMS++Z9Vx$4{=JL54iLKyW8hj@OK2Yi2Ti*0@Z{3MH|# zz}f8vMG6|2vEsnt4R8*-r-Mh*WAsw{``+KdF&~?lI%YAWo*>QL4lY!IDLxky2kEJQ1dxYo;-~d zl6qr68$CV>w2PcNdzNc&zJZfxPczw_Qw%HguwXWCQAnDoQKJ#&;1*Y3dn0CJ2-Xse zP61t`k-{+Bo>Pnl=(@qq<|&7IIS9L1R#XSpekvs$GeF4HZRx&S_wpis?apiVPr)!w|L)Tlx8|_F-FozD66Ef zTUGu%ccrt!CBF;SmAC84D@c=a5D1ajkk;B2rDq>32wB100fv15xxb+4wqMEH7{ZDg zt*cMBeW!}+K3i)SIXzQZ1;+ZIU|*fq2W-1*?drN-&pyb~ZR(4lP6D}^?lywc_UB~K`GYC zJd|O~(7helzV3~jf7b~#90OY`U^c8g>w5gpF*9&Arp-E_J6tn!&`%DJ^BIu`CZ|`GS;c>r=eLhNBd2gdbNd~P)pl?Wq>O2p&d`IWi>5HgK} zvgqp~gPzuP@mYmVo6c3a>&)OVNp?~7W8KKP#*2RZ&UKsnaqdf6>okVMcjSCWmRuh9 z?GP;1+Bh$yF)gbFtdAFQQ)~Nrh}Yj}SIW|dgM-g_EKz7R)C&w7duuF04Ngn9b5i+| zr18#Oj1TwLhh&S)pVORs6NfNyn{PmL^qg%Y*v31HYv&OF7TJK|0fV?JiMYQ!$+k;e ziq|!HbQJ{k*RSKwpTFg`^*g?WjUWB7Bi~D&K8=6rrCa_!|K(p`@~z)G019_VZtpx7 ze&*}p^YQXm1t)*_U!sqnT{*mb?$-%+fw}%M%2NYy_}ve@fuDc+{e(5M(xDy8wg!fH zvoZa^gKzHHX%N|{^FRN^c($D*$^rPT?g0G0`1Fgs`1I`=%r{K}zVW-hiPwM4>-$6M z!L#^_w|*BujLUnIRDSK-kjIYWuV1_A?>Eov<^>DBNg&0rmffmuZ$7)aSOb3b^oDch zFZ{|1@LSyTDvAeQkGT!&*Y98C;E(^=ZSOr!^`l?4^8IEiG~+bg7|OYGa)(#E@fAGz zp(k&7eh7j0{n~qZ@RbkVQU?5VG3A20F>ZHGzjf~8w=L7Hk`#jXef^K|O{XI0{DxE8 z{F~3-zU}?PKmIsB@VZB%iXQOpPd|6t^Y7oD^5%PvuN<=nA4=dw7=Xf+Bzhn!A$CAE z4rizU5Q66L8m5`EbI)0HFN@s``FKZY4lsNBxJ83EHeQ|9>649$LdShvFF_kZ5A^0T zuFNVSM0;#nhltEj3xO!45$&}vcZzF`1k`ws6D~>7O18ImSj^`v<_i#l>1>8EhPG+a zy3O_bhX@jg-tgY9|AZt;f#r7~KzM?WKtpEU#-T5yxRpMF`hj##WFkWZpIop5L(E4| zL?!@2WE8UBYxZYGXeE~`gdQk~<&XQxS3LF@Pd@o%dKIB}f*Y<0Xjw3s)^w)DJ3~P9 zvfdCPcuig(NgjCM{x9eq1zqrDx4{$pdk}mA;qs5s4(pRF@=?-nT@}1!b9Urn&1BI z--*rxqrKm)@11`SNsaR^@0-dk$f0~i9tOMQK9wGoj?byG!qz!$`E-kFS4Y30(}K|o5Br<%&hJ!BnBhvpFO^?ahng` z#j)C_adFI49;V8EJc){c&^u}e!DKo?2*F~pggjRFY~aA)7&<6K2xN>s>qWZ8$FPp+ zmQoH*1w(1mpNJCWeOdaZI~vm&#@*~FVvS4BC8C|G&u{dgUxM_q1HW1qSP!z$AO(fi zbjy}Pmy}vzyCr2&MPmrpDEftqLOQ{8~ z(hi{{=i3G5@Q|sJusp;!`xvF8XRr`VRDt#mE$gf1j&QehR;Thz!u!KvhS!14yjWRFi_{+>89`kNybtsr$J1b+6%V|J{$^mEw*6 z&G+%aU;Jg3*3bs6@rEJP>CoH&|2zA83!O22VPYaH~|8W6B4f~8tZWZE?&OM zrM-PV@ZnDqgy7_f6I{ASzg+wwVt3AK`OK^ z5I!JWl&4nK(jYj0{50X<5CpWH?PE1>ESGp8IrIUW4VP^LN^+hWg zadn@|-f&8lNGYkO3hM(>c#3I(rQfFR001BWNklLUNijo(#njpR7VAoN!o)gC=be$zMQOdZ(QPnlB^*G_tQczE(?5BZUPc(C>Y8%Hv3Gfo z`Ad#^OJhSoiIOWXT){hsRuf#1ESF1yP!uPRapv^>xS~W)CRinC?2`8CRi;~8G}cj8 zHSK(t&Ovu@jl-8-qU`3h&5{tkG6+E;l*e=?ZjMl>xc7|fZ5deD=*86;%W~nF1es!L zRGhs3I0x7EXbv5R2->ORd~=98r!k$S6dt84)CwCMvQWqpj1Cl1VOvWfVjObk<7B+I zSW=e-#yF%>)Jn2kb`*u?;9yCRg2|+$&;`x1#U%i-D56CDatWJTir^&5LuU;_1lp#H z65j+uka*|md`C!|#G;S{YNn*u-^NCGTC38jKCJtwku03orl1+50S! zH5iz!^$8dl?muQ=#)Vd1EJ>t_M*Ik@=^hY?UgC-I7ebWe^wD!~U8;E|!4n}wk|cF~ zo<0m9dsf)!S&D0QGu$_MdNY>44au7@mx*Lx%=t*NwC|8lWX45yne5|Uu0O|my^Qx- z>i{Ki1DL#i&bovzj9IH;<(ga7=lB`Mz-LZlU~TLXKHOW7K|_ef5ve2FS5^~bsj*#) z?b^72cLCdWgto;lme^$kgNJgYwkxBt%QS5?K6wu&&Qqf85FzwzKAF7EMY!>K$M5N8 zZEx6641n#;oEt(22&Gu=?s5H@=P9?g5ml8oK$+z)SNht`oK0eWkp&`r0OP=e7fJe0 ziYTckW2~Qm!yAj~TDoOJv9(ETg8jO%Qeyoc;jwt6OvrJ}Kbtnm`4BmsWHc1O-pxGyo)uvcwlF4MU z0+#3c%z3Ssmm~q`y^BT&f8)FFnf@fljj-M)1{SeUF>J|t+esfNi>f~s$MSI>NsJ@Z zN_>QE9v$J7`EEJ9L%p8_Qc#79~RZ1lW#1cu$IZt&+hd#CPF6F4!bP9u0sZOH6v- z8|Wh2KFeJtFX;f*C8=+b*efbIDyir>AK$xLaUuY|I8x6?O`~zu=h%riJ4IxM_T3tr zKqMVGsSAYO0iRe%2oNOf`7iw6U~kPPtpCb4-_^bJ znFr}^1N?^h9Q(P?p&xtf=$YQ7tYb`qo$vT5$_HMzaeYMNUCiOfdIpdX(U~WV*RlN+Kdkk#FlAg3cnGpT z&)JT>OV6`;{65ObG_H+-cmqHv3MFt_pl20YDx^y54G|6X!}>d2*Ty^wYt z$=*Q*)OxV^=rK&ckW>@}ZQI8EOOYJkL{ufxN-?P??C-^~e|~tFz&Af~sLDuIg5%;O zo7R2~@8jMoGuXf*LfSio2;xdP25ARWQ>=guna&p1%5ncZuz-7(SZWh_Khy&vfwX27 zacxA8U#4>e$BrH2si!_o@R8Kx{YWi}xN-_I0$t0ba*$bgGO_&fZZZPl0D=4Nz4r@y zNlNpt_iH}Uruxl5Q%-rkc|@qnruG&0_L&)dL_pE|J~nH-b!zjyGrHvL*)NRo3-I9C z2YKR&Ka02yp&$CwUE`YeF8W7Epgkjdh5tO(1Yh@cUz>o_qsdLj=9l(=AsqP~jjtaD zGkIjJN{SQ}Ht&%cy({SVOGizDWOK`mP3KZfZ#j$wsn0o^5X1mIi`2(ZN4c$9o507^ z3GZg83xTN2;CzoYiq!T(a@5U|^+!!f=MI?yJ>Jb*T0hr0i?c_E_QrdL2!P5y^py{T zNU?w@v!2FCktdV{3_}7qb9{8NLr#7-`G#r#&S3vZBROGozYP86cJk0e5AnIrJqy5m zK4&tilO+2xz1KVkhmm8?@LUk^F1NdpD%<$ohrGWRX&hfAg7kB1Kdg_PA@T$pRU!x@ zb}{tw)md5dOSx5h*@0g#B)TfFLZYe?D?!?T*9D8VMU^!!NqdAG$5n{5`S-{mc=WNy zIQQZOUVQEae(TqMgDaOVQ*UCC88LaN+z*{C~gm9-4zgLLT6PXQC5LABS)O=V4Zr z6lFnhmh@DKjMKjACh{5k>=6fWzMZW-zL&YBn-(>jnLdIrhZ4{Qh+7w{sWR5aMh z5U8{Q2}%Zh(-MM2X@Qaf8KBadqSiEvmV^C$e&eTqnirpVf?6ml4U5(=sVcm6bONmL z=&HowIcPf?Cs@oIE_~wCeB_Bwaq`jM=HjJm7$oIviYzJ)jiYJW=;;$Y8@1-1)Aw+& zyGyxuodd0zmIZCQL<3!C`AT=lf2_7y3W-tzZyj~1kqGvjqwf_ z+m3)|R+mf)P3s)ig0qfES;RQ6L86oc1B8Oba*kG#nv$we_}bu&!*+t!c2t$Z7?0FY z6@qrz5u9W?t!UZ?C82GW$y3Zx$O1cW*xD>{QXys~g>=yX?HV?ZZFBMRRWz`_XySWx z4yj?IDDbvr_t_Wl2Zy}(-+i2EHD&vBjcNC&LJfqp+n0?CFu5Bq>Kw&6C5fif)g~};)6s9kMRyEqER`< z{|Qt|VdpLab$HIVdz{|b(ut_ph7iE-MuM|=SI_Hv#K-?U5!QqqfTqN+ftid%F9~7z*1S=^@jrM`g*nYwE zawm~CxMSAeU{rQ1F($`xCyjB50j3z3mO5>$$KXNoWX=*#A}v}{%0R^U`xqRAXrT8t zAmwm;%pQ$^?*Ni!Y0(}e39BsRL8fZ}GuC4duQOHev{70It#f^?<}&~f8Pr;rie6`1 z3Lzqpmb_(!5Ljnda~ls$q$N<}Gftu^JOM%5KU zfLS!y`7-tk?~y)4Ny)BFvBXAB3V_s#qN+hF+_FX06?l&g%P2t~LX7J;u7}~Z^>w@6 z?uT}BBiJ`Q`)WH~Pf`d>)3AT>GAHJ9bXmmBM#{okyCUm5e%I@a>$qPwvJ1M`RwaPtM%o_?NkHl^6u>ieAc5p-2rrFNI4pOcjO+B0OsmSnX(=CLUQ{jt9V zv{qPa5Tm%fnW3AR71;|vGi-ZDmC<0dqik3n%8 z<;+KAUN3iyk3BM80s_@brT2Z5sMcg`8^`bvL-wpY)Z~8!YK1ut^oG|go!OV6H>k$F z%UF&-gwV^1|0k6~HbM^Ha}vo|GB8z!v7|SS+-#o8!=)G>5`-~$ECl%WE=@*%c~ZN7 z9S}?&`ma`w+vlIBeg7Zb^19-UZ$`i3<`T5GO6rlv;PDUL_8fQN{M`Y+cblYQ`&<4e zHoxIVRt^WZmJB*qnb48?X7v{`dPPTYTNA$9UhxrvP|la*SvERpzeaR;f}2 zZ`{6b<(Rqh;o+WkRR*`7-JbEgo|INhH>Moy9^CTxQ}>_Z;tLm}Gye-0x$ogv9=W-7 z$Nc@(E4Tcuc+G2(Tif`(+sCQxlh!xH74~MA;9J(g`#S-@&+V<&n<}o071cF;) z7tc_x0KebM;UE8V?3HKlT;7Zx-6E--2N2a42Gm!RidVn&H9Ya}Zy!te*-w3rkNx3C zdDAz%`G((4mb1IM=SDfUgnR#Efi_Z;UtUU`P! z{><%JzfWG-;~)Ofox%0DKXM=McyzUI*uy6X7ziT(Ovr?A-0WRs<8NA{^hfi&3WR_) zExVUqV7hgj$@ZxPLTZGp5wb=qMKvkGdIn{Our}9ZkY~7WHdJQ-F()y;F0JVRP{f$Q zUj*Q{2cyzDQY1$*;|W%gMOCn4L#_S zfz{Qr#WhKmQ4SgB5R77Y4iHCQfqA_Y1aesR_xN<&vyq(Y=)sXISFQk}53MqQQi*XH z!f0PK*cbACFtZJF`9uP{&pi0Ro!`N2_QpzU{B(vJJ)+9$G^z4(+}5KcJsMwyNDilW z(bQy8E4$fVQ>r^NobU9!01rR(5V_xsP^kpmh9oV27i+CBQhpM#waB}5{sZ3d`q!~B zn=+rzlOzA_!9|f8UEDLLeZM?98#F)mT|X}g4D6S+t7FmFN#dyGD5dO&xFA4grwl0* zyH||*S?aSs4+&y$%o(?tFlPK8ElELipqA-+K|c>?N6e7evv-qJPcR@U@*OQ@3FN#% z7(1^VC21j$siJ%c;2oX_M(3Sb5FxRC<9CRrcu3Afx@ou@K)p-TlaOm&t8xa-b>}WzD_~%-evM zC0=NP4_F7SbIJ2ZQr9)Q(2=cG6sSqfFa7en`0s!G@AAv<{8jenE!A{`&IXW0ltJ?z zFEs{5<0MNPn@$}Qr^2EnJK~pD9ejZOF0k()NQJRJ z(!pH>h)W^R67UX%M+J{-4N^qVQOn4T>RQ8eQqV39g%oHV0Wp+76banM(Yiom1)Yof z=+=3vQnR_aiBzz4Y!lNp2m*)K_n14++`%$PY+bVyl14}j3K!y_<~%8GB`lX6-VIEW zwvF)!=ZhuY1@1X@g1`3d-^}jy1Geg#N6+3vSyxQ9HYhiz>>nKPfBav+#C@laacnxl zFBXVp1I?1RzVX!rX9(UBoJHX%u$aXml@gq}_axgpn|$V(=h@ttB9sOxv4E2jOMYJh zp)@9V8WZT8z?y(6D}>e&m@zgQD}BHVN$0^Tg$)Ah1)YT;6hbPNiw+PR?CtUF$3I0; z)Ho!F0-=(VfzoIcT9;S>p`6g7P}7RN*0Br<%9YBs(lBQXrWYnoYwlQIA zYl9P~?_udZ2VU^BsPMYN%OWnAwIbm8(DrHeWPw&mKR-l3I4FtI3Z%jkc&ERQXM9D| zSy~_XayRG2*%l&rR8^p~#?})a*q(7h3m)p?fHx14>o#z~Nv?eQ)7;}a#B#|W)W^}z zu)R2-Xbsw<`wN~_Q{Hy@0+V_|>p)%G#~*gQEl6J4ZIGAt zXgqXE;7)Ggt3Z$r6ikYe&} ztYv3o%4R*m8|dbqQWk6!B@adq zjje*MV;WrtmbS%fhsQA~E4HSa=uqJ7AYoaRCHEZP;Gz3AICFf$gD1Bs+Lq19HrHO- zC0N1ypabt|yACO#nilAZpx&5r-FxiN# zcA+FeDx9>4s=!ESM4$^6A0+@H!`BL0V<-xREF{xO$#kPa37HnSg3biy3(IoRQkE62 zDQOpi<+3F>$!s>Gs;lHsBN1AnCq(eNhyaNVo*)CN45*^QNsv{6DogHteZ{G>1>M48 zyd`LfmXdbiF|B95=nzuiyhoKf_5}fj7Iem7ydg-B!x6;GKe0<0*`7sFtjH#3AZq-t z)&sziH&1y(0#R01$`ZmVV-+I6Z!Z7s(mK;J0}Q!Lx&AWn<(y04$Pf!T-+L@+3?UgS z;^HyZV~k50!YW`tNLK5#QF1XRdWsR6rE|xi>^SB7kHP+Y-T0Y$##32bZxRvRrpMM@iJIrd>81UcN?i zaENOwX@A+XNP)wi`n)zldUaOQNV~DGk)H6P<+fb9UmWG zo7=b^5sWd| zW{K?<7~f%xq3b$K+Yzjz-8 zkNa0Hvy`f5u}3DOM60L_)R|?U{}?>JkzGHu!!h9My{9OOmGY0_0ym6fkiqU@TpWy6u^(FND0JPAiFtg>xeoHbA3IYwC+rk z&mYFekpseiVkz3RMi$cblw$Ca?GqyIGhNqUmIs*mF5a3|_E@;#1HI8Aw|Ai;K=7q> zBY&BaH!a=%9zqtV*+VP8bszk|tuGXU+28o#l|#W>yg7&#!Som0sw8ju<}bfvnVR>$ z=jab`mr3Y~lRx^aY`y(&t^N=^yC3{9%*g)QM z&(SlxiNV#|1A<$!E|0xYmp7a{PLE$%W4H>1EKaN*3y%2Zf)*2O+rcD^__2{Seu{B?jH_7Lvq*&-reS1WPo>M>RmrK?*)Qqv3G@oE6*`N zkrBZNri&_PV?ZioCh=;1EAv1qqv*e`h9p@5eFX#;`n+H6Yc_4tvEQ? zA5D`37%IiuEEfWqWhO{!BjY(UJ%{g+Tkv>%7%Aq6T#IRs5qxs=j+N2_={*QWzYdE< z7y-d~YF_ipB9+@&hqWewSUqoUv{qW(hh|Ji$aHm2ea_KkcY zJ+M38>%^F|(G63IqsOPt&n8HEV*;l2lxi{|2oXbJ3ZhfyU33a5Btk{yC`D8iIBE)v z!Yqydj{G#SZgbRG8v-^&JAPj;A=)8wJ^Io6l|6$ujHbk44#_OsSnuhcAu`}I1RQOP zU~Jd-<2;bcG|qbGlhRb0uY6#>nD^sg9190fHISNFo*xpiF{-vF+ffE!vu!EFD}7Q# z?C14icu)C7rMU=Vhcu37q6&ip0t{n#nm@{-?B|g$ReJedrmKp{ti*axvutoG%E@_a zKo@AK2)0WL?to1!mezYjQDB9j+?Y}7f=&op)1ie#*OTbgguu4R8&itNDD}~EKsbXU z@JsLf75?PkzL)0@mMEoZtmn<$As;VhY`c!e%b0Hn{MB}s-3HGAm$-Q8 zDsO(>EBMUQ&l9!jAs|^UmK>XIu-M<@Pe1SkrtKhj>asu=k`H{~@yMWXo}!2>IBPAY zH5A8pXk0+)KxaBm-FJ$`!6Ea*Il8LoT7!}Tk&Mg^NhoT9H#n(ry1=*)V;5UXL0s(E zK=g79fdWA_Eg?9hmDu3WN>XY`FiB3jh%wPbfW|nKQ23xZm@m*9Q(Et7yFhS;CJ3+s zHL1~)X#|v}HTzA6aZ9uaSkr-Xlx0n0ErnJbHVq5Yv2)@CZ`gZ@*>cX)#S9fJ!NNHq zx!gvUkabX~I55bf(AjzC+> zpUszeAviuM*;}@3de8G{lngv(8~**~X&&?)h4lPkvB{z+3G)SdV~e(^(7~cgMKF%b z(-~(lT&PQ4B2epsKlA~!H|LYHP43?;@g;oj$}XqMf@8JDcMVc{3a#<2K%=mQp{}M_ zYbd;6F}DaM@Y>?gI0H>r-8v>t@<_`@Y$L{B4Cs0i+LE$!kE>1VOs zhUo1)Z}ylSui4z#!MT>j;*hPa9j;uyOerUnTGBP17oNF5Rca=ig54{Z;zTMXop9hR zmoL5)WAR$hs^-PdzCa}lb{_P!S0hN?Ei_eC5>)J0m9O|j{tEJ*N_MZtq- zAEN6#e(wNdTWn_#Wx@Plj#DkpxM=K>CN3-x6gE&56H4z8vI6DkT7$wlvXU39ZpHgqKI+(e2C*{+F04v zQpzH3Zi$n>uA;+)Ydu;I>}??hwu82fQnx`^oELPRU{XgpU}L&8QA?DRY|f@VNMyZ3 zYl-t7T@-OF4iejRI4?N&ghT`=ONkE!T7W7w1cUcb6(u5hzxfc*x{OK+e%N|TDX7be z*4&z9@fVe{Tun6MD_k#Sl05;(u_y(C$PiVsOdHIA2$|v8AeBn%78SktWM<)}IE=v) zNRm5#Fuso&u;Ub&YEj1YW+1=-gboYyb@pt?agLI-)(S8y<8dh>D=z1s{~ZH5w*u~R z8UsiDagi5|v7L^ARUrgLk->C<^9COV+1G%J3p}ZMpc)3l=9rzh3W%n7okAowrCMP~ zX8CN9n2J8w=)jWXp~v7=zF(H5%QEI;ujlwVz9(=!xHAS`#&wjJ)gi<=bO3vEe#z5v z1ZBa?fdSboJ7e;pBM~9QP4{gW!sh*Z$zSD z&AG@THOmEVImay$~^hT}_Vn~kh zb7yc6k(r!>lR`i5r=)e2&KUqwkXUCxhy*a|k+-}=NSF4ULwk-Mw}HI1B*YkaW5<~B zIFXNK;5`4HLn4DMd2gKP!-W0v=+e1OBGyfs=?D`VaIn46PxqZoRlaWTG|A>O%E@t95T zYpf_R2KDn;6%8%Pp(MrAi^}P;f9JXW2lW9*mgrVWB_r?AnG2tPTJN8C+N=lMt>%3p z`hD(L>NyCJ3=9#7GzU?-R!E5~YV>4ttvp%0kCA~#6M|hcV7>f?`!7aXUbz(8rmj$v zRS>WH@U5A-qOOrAR)My~XWz-eCw?ZK5ZRaY{cmUIzj$YVPVt5}Aa{=8cdy?v@9yzG zB`lYS$>j5RqFblwS9}j!Z~xmAr*C8v+e^Pmcj=FBIKKGoFSGULf7E|JU2kxIz0LU~ zt^59~pS$J#c8Uo<^ZIXFIo4hM5cc5d{(G>i!0%*s`)95u745RU?K$Ig`oYsoH)otn zae=o^4lG|Wy#-*H4TAu;TW1Tw?1z7Zz5nI!9?2LgcaGm+ArJPD;FdVMkJcOg@z5is@O}?()ic?X^E)dFee&PQSfBrngRW`X~NhuD$zj(>?cLZb&jZ zyi?8yiyPaiD5sqK!C#_&^?!NWG9EQ;9^2#{-~TPV=iR?QVmscLnt8+T{>y*Ecm4Qx zugoPU?!frnDr)xcAW1$>-+1ydHj0Yhx$r5@Opj5H)E^!@w#kz}@|}F!Z~X_Jx%&Cb zOaJuOzMh>maKE|qF6{ED9w3B(kP4|wyzTDL#zt$yJW_{{)IbJt%RwH~5oEM=1!rPR z_Ysge%53fP2*^!f$*oEi+*mf5m9^ttp?RNYQc9&Te-Ma!eMX>Q20fKhcsD44WN@J0 zyX3;hhw5XpLf%t^KF(;&@{Dwr)R` zJ#glMxTYh4hAgn=2Wk}_gcF39aoq*%ctpjZfG2#^)D$Y5x;U8H-3 zK~W)&b&PCCS#crn`=f$@PcJCiDzcDvh)QDlZYlq1J)vovXg?Ia0i_?Ka!o`gbs$-P zVmnIpH`psaT7#pIY&ig16+6GNX#TJFqND-*Dq)_0krB)Ix!5bH~-Hm6WG_{meQemBE ze{R{IcM-T$nxHjGYlKiJq48cIl|q&ULPs`Q5DKp~CIqa9Lu1)Do2rGI;oIK(zIPNuqESK@>CE6mWNCB_vie`-}pXW@#up* z{P2Sa6@#t6_EoRot#5fXhX-?O=kl|Rf3k3b%iK2 zswh!XA%Utc5rxD{0m7jR#g(g9*=bu`SyL)SyRn0sl(ITK7bHzR%FI_=fg`gK^$zb_f^RWPOE3l@1dGLjww+^rOIb!>MGArNp4p_JoCLb-HMO3gg`|{a+*qes z!McvJ3{;gyBC&^xE9b7$b#V1y&cR|%aF(W>S&h^ zj!C5`3qe^)ic;cmC@H8mO2S0YxQ4yGd5pu{#kg@=E0huxQc+eq0;ojU7;ikLH3%gU zg{HG{YBAnny+;)qT}qscpn>sG9#WS@1Wt|X(8}epl{Jl>>rqOIwu63N>I-701{Oiv; z&L{sqFk`bk=>XWqyc3u;dWH~P+2 z?#=2bZlCPRv2p#4>qMynC5s5cjo$GXOkZaejL-Al_x&!{+qi7GU5xARW^E!}5rO8S zWas|-IPu^aCfnO6t)pX!l98RtDj4495x_MaX8(ZY?k?T_0n6*xY4`T9YjGo2oCJag zB`NBX$<_u%GKP-)5eWny%$v#nLyxCo5xu+FRi zf;n01aNb7%H-z56mfPCcFrcJH7bSboy~x423(&P#x61Y&I|qzepjzvd_qXm)k(sag zomwVN^0}F%I_^W+;UPbR za~zWigbcfB2r`)~*j9}JnzJqE^aFi?&h5!U}wm*~smeZXb_cXZu&d|Dru$M?zY zA>|&qh+Ij4J4{w^A8~uYo$Pz*acWuJ@ zPdtUd^7>T(WVwSF0dD~A`R8wat&}UQ9RSyy8|9r0F)#hQ6>w9OC6n*|o;#K+EK;0B zb$iL*+a@8zw^7C`2L@}Dd@}o?;#ID5%1>}_JvNjF7SH@ER@Mva!0*QGf#16UeE}}LaEWI>^*KyyIDXG@s=Dfb z6StCj&SU*#ihjkbZkvDkrZ+SD!5^l4^IOob`ZDCsu^Yf$i0@sUeQ4#FH+uv(2Rz-S z_pSW)Ef3#!(|r0O64>un*AT_lm)-Qt!_WOZ-mC(+#p%a5^*7(e?CX9AQLVOnyo-d1 zcJq(*nV{NW9C==&5e|eFSMA6r!Ck+U7zJ`U3rVck?d8xD)&6B;GblytRZxw39M} zgh$Mitj3lIVs}vT2~T}TWH1m2roHK#=5bNz(q z(QSO7o>sVWLRFW9&ftTs%YAlN-KOPPy$M4IIy0eG)hXWkW8ux z#qM=a#oi%xDI=@LIjU0AwjIJdv@Y0?ZHtys zGhQWm(5f!j-8-a6vI}jn)OAJBC88|p<_#8ymJ*!BBPgp9Sqd;VQtE9;W@*Kt3rs7C zD5K$dVN+}nG&%@GaM%zir9vo4XAN3PtZ`T`5JhA>lx2za4jeSjqe|G^+2PXe93w*> zgJ@gBbZZMIB^#!tt!w57ORDJ4<<2Q|)1Z{1 zS}w4&DS9&D%<_=;PmXb7zR&fl=4vrT7=w^dd&j<21UfdVf_I$%9RK$IN7xXG`t05 zQVPnMV)JBd|3NyMwq-+Z;#`LmQMzV+(4vci&DkccZ$KzKlClg;>VnRB>P?Mw5R5_r!tH;#H%GGBB!71=pjmb9Wn>cHH#IOmv7YHVwh z5`d=`WsC(uM^Om86BuidGL_B78GBMoto4L4%E7Br(=`q!9o7n@FbE+DiT%_zEkXr0 zW)s|@OJJ^`lp60OWo6J(F`su7LIajSz_?iVx`@EHBmv4^(zTB1hQM|yR;`d|pR4(xmq%;80&?c#E*UJ99AZa~L6rF3?3afE78QnXxW%Kv(^j>7|0Aly|3jwJW zx+oAzVNJk|Ja5No=p#Okg<4TgYpTsn+W8XKG%I~@{9I#s?cV4&%5(kmI%pe0z_ty` ztJm2+c?wZPV~{|nctSo(!8w7}MgN`!8Xty!r=*O1SCSUm2-~$ zOIO(3-DC6ANq`kVG(T%*qV~XXGC&z)dIrNf5PZY?Ktu3kMyU55XXD0Dsi7{tPsXy) zMX?__#Izoq1qKI%ocjRyN^4Mx$)%Gxf))Fv4nbIj{J{yEyVMeBk>*A%+Ox-R`@(W;~@;@UFKmGQcwDEm6d z05Tzu-;zR)jP}_8kZj~aesN6Gw@%~xr}s&?wf#SzCPea>AM%k(BbA0~itU!T`F@fU z^&k|sIfUjARZUU#CQ=u@!6AN#Eb8I=e;&y$=h!An#|E=c@D?$WbyW{Oh`)XwEBPs|-EfcKE#}%2l&8PGKURP1x3T#3Un3kI-f%ubP=3W%B928V-pT9U z&i?QJEJF;~@yit>a4@r7G{xC3XZrfLGkweVpf*q5x&nfOYyScc-;2~5J(*$-SEV`K z@*=nv#JA3mv4F#JOA|mWbyy}Chq)s^uv!(y#DpblP8fo zJLp%u60s%??adwt`TukGrZKl=X?@>s4SP7}yu+R9-s&2==xTbPnYtNFCkV%2ATb!z zATh;JqzH#^j+B_F5hS(~e+mvtBwMy6oQTLajv|l~V~7a~VA9Zzp_^`?t0}sgs=BwP zJG|pLXYakHe0bK{XP@`J_tw4TF51qL?tRa+_g;HVdp*zp`TrlZ-7w|n-}n9Sec!*S z$1o6XTqm7K|LRAsp!P424!7@hxc!^s>-B5@2lJ=?;`sh6u3h9m{mN(gyPtgi+PrE`R7}P-X*?>UNh)ANd=h(OUCu|KYcBbo-E7H*Ve4 zx6|^{^Dp!0J2$y;AD>+~_jg8Z9I4|y<^RQTzj=MH@&iwvFU`K!RQ#=P`#S!|Z~a>S z$sfMVM}O^;yl`+L{`vxJPSy;g6p!uB`Cq={!+g`zXXU{Y-5Wm(VJ*;V8OQP)i6qa~0o*<%_EKV3WD^K`TG@wbmQZ^G!<1 z$X3d8bhLN!KUpsy9GtWoeD+UCt;9z2<2pQ6cT6>#x7uTnwB%L|GGJAbx{Wr}L&$c= zBC#zKFp)^v*2Kk3+=j1z-}6!S1DsTaigl1()b&#Hfz1u%hGn!Kp36( z6ot8Lv?hcJ(wgM=vR)?c9Nb2vnm0ZfU0C4-%T+}UOqbpo$6QQjf;dvje&^f-#qQ6I zp^Y8`oW5A)Z3ljJaHK(@x=vVzN-=L+{NTY>gv=a^!J$c#JJMRZA>ma(C67soxm8#t z@^Z>=^1)SFWQ9>8cf7c`LkNizHxR-aWfGUxD^^v_sW!x&9S(vPwpRkL4KL`1nNet+ z_~Vu1s&^cBns(L_hmH^LenyMCDPLh8MuC6e}5P6+!%dE z0%H+11h6%L&RD|)P}uBF7t;kzlN&Y z?CcaEH-^aI0wF~jYgz22T>y8vXjS}a$_d?NErotL=Y$;pel0wHsGiyk_ zr)ny+R=9PCiGijz0*G6U4v~jK&WTGKf%3!DNS6K~WFF$A8!_y}D{)Wg8O zfltr&=#t`88EWr{){9S-UlR~UF~bqp!;Tly-|8V055tD1lB=BvEe?BJ~B z#I*eSWACDATXy>ut7eB~RfCps^2aw`W1$U~XLIh!IW7V^WWM*l7fI}-a@3W~=NRB*wSt%-sOyn++xv7`&Xv zTEpo{kEsQu^+TR_85l`gB#e#L5CfH-$byDM+f=ggj7m0kwWeD-tkt9-xofPoP=de1 z+y7vXF|t~%sB;iZalRGj{@L8Aqon6#(>+E9W&3&*ciqIgjG2j@+`n!#zeVhxvwe1 zaZ^{hpJ5or`x>K~^ZBO0_*A0$?0rw$V%pBremM)O-{mAO4!Cnb`m?XkO4BO&65BNF zUwef0P06c%wuX0sze-`NifV6xt}G!%bhphsJX^GuphM#n!*Y!ei8S~vAib0g(7P=& zUi$GoiQVaMr`H7N?i|v09j)CFpf`zRbc_(97%bWdvv&&WPupG_QA1Ic$@|7Ec|1DO z?(P@2?1;+_u4G4o+DK7P=jU`jmNJ!2o-*a9_dU*GrBUYYdoR};8S#h{FvftG<6wH++4-?qE6xMN z?*?p@Qd@JSNQi@^e@PM2q_577!SXLe349wJ57~)U0(Gou(0UV9zX7ZD9K0Rk$g#3IN z`)=xhQ_~+|n>nU#B^YoJS$37ZyeW8+?@77M2LnEB)5Pxk+-zlMM5B~)FZ7CWTAhoMI;b}-kj$zH_yt(M{7<%kU%j`- zrN?&NmH+@C07*naRKNH489x0f(()8@^%|+~Nd17hdhDB%2cSTK~*iPSqLzvA3&zu-GEzv2Zk)WtQ0%f9_QfnIeDukFI;p>x*Na1 z?4286(<;qB__`nB$4|b6-@5%0pE`PlA$q?0!sC47l`rA_d*|eROrG@GPZGN~wySaU z2V3tiJaUom{NX>(_2;j1bnB44%X?gX@)~;=_h{!5D#5X>Dji3Gf&-2+kCk!DHQsSBY1^?OCy^lxF$YNJ*&HUQe zuzLMp-F0cdeu>+^`y*U@@87`8pWOORH#=PZfuACNiz?k}Z0 zEnoV<_prFI!;7DJk;7XD_`y>(H5VSaz{RT_$>KO)= za|;H1iu6I0zWV6tqNk66A$W%9Sry4+V7Hp_%~#)j-}^O6@samD#dp5@30^*4aXL7z zpRD73026%!-j=DM1El1JbE1$vQb<9QUpp z8>iUuW8iBBHX@@?IEgfZ8gea3H&Q@{M<2a+eqXt6;>8#5qneS+Q%^lP?k@uy-~~2d z%ma@Wm7iVro-X$+X#{yo_in)B7$dea%VJd`Bf^Ab~+!i~TJVuiO6(Q*ybdY!`+3iiB zZQ48o@*LM?ekKU<{-FG{1QO1BAqbf~rXR3MB|awsDF#`0^uy#WE^C~O$wnI_AYY9( zndI|UsNAN4TNOW|tOu2~G9FU~TZ?@QFph!5m=BktVo-)zuCq#8IogfZIUoB5NLFmy z#&TR~w<0MnzYQUb*V~R<*!Vt_Qsh_}P!oCQ$%CN;l3%)Xg}z&Jx;!20Dff^j=gk0q z&fzXq+ko7 zD78pP1eLV}T@iqlMe68oCrgTT)WExy-^X6QSD z3k-daiV%hYgD^@{cH%1~InvhaUa0snpleGrYxv-k@8@G5`#6hPD-y2(mcxn=18q~I zf*0nS(KsjB@{Fwr5l+{RWFp2|VqBAa#2AGm&@>hoBKx~L^!*^=X))2efK{5qw@}f68Tu2C0LRME7AigMu`r# z8dX;eK1lw~AyHM48H&MsLeA|MV!}2pN+tT!C9~O_-~|v0-Vq1SY-Ye};;M(Fc_TvI z&hXAN^u6R04S~JgJ-VSII0q4IrG;6fqBv`nl3WE^T!>n0h7fQ=pf-k81_o=TdA#!s z{fg_!Qfb4fR(!7AVQ<#*!ePfdW5QJ}_0V$|KvfkM%g3L3KTBh{ygKFEZhekFeB?3i zq)6pGuk2ny`vEsN=1Q>!de?KbJVjq_dEd?k=dkqq{S(*fCT&=k=|dp1u7U zk3VshI|p~@SB@0rfuUl8+H-O&o6@$eh_PqgbyU`}c0I;ustS~m%~?!3gC#KZo}u%^ zkf`elZ8bhhu!F5k-bf}w?>RYi>|LC(*qdcNf5|sxl4jX0Y3!V%I|l@xaDBq)id2Gc z@(O)$e1fpn^q6d3YsGvvW8HV?s2Dm(Nz*irghr_f9|D6DcDdFDYhma-)x0K|gsGI| zgH!>fEY1zottI$?3JO~rtgSFA5r#;mwB)DO@aP8=J695)|E+-CvmC!}nRAQNS6lRM zi(OO%G&_quUcK=O^F_;i-q3d^D5Izw!=kP5>y_jhA0kG>;09EZ2mSGJ$Gn=!7#tjx zHj@8#7;q^|^#fKL!r)o01C6z~7$k497X<*NBzh{uKulm#ggU^v}>FIlkK8`67f}^T!mT(f=TSY_Y163t~09G4RC^;!gq@3i7HV-Mc z@>a@uEQ=yjs+34%fowL4BV9mUk?EGtGfOvb6;sZ0;e#i}fW>Y=m6%9+WB8o~`KAEF zl;wC{q`6WGO{qf|jX|x=7NA^M$gpAY6(I5~h*E%$avqV@-E2@Yl#Mtg!9h9$jpNvk zkGe zKCKE*Q<24Gd(DWMB~wg5apG9n&uW$Le*-*}xz)A}WZ|YTVVP`?oxB#!c%ke>dxG2(n&nfr@ADwe(qC)ua@0&P!Sotr-O)Q>5#c88F`j{FHNS)|N^F zwNe<@z_LzPRZR#!_eBXF@flc_d9Ss}fA#3RLCHS2*45b7s3LbCc$geoZ?#Nkp(A=H^E}(lNr`-!uq*8782=|x-oY_+!89!5t1=aiB_W);0aQsVDO^~2Kzb${fe(C3FpZHFiYu_|}rY~Kh{iZ+t zKy|I3`l<)|-9we?ak%yq5N^Wo67(<7v@cTK>TpLdl47LZ-K9S|;^-4UhTVT3)y1zI z4>wBlfxUO|fxUO!=OVd;L%99ZsQ%M;0a*Uvck||V6JYn`yPxFAcRzWrvwe|DV)fEL zrhD}lL4lb)&itt#80-DeXNx_$zRc{gzksgxP>#${7h-Z z6VE=u6VE>JpeNaC!)Dgd%$oZgaCe!RijO@0<$UDvFMp`x9=4=7;Ep~`eepwgeOGDC zms}7Q^H*HG$bayz#~$E}5qI)C^f&*}W_`_nR0+s@Nc1Yfr~=|$Ckh7R#z20NV!s6_ zkQFjw5IcKVyV2pVlp?jDDwCbf`M8u{=jZs;P8sWRUfpGDLwbl@pl`K|DMAuNM72h? zf1C6^i6lNbRqSlpdsjJFtw4XA`I`_BmkhqHRx5M{EPN&pF|kuOovYAx1D-0Sn*+a3KJmn8x0W_C;`)1N{Gzl@Ornk>sNKVDTsGr&(=S>n7K;T zaESL_0+v$wucd+&R`6l27u>-+oUx6fs4 zsSS&QyhZVcH@l9Mxzmm)nrS(nph8Qn_tp^6W$ ze6RAn&GmiIGA^qn*rUu>B_OQIOwotY`%6G7z-TB-`sVw0w-Qb+qf@#ymGH*sqHmmrRPGYilrwyxD zmce4z$a*dQIkBzAsWe#w%k@%z-huf4iXX3hnp9yKZvyXSF;0>ihBThDjG<{u0UR9M zhP>WTY&aQ2c?_!Y*}?`I-<&KdM%MEesl4sLuXQ~-1$-2zQ;IccShNkN{U9Khu_Ub- z5?HH2TUNtBU0HN?NQ7>U?t1DJ@j>r8X7SY)0oJ-UphzF{mm_ih=dImxW#>k})*1 z7Vm@P;5C(8Cq}w%g(9&x6Gm`dHyodwA_wZ(ghP)*&6pp`gfPL8RS!lCd{Hu3r zC1OBi&0`>>fC}>9y}q|c@{Yz->~~9UVNgxQ+B=SB3tkTkLQ*VZ;>yr*V>V+}RoqPQ z;e+d(HVZy;e|*=ELW=-BB3>t%;4Mok(3*T)LFd)Hv^n!84!F<)Q7N zTMcNfXxoaUH}IY)@p2}a}I1p3Q$*)bDJd6(Wa`o`1Nq}Ma_-R zEr}O)aBnnJ-9Q{1Fh|V|H?Du4#@2*>;Pj}YUDTu~%-EAvq)jk4HNEPobRuezF0OOL z@baWXS&gyal>}wXnpOaX0$PQH50T194)ch}sK=1Ng}ly3bOvmbN*FD&(L?W<&1*tT z42QxF>rJ;nTF$oCAPM-jm?srifSHl zYluO>Q)@K6i&zbHTf;d@fnU()tF;mG7n!%~KE#%7#xipYppfUZ<1|=yyI4RM^R4*a&D7 zqNIf=8^U`zJ>-XM!RHc~8Ju8)jAv!TGN*kt_S@F@4k`ihEiBz>U^$1`{ z-SZqF5tGl1UkPf7DP?w}NDy0_gGDB7In6{aM;>TBhJ}Io~uNXgPiZ z7*Eez97da{)$@$J0u1F}qT?n{Y$>JgLk8SA@Y)+X~F~7@7u}Y{r@w*6F1Fqd}EK+E^HnWt`*y01D7Aa=;S&6-FnZ z0ErclnXZH!(JS+D8f-!;>x1mCVo1dn8|Q;D8kM%!BLQLK=y(I2C7z0Mf*r3>WV>T3 zd8K5I$B;6ZsR0KHLhzfpr4`N%D9m^cWAeG;cD~(|HnM?Yp9hgX%zND=UBCBi&(TTE-vZ#FD)4&j8%qV9LY#7vtJ>jymY?_a`Fhx=lyTf}=hX-tY7{q}!Bb@3~)yXWM=yEHc_Tj1}TmjwO*Ui)zf2Z$3@ZH*vz`1_nb_fzb=??3+n-q?dwZ5wcW^P*@U`*Y}O zht>6;=j5|LN%#6Mv-kcV$IPApCHBOFN=z!bzQ_Li!CcS+!W4@f9ux%A#2;PCmM zr@Ql6&d%4+-{kQ3f0Ws^f1kZ)e-vdO9Oyk;ly0{`--oYu;PA75mAz+wbW1w>-_&yY z!rx~3($COd`*!x;^HH=}yk+2@6zFgLZ*(_*PJCDtCQ=D369R+;-EG?oca^P&RaU@@ z4y`OP^q6c9jG$i}B*;K%hz^t?Cg@iVqNv}EX(jSAMrYf63QkVP);&SqyXso1{PsU! z6B~6YqQYqKLC6q;8}LDb?5fH#3=Y`Xy0;GwNFN@}Hp7}q0u@up0jirI zReEnNa-3?z}r4`DLT%9>f;l=J6fH|t(uc*>yFK+Ht6^bjzu zvI3sV5YQMDQOR1ILo!KlmoMY~Cso9}MyM3W)LjpDsH}%p+fgy%!o`Q!!%hKOKpBn7 za`+}Gyc@7uY`kI>#}u&%g4To>v6U6O5dmsr$`-mR{8!v4-gfcz7k(4b5A51Q`2X8SW{I* zV4V`HgCl0M8fy$eOD=tu&RbQAu(;#;8f!&<_Lc&YXU^X6Od0rlGDar>7E$3CY)l&xcHME2z~1_l8}$NRRWx;rTX$3`5VS@|_=a@K3)i0Hda4;3OG5F= z&Ls}51Twtm@D>+>;}5Ef=(*+T!#8+AYbqk2o$v5ezrr?_de`u3GvnFY9k-5GT$t7D zT{5_(rZxekJ<(|PXVBg8>^@PmbHTE{;~Ba@qiT{%?6no$AQCION;z+(p{^tXCI(rA zL-bg*fO;7EEXk{_Fl6ewVekW{PBgV82FKC`8mnb&`GgN58&!e=v{pD0Rc%?X#fjVx z4nkq&0NxXIqN%gYF$opZD1$gS&+=GPnaIv85rRVLL{nFso_3s^F4@~PtX2_I2~+Cu zIB@wwML&2Bj#gZ})S}dkIyzQehgB7`x@O%w2oc*vdgn2*mK=84;8f)LC&5Kn-fXzI z-*W5*PFs%(iMrE-+iP5BXlzYwEJTmi78^A~KhUon?W`uHz^e1q^IGKCn;O+ej8;TE zdZy(;2#^w0(}?U6!t||bi}M4`ykb~uR-H&PC8e?yh{0BdAd1}7w#H?^ODm0TL<-mY zKp+D+DdBuXcLul8#AHzxVy&oJc|Pk(HW)EGulrMlv6VPM6ZGpSsttIQRv4Y|E=PA| zxzB#>sA^C_*z|QPQum!3NZzoxq*=b|FjUMhJC?6E_#@4QcP5Um4>Suc^7Ap~4NxQu zvbM*(nHi#hzRg^oA8&UlU>=A8J)6x&mgI(gcekAI6j&-UQyV$vygAZ(vT5EhW~VuQ zr(obVpu727K%1%b^mKD2U}To^%sH8-_vL)Qku9d$0ykk>(pai$B|1?hobR%sQEeH7 z1&ELhV;sR%t?U?CSU{(8uU)s!tTdZJRwJ9?xRIC*QDk2?;Fd5O&*p3`^)1HVl5P^>w0il)SBa+SjGs zl|=j6d4pZdNQ1`>p5!+MWmF;q-7IF9S&LIkf*bA{zh~c{-#(kUH|?Xd-<@}!l*H)K zQK3VkKRzWoPqUbb0ijfu1DCZjM!y9hm*{p0CV=^cJ#=MqiV$H&yTOT?PMqY=%GZrC zqE{W>ISEF}WAZ!zyNp9?Y6jP#l->Y*NQAw}G)HOYkTAL?#GWD#R?g#s!`do4b!07? zviw05bjmtpGwZjs@n&5rOodH*7L^rY(B>~yB!t33EwbnNUXg$laeC>kAPccHx7XS7 z-87)0)M;!ZYaxTqMwP&v94s{n5GamZnfG-Dy5rWGF-jp9hsR_dP3O~eY)|zp6*YiRrx?V=#7xf}D@eXBN1~WJ_*(8O$*h zhVkZ^b2cdAPo$iK`lju-^0N@{;SZdy?;0{tE~ieAo%nBF3AOo?N*uWsdyO1CxpmEd zdqH5=t?vFX1@8Qd?_>7^|0T00zvsIS#}@9$*qYkrFQ(g(lrH}nN8X7MEZU-MJM{ucdfzsm8a{%evu<<75vAMI1$ z#qO7V6kVU6S9L7m6b^qDmj41$W)A7Ho^65`%;IU9$G-jTyP0!JcjKS2{M=77f940J zpC7R3YM1u0@1T9`JBaRt{^qZ7`!~NIr7P^>Q7*pk2T*%|9#s1_*8aSrp!y2%FF^bp zD9!$}-$ir#GaSG8%Ot;^{8lD-ck`dqAN)(|3m;^5?K`M1d=RDY$FzM&6y*WRaQa#N z@^jqz|deY|0>S1kndOg`UZCP*cZHBXG=mfYHPmf&m%7vh>JS_GK^rn3oJf*8 z?`T(PD+QskO#CHwFyE(Jm@i)LgrEHdpm_ zIXpb#V3c{Nc#>%!Dy1Gu zTKH_K>zWUK^;h$&zxL}wq`KdA^Ix$EqV!dKFu#;BhKm<2@ZyUvza@}*w2u<(?(TAO za-4IU7Y^ix-Tr1pls<(r7lI#iFPG)G1el^2S-hhSOqs?x2wsWQdu1%^z9$hM3e;9P zg=Jk=^us_8OS;3xzT9A`+I_koaUS3Hw$+ zTcsr1uFZa>1YH-^+*%exPp335n3^4< zStO6wmaujNplTY7>q%_`wjwGGUC)5#XxZbsfh(7G2>n3PhNv|$3GF@kL{ry9*VELM zum%T5@{)MkE77(cd;+cU0aR5pkO&%*wG1&agedr6VOrPl}Gu*lRF$=dmI~t?b-&<%eCgRbKLF*j`uI~p7kNmt`GTrdy&t!JG8px z(tO6Vhp%y{6}MC1sooJYF-O&)ID)ZoMMS;5b@ddlmMNRwSi! zFh{`kiCS0aAPY1wOWvL#54o_ zvX-2&N=tr(sBpodD+NZ0baI5Mtw=q1kX&gw>L(_VUDP_F4D`Wcv=aHqAa&8o(sj_z z5_Kz#-r20hXb3*AShQHzbGq_0wZhgl%T-`L)2v;hvXQ#6+&S#n+i&Q6Vt%c{trB;R zdzv;$p6OMhZ8Xg#L#iC>L(ipWY7SmW{PFK-)NDXE7T+t{-ImlE^bqie1MzlGeYGX@ z9ur`t9K-FNrqP&W>5qF%3o2^j%3(?Ly=P~yCOXZ!mwFCEA}C?lhQXn9W+SFZx9afD zP`3%w1XM66jL4)~k!wU7g337eH5Ca3A<%~;zYPIpG(;`3&}5KTX*3GgCAu}F zq_MTen1G#u-LkH*NDyTMYAXc}hNvZn@sMOAnnb={9m3@= zfzT-qUr{V}EojB;9f_kCWmDn3mjECulAbY&)Tl;NRTV=RFjYn04cOVerG&m<&sT)W zCd@YnD4KenQ^@7qof$Zk&5_3FN*o6nh()>VP@jM@xr{kpGee8CapIo^3pPPCDBM4n&d!Z)8 zE;FBVKHeBvuh%qnD=hq!a{gY0(G{X6R8l?&18rd($&dA)J4R9#;HU*~ciXJ@!KA-*lSvKZ& zeZ?Wv-MYo;oy+Vu*U;K-q_8t+R{CYrR+<F0S{byd#+!{r(VrR?Z{Ft(+tH8JNTRB8i)E0vu$ zS!&T{w!Jigw8=D=_;kLPe0L**`R$LZx_3E)ucpbzTh7e#`t0&614-JUX1; zSbqTSI`p4~)o(*O3$9CA19Cn}r7QNn>c64d|FSPkg_DQw_Yg0fp}3&LftN_`Rl?El z5Z?F|7FVC4dB?ZB0NH+jA=qEtU@4n{0W~q1I z&y^4T1Nu834%*JCci)MfzXRD<6q(ZE6i)(X zgj=j%{Y6$U{d^8!$oocjNIW{g9e#?F7ycIQ<*#MuiEqa)9tVAqWFC{iO?Q*%-oW?Q ziL2*u%jdGBw~R@Z0XGnUxd3n}Gt#xG2(FXoFXt@RrK)NQ{-&}1Vk-o|($05KTI0H< z%oTv>A$p8esK!Dqic?CfGnYuC<9=K?i?jNi`n-90`+?sOMCC4~NbsH;uilh>Z1AH3 zRE#kPpR4g6H+yfmb^G=P5X^f!v2UdfN(!MklKte_t5o9JwMV&q`_@EOT2k>9P-@B) zODVBltw1S4Ok+>>UB}=4yMK@W>sNk-J9mx{TRZ!zGn2UN_jLxIHz0y4!)dc0Oc90N zjF${NOFJc0lrdP8MI=~y0)C|os%W@!`OSk*kmJ$}6wR zKDMy*-U@)3k_7o?ApA?;^Byi-*nglyMMXyf634k#?0W^zo|m_MQVtJ~7@T`k;J2=8 zE?&II&09Ccnkj<^VGG8@LrsqY=u0+QHG-9IwS4W@ekcRKZ<6D;gcPJCT&}QD*?O~L zt>t^a=ezmj?|wQ1xNiZZN7$jq$47VhVZ@$z(6eQ72?>-C;$p@uq+7Q4$|Y!5jo)t= z))5#6hgTkz?bh%Rohj**MA@_-dWtl&*p-{7)5D~Co7#afMtpd)e%+LUA4WHf;OGM* z>aaz|Pzec?2WkZtg+-CPM;lGm&NyDLB`v2CwS)3}R3*?}<<`#jZW#kg=>mU_{WKj5 zBPx5=UsTrnq&8otO}{I(eV*x1or1q*%>iM-$07qgv2F9Cp>#!VO1*iumKvoEo;Xu~?wnA_{)oey|o?0pT6?8t)YFQ8pkWgt&P~u!dE3|Fs`(7l16X>Xfy@_J!UGA^Q zEn_giEp54IE9zE@{Ap`xP7~`sQYA$G*Vd$vh#`pt>9S)npVRErEKgU^2nd*hnM(ypoBTRQ(5}sH9j+Pk4{%aQ=_fLWhY0}N+K}O_`xy6KxHaS zN*HZfxizyWtRO=|SxayO&1}ZdxpA^+15xP_#0)7gc!|10DYQyhW9hmzZB;Y)NW>5` z2&QdA(!!|hmYqz1;E7(M?)>1W>YC^y)+Xui2s${T>j^I4I*%WE+Ql4gEi30yRW0%r zUfM>dEYZC7!obN+Zml9j$w^C9OJs_XNFQSj-MZs+)ny48c}P@5s=@F(;_8$5X3mkSIJ)`{+8DqO%$z3}i(d5%Mzeo($gSOdUTAjd6})SC zjH_y1&v|OEYs0SZ`0Bprs6S;sZ&}VGA;9se$GbxoiTh9$CB&xcii;m;d6;0ccP&l8kx+2Cwq~VoB(Z~yrX)H}+Q595;!cwt3 z4d_OrO`@?HpDKpa9-UgS0cFIvh~5kP9m&V2stV&og5Fxg;5=bS)J73JI09{x<%tK! z@kwM>Yc5=D>HC2T`+IcW(`Odd;1g}#qLn8`==vV5pl%y{aCq-ob)Na6;dCYI(dr=5 z)(vePB=<9xMki`z>5e>$`5rEvaPW$#1q=z?FyLbl>2zJOR#5L6f^JX;9Z!Fm=jheM zor8w`W|tv$s2H&OHF2$k&D;&F4hM8)2}44gL{J^g!q8ML@pK?%Bf`f>3J`TdR~n}R zE-6%m`MhGjh;&{8D3pWM+TnUnh>560`dAx{Q8~YQ1`UJrlIL70B7vr<2|nOr&Q0he zb!GAWfKiFQPw1#fr?P(4tpyWu?rvGbu?eHW)E1Q@F$|z<+_6JjMO*@{qTSOBLr>k- zxRvCKue3$0$hG$<)VksLC1Ds>y5jYZJ5a(RHjXutECQT01f`VFO5Qz_!h%a2SR$pXC&!DnM-r0h^uj zrJuFluu?+|TTcCPqctf7peU@!B6(b#{ZmQja!*s4)3Yqg^1c}MTcDhVQnZ-LvN@Ean2LPr=p@deXAz;N@3&{kcD6I61}E4R&vVHI~@-xHypfwhZ5R&mq#S zPSO2Z(kVDEDKIuQAcVls^%6s;on_aY@-*Ak53yu+GmYrdB@E62!Qui9$g;_MJ9^eFa0 z2!tqk=u0l4s;aY*B@U(#g6wL6fjO*!nO7H|Qj@=L? z&#}(ZYsMHPzH&QH@^n2b=bYAOGd@b*t*I>ZCU{2H+{_4JJEDCn_#&koNMbU8zCA}v zFvLa@UdD+yCBxP@F3wA(B!7EhjF+`<+CHTpOaDoI1!R{L2BIP|m8aecj7Sge9C=&I z#Mn=XoKEMwqDDt=L1@LHAu`vHNJCEvXxFyJG&44Nr^{i*doXb==sE)hZ@;ttPpZtX zK1Q>5f#4j~dIT#iEPqY@omb30Jo?w6zIQHDrEBUdUr&AI>;LsCs|?lt zd*IcNj*`jje-G^3AM_2*b9n2BfBDZp&h_W7Z@N#ze0R>?#XYV({s>RJ`w6Z-aTQzH zb7cT^wa5O4ev+MMKY}^@JAi}L$K>C`+=kX%{F3)@`r38e@`U-j|MFJeV-WCR83u0m zOFnUUomabKvAdP#OLrdO%lF^G!q&`8HF0Q`3s?vzaPU7doj5Y3CI7lrU>|)NF8w92 z=K}&R+vD~O_;p^fd+&qhhrrzc^Cm24fEZ*Brzo#el-DT|`xR+ek$jJ`4SIe7WhzES zp*G@2(AB-2uliA_9s&0;NVhS~KD$qSGaze63Oxc?)hOFAI`2^s4}i?(QAz+`^KQ{cMG{7MToCJc!@alB;TRa3S*b(b|406 z)8q#vFQ34!?aqh6z04+KV%dmp-m8?DKk@|g%RfR4YuxFpbay^Sbf+k7vF$~g{ipf= zxO?+p+p@d9@3V$IoOAB*?ilxIm;taAAx?2)Hn_03(D5AfXA-lF-mn5AXGR{f0ZAbN1eA${%a3z4tlq zzV~hmS`b$Et9$Pr)?Rx}d#&I1_x=8g*?ADxpt~CDMtu!INZP$$z%HJQpr5xy$^0<< z^8sgDY}dq_gy% z7hWKP!%=ZAD{&+na;iH|UVk!j78D2(!GEm^KK=A%TvBul3E=a=B7~$W%P5najz>U5 z4xjRnVTBBgBmlz?F)D+1gCidyU6UQ6BG^L8J%btB_W)F{TzQ_RZ8Fhh|5-9N?~@;Y#odA5gZ+I> zXRzk(Ye%IN_uv0AKK_YM^!umaBRCbIg>Y)-Y`@$iM9J6`%H=Zx%~N{gm%ITX<-GyI z{^1_)Vx29Q%}My$iRr)lhu^`w-~C>G@t1xXAtbkM?(*DoSLplcZIeqp)--Lur%^eE z`RM#fPSbZwz2;IN!sniT&H#FQM;!kHxRyKSz# zS~z2unK5d*yE_-G96My#uX zM9!27K?<7`0_OObTEzLaBNEdD5d`+$4e+`I=c8k?4L*V3{bZNomO~)L&rbWv+$R0k zD>Y%W z#->n$N@+l#%7RPBbFS!;w&~cY3d*{SEUJwu^6;3VDsYR2rE{o|m}yFJZTFZEeLtJkne0NsS8)RT)2`)z26I;-!q^peUGKdKn;C&So@|DNP&Wzz8k*#t;7<2jz_8vgS8;?xQmX zvAxYs5!vGBOTicJUgZXg>z5wp()@@oF-QD{o&pYh;IT!E6rLj&ID3AR&Mr~DK{SF5 zT|!Y}aEQime$&w|J+)WN7cCcGevam-VY%=u=N?^3obZT{01@lyj0Z1pg(t`eEOtoB zNQ#eBxpa6mMNzVB9Ku=xf?xt#6m$)Q61idy44N7n?JMse{`Npn+jc(_ChIBXWkT2jAU(%!Jx#?!T)vI0cGWLkqZ zy!=Z&Prp;p1;J!8#Rr3T8dXSw5X_Gq)l}hv=)GL`8qdy|f+M>mAhCr6r|>FJ7E`8` z;AZO)i-4O*ju!^$1?8CuSKjaNP7tO7*?4p%z?Rr~3raBGZ!idSVyM^ClB2n2S_`~_ zn+HqE33w}GU)F-cbV2xL*P>`asmN$zWsfb~%lL<$jO2CK}%c9=GTG{HpxvzQii(qJ{1 zU@5gi&C1ARYc=lJQJj?o0V-(F0cX;t!NqoWt>k0BW9jB|Jet`V!S!e7adYJaLV9$e zutss@47w0V3Bf6}EI2-FkupkM=a`T$b?Si$bPsYMqI9lHaff}1`=nH6l8Tj0wm>HN zoy0^##>F}UrP4Dzl*J&|yS{K4q)qciM2>)~lYz^~HWNrO$WV^~L4c~NRzQjj7Gx>w zabDw?!u_#e(*|3vNKVJHf|3 zu^(kYNHI;u^*gZthQ6>4KAq%Da8kV6lfcq3n3QA4N-6uryIC$deBnBKpL~Y-3pX%b zg8+h<@>xxsUOR1di1Jk23gT1%^rP#GLSk6595Y7G}w?6qyv>#I- zljpMb0-+`K#*F&h8MYp{#AIiOYC4OCr}Pd(A9V<_^tc=1zK+^F|6NrTIpU2j%N1~S zT<;u>_xEXr*~2NSt+enKrnH-dHDv9Afez=sJrKnH>_3#p^Ue2Bb>!hKO;$WwJ0> z>-t@B_OKq$ZMnZ>r=19-ugYJK`(+?HG^xa}j_>CCbAx(S=nY^&WK~$bG6(r|e{_Zk z$v!W84{IR?=5&mC=6c|}pO<^XBEfWAMiq_*Mwx4{el6t=z&w*T54FFo8n5Mavy%H$k{{M32 z+>Q2_|KdGA$&>q+xz#N>sc)51b6>s5gR^t|t%qOFH$C*aC}Wt@#+#x06wKej3OKbc zQ?4(pk`a_j&C8W!(N%LN_OL%lOYM@umga5?pt}_!gja0)GXvoFZpu zkz1E2A9^j-!>^-y{Ef(ZEk3SLP`nA;N5Bmrs*nmHQ%v8LbwdUs^RWWdYd~J)gh5YO zEI4}W58*!kG2GrR;pphLvUkAZU;j8_GC`idfPUmrs;_(t<(t0r4zlxt>fBo(EWmvN zLN-nZs-4HFb{;1>pU9y|{dZhNNj?fxF+q)EDy~R3oOC?Dd(Q6;e@lrJ6RI+veBZEcR2651+HCyGsAaNX@U)iB8DD`ii6;6M~^PvX}-M!*b)+$ zflyeJfbS3pzKwRZ5GACe1H#E!_Zf}wl{;R#ej=kNF#HVUh0{x(f{<|y;~iQ>^)CT9 zv+88Z3F~D-h{PX}f$xyMolz22q#%)b9f?S+HYvGy{yaBt?nY;`;8Q5EEaRE_h)n%A z$r6Wb@b3Ynfrnhz6`cXo#jquL3o0}@i? zk+RBu&LOuTnmf;I-yQgU=9ygf0*z4z8~O+-}*Mb^}qQJ21nBr9!rWIe9Pl3JF>^6 zs_XG*k;Z3WRkiJ2Df8>4jLu=m5z^6X>(G?siLohsRGL4u zj%@y5Z9l{VVujf*rRw|HZ86V@c8(xooOppup@TGdLuMd{)Nk|k1A{+(Bl@ZpX=%DX z!-?VA^ge@QQ0nhU5XspicK+VZ5z@Eg&nms-z;C;Z!5#}O2tm-aCdwasj}6f{WrU4} z1gVMog^@uwZ;z2x6%CI{BJ~s(0!EZfbU*~dq*`$EKvKwnRz;L4QWD!PAXtJZ@Gc;= z;(Ft$H@CoAoG~Z_Es+87a?^5N1+ELQQm|+(!5kANHO_&NiiH(8Jt0U>;T#p7Bkw7z z8Q12P>DC5H0M=0!3hxY!v79@zO*3Dnk8;#PuS!jrlt>|{wZ^20r?t^&KM9_a$f$Kf z(-N>gvKEz6xHd}Z21JaBn~W}kB=c7m5FAArjo#kc=$V*T5=wv%C;_f%5JIs%t63U{ z6B4|mv!3Z>N)Vo6GU50jZXT2t2zttw3Y=#-pGO&Q)1g(AVisBxoX5#1 z`x^nnSQzUKUDFYSNsGN6N_J3fj^UTwpf07peh?JP&rP5#x(pWunZTWm;}2}$cc z)1snvo`rX8EiE5A{{V~qL-tz7B?9l*x*w+$muE{he9O*5Q?@TEE}jKYz91+(nIOpc1fX!1<1q8zy_qI!UIKFYrrlGX7I-^OpJy*dvM6HRaS} z=Yn=NiF1|}m@@&n6u4x>c1EC+Dnc=tAdHDIlf1{N7ze!2D#j35$Y#od%qHnwP z_8GUy_!;9gZljaV-3IcFu3c|iYb;8@@y$JMec~yOU${XxUnbR()FwoOxy6i(j^eiG zj??X+cV;d^u#R@I#CjLQd8~oi>+QV`FyG6g`EGSK&S%^voKcDRf?q_*;i0hK{xYiUKGs?Q6sOzYnP!&ujGmJHn$v-kS zWhT6JaUG-7z|PIjT!}xM46FI~vFupxn`7sSC`F&x&tYK4-ZqvY+TfKU_|XP%REJWG zoj!a&X27WBU-&^NbJ@3g|W|K#@#xudSgM@R2|)f@J* zbaU{lQd;A=$GK#59liI;T+Z<9Y?#T;K~mf;-sPW7Itjq*QyA*4w}hqll1d{d8w6M3 zx`yCPl-m_C%#CZ8IAf5yL>6`W&ZhbZ$q4K3WCZ-PGcf#_r1EjN@NH4{c`f<*9(MOx zK%mb*jGWxrFm7)=MKEogN7^}Vu@{}lbcvj7A!ldN=O0R>%8Te#U9Tr_V}F}pX67s{V_lBhHpfV!QV6g zDJpWw$7nzP+Z+L+-emJlf0K>3d@E|> z{BWz#puYgn5lHRlgH#{4*`l)naRbzALEi4v;I3Sueb+l#{LD`ij*n0G2FoSxxo2_D zJxlwpcOo{oso(MzidVmy@{3-Nn661kiz(<=gL^hHe@F99ZsUIaGJdB~o%PqOUpGD; z?tVP5dha?Yd|Mu2C|8gOQ4)fK5E<4HjIy}q7-yOU^t(PkAyR0$vSu*kdV-JfM#H!Z z->I&n6*=a&ay%gLINKssLBCfM5WI=<-**9Gdk|w(y{AfXVL$x*ETBoc~|=C%L`5m0Ge3!^=l7}_)X17^AB=$sw;wo3V= zwPzr+9^)D<2+8K=n#0Ljx_sq%1aRZV4IX>+k-J`d?%Y{&^~80$z&f7{tS_SPglMOZ z&hdhGzxzGB?#*xJz3+S%$47@uXS1|t9_q!Xd$PQF=s~7FQwZ>iS3G{#M;{y<;=JeR z=;)rseBxEFB(S<(&SmeFW>1;=J#zem(T_W(yX_y(p4(wIozk}LUGtbuCv0z>VQ>Ey zxwGu=?eYBc&-1_ocUD3fr>(6`e&7fG2@gH|5a0j(|1`sL5b@j`zdMeVzFdT)^`4$7A~;(MXp?iuX$m74 z+OVf~r1`Ut9UfvoeKD+Cp9loM`Rl*N?yVO%vwd##4ZX*`0fGxy;iF7*7;Q05kpxi> zN(v~5_G1ZDKuxsSU)q7~t%7H+S`OMcF^M3eGfLk75&Nv`=h?K^Umc}szd~=ng0z1T zU~N=55K@A_yKM!)6YU;i1ONwOzl*;+5K(Qb-)|E7IVIaEW19v>!F8+01Ef>i6rcGn7C3>7|eHDBp`1j%Gl zA$&orT5;XRRuxjBg}?!}Yw@bU z1W*WkXV3v!)1XbD5Sm*@4LFY~qE~2L=x9h(6^&_QoKUGbo*!eSjKGEn2xpl}iLr)R zY4IXZ=puT(r%rcdI?xKQG#;?tW1Xka66Zh{5}Um4r7B{l^wGd16^P)e3rX8`G=~PI z6{?!xr9@8(f(W?a5kfK9m|&Xd+2{i}W0-AiQB7*>;UUIa$|MaZL}V0-;IVDX(pV}1 z_2xFtIhM->GC)16Ib1AJvOp>yz2#hF)=UeHm~3N~4M9s(A(2L-tVI+cgd$J)B*S`) zO%_32DLhIF7EOba0xcD?)R;ELn>J}JC_+GZPY4!cY%k5%xDJT&*Fh>oRU@hi(p#Fg zp_)uMnjceaZDHmuN(iJb>3l$yn$CJAT5`=61PQeabX|ueP-;orwAkR|2SRDQPzd2; zTwJdsAXb(bA1Lb*+geZ}GLnVB1WCPI!qyfWO7gm+Tm1Tkhgbr5&-LjhW$<_jAKpGs z;XFH9vb2t6XYq|gNmzK#vl6~sd!8>8&s68xwhi+TINv(DreWjd58`j$!Ymy2u%+uP z8&iQ2f{pDdySsC?wkytUZlXnCvFHf3zzfH0;<m`#gYD*TaU^2$pzPwgTv#m&FIx(oMD=`J4< zYDp(Ni>H@NcO>lsjINnX7TEa&RV~14gco#`KwC+v4Qzm!OSZP5nM+h5kXwrVn~vE= z!_t%pA*i+r=6iyA+tPMm4#95(mivOujR?p!2ZFAIYVI*x6-#Brp~sT}P!fWewH_Ot2^w=iyS72rp=_YwF6;b_VYw zdpv}|WKu?HaRSadkT2~gHnY}z@Z{LGeSFU_NGg#4hq(TAk*OSfWChED2v}tKVc#!^ zlvKUpJ#KzPzd0X+gaZ&VfG#2f1IbG`FZ##qwDE#&EcKhgpL{+mW#o--&-e?Wzi%uf z9m_5v@b5iB4IoE;*5GNK;?1Y|BLf&&QYM32kfd!H-rLw1R~ZHd(5>XWP9Vs2nfwd2%@ytTKf#=3bC4qrh9=8*07xC>hz_QaG|Fv@s?s2$B0&GPbX5_y=Iy`Hq)5jcmZDyMFWy8}3ZL z-Eurn_a>y3B$P%^Hh_S)7S|jlhD&7Y6Fj)6Zq+M1AV6rudVQP%i1-Va!~`z@GDPU;U}K_G=J}Pue|d`r;v&M(@3E?;_w|m%<=nvmWzM)rztLd&giTF{RB{e zdvZ9|gPo&81Q450d>KQG-;}(^eE3NYzUR9Mi__QBiRC>yVEOYu$MWZY4vK=U|M4GD ze(@J0Rv1hI)WZ>cw(o^txV?{s(Z76X?eE*pkJoLZb0>nnf!?z=k}kB&qM{kVNni$kQddoFa4)*8wiaz*Y#MaAwJ=C)^Ot;-i|(UkJRj z6x9^(4BpNm_z3*kCQ4@C(Ya?-WjWsrn2p!8w>8mP+vID-+PRk~#V{YTe{{e{LWxg~ zdO}cCHEr7x8Ix)NRMYzmxb>L*=LsRR1jmCYAcab6<>UYx(#|1e6k}E9n7<+^lMF)2 zXU}YNYi~aq@PlAz!8Cu3)>|PxRv=dEcLY}CJss(95mtf0p$+{oNA~N;cwxq_22ODN zZ)@xB!0*$~JVWrXx3_=Kwz_cPJb4_QJA01({r$Kee339le6I+iODU1nBs#o!oRR}~j8T)6AA_xJYk!E^n_&3l$JgUCLE&@!aG)mW^0ZYjT<+)c=6=-+1lJ%{}SnEGKJ!y!6b^kCqN7!`l% zm9OIBg^M614?X-ao3mLAyLp=Oge)MR>;@t9-;>j%haY|0+a;G5P@;C zca1N8mF4kAxB2CNe}yMM?eJ+oT@q!U`{hZtQ-l!r&?3kEP4%ACghZ>=CJ z%|&PC!C9bJ<4ASiUn54&1!GY5yGZJN(&!zb`%Gw`)t{;dn(1I9T#f*YwL7fPYaBF3H!o?=pAt;KrJ-m+zL zV*{lX?%;r;uJAUnupTWWIuK*KdZ?7-u<4kT5~Czm7HnR+#KGmO*v?^vM0$q`(P-t` zC3UF?&O#R{@ixGwE^)!JY@^XcDNT_ij-zoT#9-q>;1DPo1I!0JRZu7b))>5v(y7>h zss#o|5DMdB0CejO!h4iXa@7P>RZ`S7OJfOABb+A)6=RBOg)s(`*-k-V+m5bSf`Fo` z2tKfE4O?{ucx-FH1qvy#ZHFZpJhY}kqBb_z+1a6e{yF60fZ)4m918-7Oz9ZUxkeNk z>m07L80Tm^OI2wqIY9_PYm=O_x8MZc8DwxMk@~5N=Y>)e-2UQg;<_$rs z2r5r2G*B2vo$Bwbw_I->oi1qteC7T%e&hTDeEp4Q`ThGI<3`X?O2UhPK^jGMO;daJ+j=J*g0Q%)&97 z&RFg_s%?c6mS!QMnpIVDwCs>dusn!;YqC`!&uEqhEiIDiOwl?h3rQQChpw0wx8vUDElQ&U6@2Qco4$IDBUaLeL2?3xQ&Z?>wQX z@e7NRg4wLbd&{loTku4g=t9u71}!U|`MrkO#+1pILgE%B zRn=nclu50yR=}~rl`T#yDyvbGj^kwowZq$hTR^oDXxf?}EqbG5e(VXGlEZyLs3l@E zAdUs)W{jbHd>lBt6Yz%~b77Oc!-g#f`{zrhbAz2|I$_wh3b!NBjpIsu zueK0w2MmSqN&PL$(GGH?!_sPCn&oqu-3Kx{!vNXPGmiT>X1K0;1`0$1Z-(cs0;K6O zLP*kJY2n(LdEeKD_?uZ?bYR2A_%(5HnSqnGZ4)C|CIBh3n8X!E5VVnV@fql8k_#NNB0!T87 zIlTt<<@a1|;V*F5wqAIc8;g`)y*-ip> z$K^h05gzmP1na?`eBBCAn+hAe$6HUeJww+O?eQ|Q_wsdXbvDjty^rR;GOiCPz%@&j zM@JNCy=i@xB9mlRKf?9wQ<3J*(1Z5^9}L1tbT!2n9+&b6GE1oY-moxkn+zt70bHe` zpK$Iw>&#OjV*ivv_VRh_z-{i|W9I{1NCe6GL`3;x7y!rtNCuH(&-PPF@?{QbEhj{u zzew>UMK&M^(>r~{e6wSO!+P5*BUo$u_s{Zg{l+!Frx0<&o7dnj0&+2ywxvj=yI6J?r_oa0Qhw-toe0>IU2ZaK;(&iB73FjPDRpEV% zWp1sd(37~=@(yG)&L~uWeU_Wc^Ffr!UYoDTpmmWL-X8C5G9;zBu?PH9dw-VFx`FCW zTlQgGuY&+ z?Eb57O-$cW@{Z+`zsm9>zfS$Cw{Y&8erS;7y$zr`Iho5J;`m)Z#@1i`Z|```r=EO@ zcl^vd{?tI<_4J{4{UO($zQ)&o%hyxS>eZ9m{}D7#Li0y2F4OXHC{~%o-}{lb-z9$a zT~Y{q=ZAigFFpGRUwZD5;rQeW;qVusH(QSCM{W?=7el(aygLZLo}N9v`*?8sS6@_q zf70X+U*P(`_)j?dH-3=G6JNc0Qa=vi7P#lvri2WN1M(acZ{Rl2*IAB#8JeK+#V8p~L0gMJg(--pmJnBvE24AhQ}^*_g;?Amc)0CgFS z%W(3&Vf}czcLe%I4Ny&z@F2JrGvCGARQ@!%N?o9e4WuqpTv$fNUlItUVz@3pFoW-w z#!b5pHG~B0S<|M!Q~7;VAEO5&)16~v?1XCXmqB-$cTPIK4*q@?(%{rPtaYP&EJ&r2 zoNZpyq@qQXc&LlM=+VA8814svChswWkM(?;6K9C^=toL1f)GjHWVI8xxx3d(h4v1G zLd4K&eO4jELM!!{pO)odz0cR?I#23m0}`GxOvMvPfkq`@l$ePZqJPWWHI$TW%x+h` z7+yDU<#J^FzHt5eJ=^Kr*|UA!@9pj;hg*^M_^0nIx!k!ekB<)dgWvisyz>-g9UU!1 ztl2;W|4D05sWeJP1<4G4=XLhx)+Tj*cNLiZg98X~?b-|XEa#(-KGHkB24a}MxW^Nx z80jaxH{g5(rUdkk>UT<)uUz5WxwE%9QA1?%UO0dLp0SE0g2jB!_SP2r2M4|V=dEvj z8-M@rfBQXw^7ZtlH+>23{{7$LZ+z1?^9O(Mfe74@f!v{1*7q9`lpOXm8TdYJueo^P ze99-;nKJMeBJoQEL0v~I#xFw}NBR3f-1o}lK#-WEK|oLef;=@lHxLPaGW7w`6N`Nh zOiLnoc-r-zl#*Y4`!Ak&{8aa+Yem|JhV+i7O>g_x|MITqfA$By7xC%;iw7Ru zG(W~z0r9)?(rgD#l};~G|CuJCupw%EI{+Caezn#(FF0PdNUfR7rUa#tWld0uLMzHr zLx?d(FKv4sd0ApHX^omxh^oM8jV~%xIibF=!`YYLk17@3MT4y>qJ)|03~gi5B12M^ zG0tyhF$53OQq$>@r>7ez5!leNfrN;Q6E6gzkTj-?%uDa+T)-hP1ST7sSXI#ZfUGJ^ zkQgCAD~yb`!=PdehoB(THLcJz0gRG~wc7vyAOJ~3K~z#Ky+o8HltnC;)HorrM8->J z5@RS>@D^unl>ZfxS*s;f3MPf1l%QltlL0Y4rc5z9Q{1c&A}h@YkXoX&X8Zg(I%`2| zd}4Q*w!^h8-Es-erU4>RMM-N6MhbjULRCXi;Nwbwsw}Y~;FSigkV4We8oW(QGa2dq zs*G*4SS-O?g6mMhQ791JV~s)RC=0xMyuft^=K{tCZ0oU|Lkfj=9t0R`X_pPoSX$#^ z%r>FuT;O2d#5lTjMO_t9^4B}0h#_bs@k3G+1xm-wfu7EybhcDjXR*sAP1{nGI(f3h zkBm?nRaaDX0nRh6OFmXiX}w1}i?=aWiy+Xn9maXuWdp$xe2i~urKSr4SyxyI_CK1EzTU=q+Kp}9?7n*`Lx`^I>DQ4$MV_%s@UZE^<9>xW3stH8ys`f zAxec2mU5<9v>k_Si$lH3w?McWYYHY)g>!-F zeI8i{svRiKcot=c-6*;5RTb2l-~>h%h;73ouZ9P|K=ZkOwd8?UYRZ{o@4#{O4;_nr z#pcco*_2F5!K|tX2DY{ey5l8Yd4zCy6kBHsOejGY6dN_iM;)>Vh@ikYWGz^1I?52nehaEV=^c9ZD6LLgR3B4Y&e~6EsH#BNCf+Lo=-;qLEk!#!6aWaR2?9 z!?{3CONyrD{M2EC!Osn0OCu`JnJo=F0qLPDp~Z7_%d&T1*k5|oj$!i^h6i6SdF0KS z^Pi`fYzHXfzu9JinrP~YL~4Q7ksTG|s|%vit7H4TV&`R&vlmNr5#!zvLXw7$jMm@< zc*T4-dUv*sK?{WlQ3kqmo-;3#l)AuLPuE&vTnHbfL!3wJ$m-K7J8lTt#hm4J^^u{a5EMwEdseUyF0qOSBmNNEQz9r( zvb?R#af5BJuE7|yBEJf(lo=6YiNZQ~I52+mxiP@E4t9+5&*#U#=l2|dEmrc&;L!T> z$MskggEX|1!#(->F_5>OcVy6&6h%e$+LVd;HwI!d;2q05fUWDm;+Vac%P{~_ZUv+p z1GeM(g2-wZKYQHHC$&M&LygKlW?4pNsv#uMdYy&1k{>|Vad`DAhnKIRJbg^+5G)x8 zEXsmnYf3q(k!t*`+kw?_UmUmNN%Gj^H0~SYGG-R4F$PsuOfQ}1!V{m%_Cxohm0U5( zt!!{YSowDnFrD-6%Ot>e2G@2784XV3^2O^0hPJgG&Y3@x&n}8$m4(j9 zvg+fqW}tuU2q2~GS)ju>SdHDC%P_9z^}e;<7s3dP$$ch|nQ>i?nf;*$8uQ#@V|{o# z8Yf}p{q8n~#!eAKoe$$8U~%4%f#AL_#farA2X=`MHaUX~Y}>JtLaqZy^K~wV%=I^n z!94DAo#Z^mb$HTv%_+yE8nb!F8}6LSvh3e0KO=<1lu7yKxnX-TJ>wa!rh|J(Y5V3+#*F<; zl3(m`^Iv`o$G`uRYrvZX{Y4&fFd-h-Ur6NGjPl#v<=}h%5zAlrcYpezZ~qXF z`J)f9`^|ro#n1ddgmrmQF$MiPA|O3}r*QJS^jxe2!rtlp%DtR$-T3@T`J9k%|6Ps_ zo8Imd{4r9ONu5w2RY5V^qS`!*swO0KBQ;kpS6+iAmXV4KVi?ap>nYs!TmC81AN{-@ zLbQG6aU0^dKRejwz7xF18jtBLZENU^P2m%g5&CZFUY6(2#^-hPjImQ{t`L{@l~MjV zhWe7pu`#U><9rt!B7+`jFD#R@AtA)|*!mh$4DBVydqzkOfzgi1XnjgLci(Kne|Txe z*KELJnrMT~ph3>NH}((DNPkA>&=3-+v37q3aYy}ayx&tgJMbpuwSQpUAq%428e z%w2&{=N!*py$V9Ge+tI$&dyn63gywS2L=5*pEgbE2<~odZm_vAV>X>Jsq6Un)+Sq< z8%(EDHf9@aZfr1}&6rFk%r<7!S-O9;*3ZA6JA3w?VA;XpApp-kcloZ@0o;H8eUxR< z16a9_gzN8)5(OLvpaEYga}-T zq#5i(bk^A4Kj8T27}-B-=$BFoR4%8C@n}V$k3HLuwR@xt?xoo`0?DKM;(JCG^o!{r z9A$dx^--5z)z} zC`xjuBSN&Z0)2en9Jkw#=I9vGJ~4;;B|s(v z&QaAB3LoWZm7?n+dwJO!s)?rYf!2CTp(&M5gHU3LY^5mB>P4U1SDop(qN43sH7l5RIcM(&j))oU>@9>8y*OP=LwCl%uwZafU;{ zE*q5hh{B-~BTEVBoMl=lK%uH6@7cEKw7@G1h0=QN9u^n_$ zB7hIVgGD++{`s8G<}oZ~hn zbs;IVrJl^V^}->plhj+1Wf$4HS__0K(1oXM44n~Z>1o;pUer((RMN8S0>WBcnGC4j zQE5dR=V)}2)V1ERY~rL{2rxxO=vvB3v2>1LqhYpPwp0^|FEy35gd`i>hL%Y^!#fDp zQ)mS;Zdi3GkzOz<3KoYA4}Jwa`+J^G|B^!2fyrdTVsXs%Pqmc3q9`;?u;|ibY{wV; zXBAze*!g_8`u|pl!qOZCUirl(O>GH>nrhlGUkbJ^6r6j&v3nrVJFvXw*uNYluWwut zOiD}GjjNMFID#q>p}{UYgsxcxM`%5&2y{r$C5;Mb9T1ZmrzK(8QEbfU<{hEX%zb3P zDh-{kaMrLaN?H@}8m7mVpd?LM;tnmca!?nP!D9jb+q@RNe=^EFql&6&(3ZRmFa1P{Gap zmO@+J^yLb-S@3}NR9) zRFZp%vERJDjA7ZcQ9$;fY?Q56{pK^?6P7Fr&v%)A1t3cyz=Yc@-h#yI-<_+@zgya}c zSrNncWgUB|DpeqaS^>hc#5D{OWidW*bO6YpS_U`bHHxxaWxnNliO+I<8|8aK@N`{E zRn_$JUw!L22GfK}i(QpAr&%5~0#Fekk$s!yddr~O80;DYGC7UQ7#(9AQfP!wNI7^x zuK&#SH3s1_n@`C2yHE0Zd2=xa4s(j{t?*cy-8~jpuj6D?Pw9;)smn{5ogO5Ln5O`l zKxV&N1Gm=SFPC%tGr#vq8?TeVz&`f1j1GxaIb-v|`#ATChuJ*4!?i#D1nshkUdh~E zw=vJLVaeZCpJNa-#x|As&SI0(7)qjuQoYvM0c1^rS4w5zHg3G*hRPzz49XaRa?NvsY!7!wSF{nXfsXS~Bd& zIH%`v7D45>cEe}M_YuQbctq--(QXx&UI*&nD^eJ zq@pN9Kei(nIWjP$v6zh-D?qXzdlKh)Od&>_#QY9I2&{2QT7Cp|;_>7+fnSUnZ@6YDX4V|z!V!Vvcv;(Q&v zC)h56zQH4k7{gcUBKE4@fF#!PT>H~E1b0H*x))=S{r`KaK97|b_Lf^e^$&1+SB7Ik zqR&3S?2X?<_xwj$e(>M*V32wCgB<<#+t~W5zxSdZ8{El@JZBy6{I~Bsp-;Rt>A8l8yvV> z`q?WV;-A0zKSpJ6OVm)m9v1H+cu#kek(NSF9ER%hWi`W+53)f!|&~VR*D^#OXffN ze_;Ob18jZQcO&W%yIgF8dKK6Yj{IE)knQ#fG>kylwQIxrJ^9-8YexU>__rU*(myYX zR7Q~1A*4c8GlbU3Fdgq3WOK8THl+VU56oroE;{_=eaMNmcY8gAFfx#*IX(ouGimPE z@%!#Ounk$pIQW1y4r3g)GkBkX4XqFYybKhD8nK#AXo6FK5}ysTbPfYFRuz#_B9+8i zhf)c&WdsVRxXS~~3Rz||h4+o;#b6`u0VpZ3*7pYfXxAUs*S#~F7_Gnieh|UrLI}RH zT<`@GiKzmY=8|i-0(0W$TBhrwLu!)$%`vcrq>3b>AjY+Gy0mPT z2qAdKZ~O{RJn@%Kc~?yT+YkN_-~B!Rc-YH_!BOFD(;Kn zfBGl?j5ogV4SeNS{N>ZXNJ`V`gn#kB|8rjZ+Sl-%|NVC{pU-;-hVj%QNzBVw5VEss z@F6N=o^q0T_SwskWlr4RMH^j2U}ah($IvnvSe9e~V40l+lJZsdhzSA?-0=5l)Bnfa zo5tLdocDddr&b!@xnU!}qoZ)bWA~lpKQkxZ7vINBv4F!(1#7->RAB?~XlrMo1 zBesNWO6&v{5WtQQ!A?j;LgdJi5K2NME21chOEk1disbC;ow@scx3hG2E%{JYefqrj zy&GqSbW*^*?>T*Xsj9B7e(L!@|No<6Tt4Sz+zaVh@L}23y9IB*#-elz{2;`XH#>q+ ztGR05OffpG!%Faq6+uhFf6{v}uR&q({)F;Q6QJwb^16dE|CM_;sA-WqPNkB_p zQzwPNg4C9L@aef!6sc&+dwFHO2!#omw9(RMo!XuPLulOwQe8Y04? zZP2z#4($+l?seh0OQ)#Enh+%=_!f;fj5 zEGi!pVnk&Jo>2-F9QZWJbX@~M2u35`;q{23#Ad9bYdfksSQF`!az%McTwors+g z-#Bz_h%q_uBLbob&J%;nNzRkA)Fmo3^F@d9$(b%GyogFEg5(@%F)|sC2ndV$q6anV zwGrdW5}Zpicit1VB-vUeI1fpGLeY4SF^YD+K$`@(bRhv#MptN?0PxwYVXYqFm0><_ z@S^Fum?nRtd2Hu0Uz{ApXic@f!$WS$zpl4%KFNmfojApoUtoc%);ut4`BxjKs4LA8 z(Kw@d*XBA$_V?Mn@;aNorQ4V=8(G4IJrs)TSNFjO)Li2hfsq*Ivz8DPwvNoEj*TN4 zYbu&WM>Q5AmY_VNHG>bHs&!OrptZusim?@DU6*oIyEX*@C~&Pq$CQUOYK3-@*mVS@ z2$iM|9>x~ErjbS^XJAz5jdcPIGEYGti$zN`3W=I_;S#W;1J)Q8iw=ySgP_`u{kFrb zSL{9$*j!h1)0U$rH@J9t%B%@&ZjP~Im|k&&T5f{&%a??(o){wg z-m)=?T;HkKT32jND&BZwA30Lv77jD6aaMC>r-QXE>g_$6*0CQ0lXk&mqoS!tw7U&) z>j=ku%l^z`tYUxWsYVJtZfI*RMGqe&?92$2*?;GCcC#4cA_R zt%>D5YwLXOcdoF$?&xM?PS}d=OD*-TqCR2S*=bm>1buwO8_zU!UJw_sN&t)N9H!DK zT|kK76^mI!MMdy18fj22MaF4Ki(`bga}W~XF|m0$sTFPGm{gjmLP}R)6lf2egs?a(wO4X_pAC}R4Lq~sd@Fzz_0?0B`G0)4Q zR{>R^XB8%W${iUJL=HOg=|?ua(8=5P&M@EB9b1-@7ul4(43Nkk&B|dQ@NnFgXk(z4hLR}6ps?dHTMypL(Q^;5cH{_B8=BdiW^YQr02;J!wa=F9 z@jjw8-uNsVW0K7hGNaNjpYiAq0CjP04veGr81K~k03 zs)tD)uQIyJ^_FwbFt}jYzJvWgWYeeo<*rvJ7&2Hx2q+1?3lQ>oi9HbAJH8_Qb6SEh zLi8)S!pr#;Lff{82*%X8t{ozZrkxL--9fNI?>s0V^imqT)Ve+t%c zhxS)-nk4&jIX?SmI4;@T0M0i_{y*FJF~+6T+@Rmf^H*}kLrNczmcfcL*SoIk16z6r zsVdTpYGv#gW9YhWC3kT7z4U*X8_MjxanBz9 zQ~o(ZpLcn-wOlqC2_SCQUzwiFef5+Ol{luZCm+>ameczOF zw1z-;?G;26Yaje8hwlH!AOB;nzH$3pf^T*C{a^c6-1E>qY#!TOZX7>(Tj00d+h+Tv z=di~=h*^K<%5Q)7OCRUWIuc)-@9=+Je1;!9GXSMGe*|WKNV{{D>(BpLzj<{3x33&~ z`8Mp`!^*SQ4+(@QC3wQ_?d3k-&a(U4|A_IU--A6n=nr)=0jU1V^kATV7}RR6PJi(t zyMO=heceFcVQD}2S+;-Xr`h`Xe~8)~j4^#5#4F%m;l{CY0PtJ^LJtDI&_@W}64Wif z4*=c%90wS{2Xg*K5t8I%0TMwgn^b6$k2(8@ zy(NY)P$HBi<0~$0O$EfB9a!w}C37mJ;DO>%@9iauJuQ7Vr?e3z@Q)?`Fb>)tNz&ef zz9`@hG4fC?eDg73(dXZtZrAm64OKXxpq7%u%;tnTvP zot47EmaGhPH$^1&N=D=ype0B0(PKw%d;H$+9!e?Rc>VS=|02T1#s=4~<$$NM_8SDJ z-)Tuferf*_D0{o(tu=h=Q=h&m@cUig^&NcjlQ&lzDRu7GTSO!z-aYJ*-uF$9^H+ZSKj8fN^YqUrY04ETz+eH~@_d@-&O7bFSU_A!94$y# z1ZCYv%xrfclsO?Qo|0Ij8r=u=_F!#Hlfd2B&T0Io_ec7Z^1#Quw(@1|?Y}<2US%v* zU4svVtO~WNJoM&DT3-di5Av~=)p$yZuYZTdQww;lLhGlC0(Q3hQb2#$8q5WQnG zvMHZM5M0+W?>t?Xm`CGEBY4_oL2WdfBhR%(g?BA6D3rBCoe_9zk1K#%$45q4(5b-{;zrR3N28%~oL*r6@ zTo;AVdB)LkZL)^OgE0^VV**`-PBgfdtt0E`N;7jQNwyjpc3nW~8XE%6J6hLbNKq_S zrKHr_8XE8D0*J1W(KxYr_ovhnF`}p^63oxD|r!4iXVt1O1)Xp1%3Wx#ME$~r;N{mS5 z9no5*jbJS}N$jJw$(W{XX+<%g%`mEBZB*f1N2mGm0&0CjE5 zXd`m;odGinTz<_Xs)7i6JHq4)#44m*!sEc7{)S-noJFI!{uQB`z_XuGY@UogvmY%e%bmyA^vE;I%*XJaMn#%TERF3kDP5 z`EJI&dYxy0Q?BB8uspZB$76PjE6?n)y%u@*hv2E-gD0LeOt(Fs|I`i}$2E^VvdQ-4 z8N1gNy9>kYnx?+sY1@cy71K95W_yuJD^y((+b%tqCZz_5E<0I6dNIe4a;r}FJz5gj zDxtm#Nq342lVz(e9q?q`we4LGu>~f*V9}ya}6AX4Pgn6+!$#)%s4ld-z3z(W^jV0n!B0*y@_p+5yP&W=bSE8q&Ho^o!Lf zP>pKFM>bhMb&|Cc#~2^m!mO_)_I7Y|dsCYI{S}bzM%M9ip|m=dm!C^Jz4v)t60+@5 zz_H?-OvfyN(~zH|0(PcnOdFllOq6ipxfj`a;}XXnyq9C|I)}2B+Ss&!ll*MQm?YkH zTD)~#M^)8J=g$Gaepr8%&%pt(aoE4ZvO4}k?+84|z%JXAl4Ki6Vp$BwwDfgX$^Py8 zGqocr*hECdJSU{wv!WE%R=th71mi zrb>W8S|e$lm`PpNVXQ%^6c|ugy)iCx`^HcLTpY^?ZOL<@&232la3qbp0`!)14RfV` z{mO8h-W&uj&b{UK!808qN+%|-sFaIa8A}Wv(Hh@m27d|6ijn9#LOaiL&lRc~qs+K? zPX<-e5D&38hK~IIzm^zj_NLSioLkvE{mlOg10Y_i37g;dcM|9eAd1cJ`;VA^@#Dmj zSJO4LuY4YR`r#WcbK>9sMMjT&*Bw=`qA4SH@$oj zB1|6o$(8LdOt12Lm!Ex0>h?=7eU=|M^X}ynWKV)QgKJl%xb4=vSH8crbNB4r3%3A^ zW49o-Z$2lsT0f51F|nNyrnhI!t<<5Na_JX;k~9DD@1WODEPpT$gMSg2fvkghH^Vt6 z?C-PtbAKQA(u;4p{$FcxFTTLuKm2(%|L)&I#^bzIKtB%QA}QZ5tjwGJTsZtY06;nL zd%rClvJWiTy!rFe-MV_M8$K5Xsls(vm$plJ4`*O>`A$E0PI^Z**{`;glRUii=UUyk zVz({l=yYyTqjY5G=-Mu&Wedxo%VcY$_qWm-qtm-Ot%2g|Tk7kBLELpoKGtGC<{F2H zkFF1N^4WIqA-xkrjBISIv%9<3+hC~_MU>34&5bT>%b0^~i&MY2; ztfCkrkBkEA%41Q4=vjDSCuYId0(|7*(E}Sm%pi8ibrHyFTV;Ib7UZ!tJT5Y@jbjem z&c4S>m)_{r2}4#DY1@`ZAGz@zHZ0TqX@8F0I{|)=Cn@ESQ(JlGQCfPN=T3*1(&|mv zBeJpY zi+3G7C?b5zw|s!#_?N%RPyBm7#nVqe+uNaWFpksGLi+loF?{DN@tDEP5_Ti7%;g;f z6iJy>iqcSe9wipBYoQP^%Ds@hPC{1wNVl#?Rw62+z1aIPCdyu1&bxO>B>tL<)`rSh zwvKPIyS+o#-hGhVtx6z~L1Gk|F4Ba63+aBk0&>dWU6~#dlq67?>=PtUvoU7ER|xsF zn%}Q|K+kd>PC+t}OBXNp^Lf{`{d2f{50+PZBuIKkv~9~|JYhDU_46DIJT5WKwaa(N zYU;J(=UE0Q#KHI-1Q+C>9C|oi})6p{fZ^h;2u^=m_4SC9vq)u$lB(@67w?ph{_MMCK;a5xdbrBK&32J8=_G(J~6YKR?wAUe`lL< z^eM_OgLg3mtf^QKX*$oS8sVD-!TTh476WS|i&2Ug9P_;fk0y{LA5CF3S(EOgk1Q4q z)hHRw))dBDitbbjMCWPSNpBt+m1SYHqV*}NL?V#;L~>qal?^M`IdBeb3{|BGZAa)@ z@E&cdGy%DEybggX8>B&?o{VXlu7B;NNmbE0PjcERq|)e^K@?F`ql(3%BZ$Ik!?7br zxjMTMBQA7ZVw%T56Fo-K!r}ehKCx|her*%H=UEJ=W^?v! z#dXna*ot{wp%*PdDwMWt*_sP4y~KKL38BSe7#Ty9h@X0l5fDRVAv6J9SIoVlR-Q?v z@D7>=DzPaq>PQi^VkB!UyyyCK0gYp{HX>})cml7YOB>^LWh6)!vhJcD8<)Ze9wP+A*RnfJM@npn!EVONdh~ta@1lmre+}E{d zzSpw0F(!`Z>|PV3s%X28deg9T#qo|0D=xjDIQf3d)*}&X0%mMzE;d}91@RhJtjcF={ zSDtun4x=P--Fk>)McfORwU(w+n8qWOrFDY$6{=Ib^yyvR^FxMbKjAqx37pxi_{39= zCmyj}yWG+2M(#PX&I@~yCl`Rkeo9u9ov4?7l72(>5d z3!|+-T`4wf!yDI9THnSw+MSxk;tl zQI*c&Y1?+0M^=_VYwz?g27OG=poq}9<^an$UEhZ;10O(Kf+6LcS}U|xbe+Q*ofe0^ zKV%i`D}N7y!6}7T0;~_RLd$2ZbpQL1wKil+9%Sly@2RS4P>+~WC1hsaP{vuQWxtzV za@_RiDiO}54}0J!E_1BL80a!1xzwqA9s)s27OzTm$PC6};rarg#F&*+Qd_&u-5~co z?AzseSDBeHE*a5k;OHs~Es?^M_A9Ks-moV*aqM6m7PjMI_ql*Ti`_lu(P;m?m+8sgw7Z78Z9NlEJzK*UePAU{kj8=} z7Q3LJvW&Jix%|wFyz$hZv2*?s8)r|jdG3D3>uYE$36zp#lPINezQY(hV6m2f1K;NY zE`bn90U$0NZ!zb2H6|^H%667HXNSyu9~_E zZ#wr<6(BhRGs8IqkdSO$mBPznw!eCr?R?!b-bz}5kY(_dm@*<$@J1N6a}WrUpV?jl zT@Kzmweok!njNY;4Alvib7GPDKWxn9ARDbIZ0rzRx(6az$~~naDf3v2IiGIS*;$63+6nCGcisrV=kh1N{}l86*gYGG{Pw$--Wt#s;PX4@X?({>5Aso0 z=Lp>&t?XxyJhAfqh3)BGU#mM9gfS@5HAMI39i(A;EjfLUJ&3p#d*3(FK7Vr-ma5lR zB&Ngm8|?g_{}spn@_&;+L?B5%Kba(-&BHA11i*WCf9_{-&p-F3>;7g-``OPh``AZW z`yK!6Z93O0y@-;3QWM!fb9{e1UYD!b-m0 zm;vP8W}-OrV}Bd_^$%qOBr8NXX%o;N1ws^FX>wp=u45m}8e`5IJy?f|45Vq3`bl|* zE2UDZmfWtyN{&5?cQ{50;86l{%YGpSR9-{A>s_}7e)kLGS1I=PZ$H0oZf#Om6^ljF zx23f8Zp?{Dfl$7-QtYe}?5OiP=lJnsw>@rqdxsDsmo8skRRp?8Id=3&4o=7tv*q($ z7*W#y#}W)0&H*pN3kPka$Ii;@XSuM*0X8{Ex5#?uvnBtE_Y@{< zS&R3+k9?Xmx1`g$OvFs{p!B|-CFw=_KxHK=-2-M&E|}aW^=7V%{s;wI@e(dL>p;*o1|M^VD3FWM3glUp{i{HRE@!9 z=T{_RbRv5DMFTMbWhl+DP0!_B#e24|)76I8*EU(q8!lk@?RpdM!C1@4TAHR!Y*|ts z+2}(8?aEb7>h%&qcu!zk$Obiwkbz%(6n8XoF}SgWBmw?Q8Z#`77H9DseF!3Bqy6U zd2)`P>B6Dw8rO70iHtWknX8l|);W(jhv>vq#V2V$7d$j6PpT%dDxGTyF{0xLgCoQ$ zv0i6WD%W6?V3fvp$(bZt5hSuX8PR$nkeq2G$RtDd;)U~Bqw5+!d5lh#0yxVNCzBOlh*B=&?cn&>)=L>66_ zalZ7U%AAQ@AwdLe~+s#ooDjSGjz|rN_T7nJsBZ;4gOsZ(tPoG)cS4{&2Xq^0_6=d-_=A73&*R^(SUasajp6kd=lDItVt;{A5mhOa6TDZT zH8Bc7dnVR1ww|?-WCwm=L%;=?H5L~Gl_dYQ9o5OO$c$8F5~vZ|fQ$_j6A>4A_T?!r zy!HYcy5r zfOWZU2j#Sf_i}j6)E)+7XBC_t-YY$b*0$EJ)a~GXPGEkZ+1aC=%{d6L+yK2 z4-!M<#ZP{k3r~HCYa0`ezH))%k37iM1NWdub;|Xd!CqsQ?DvCUb#bJWahCwnr8IB> z0z=!bI2R5|jTg43*44_r?%U9VpgDhV2$UFb5y`3nLnlEbMBlUFz4uhM9xw;8q;!^> z?*sBgdhonF7bV!E$SsDP8(l>8{dzE(x4-XY?8Ov>VRU^%yGuDJ?Oy6Vd=^Vi;>f9eL1L-;i2sqcz zYci0WFY~-s7NJNR+GOKv`Y}=@qDxIvLO_p0-MGo$jywx}E6qkET4ph9^ ziA5Xi+7?VUl2g20;1^S(>w4#%gg|f&q76z_Ac`0|hVu5eZqPxeqYNAK4J|3K=ML{} zjO@Ph0`sevS%2)uR(^8VUb$g+d*+cF&moG*`+tO;0r1;hd?rh8uh!$*FaPxNFjH~l z-}$du|F+fZ0!(+O{OeELCZFyh<%ti!mnZ+NC$W|7f#2WyXCLRnD~E%%w<^y(^)w&; zp${{f6o;|E`k#mGj~%-I^kQN_nYH`TlY3Ww`^`80?9gMrmh$5CI#=2m_l*batnvE^ z{-3>N*SM1sT?6j+`4Mk_qWtc=_A;i8 z*S+!z?kit07U_$K zC8e(NRBM~)jYMWR)J`mb=7DYhUns?o9tVA=l)?qK8f2$)y1JY;CmmbX8R@5@5EHVJ zO9EO+{@)m~PcH$@LqI5j56kyw0iuC^JtsK`ZtfLR7qAkTMa^>yjZ%a3IV!6w6&tQ^ zXOG;b>*nvJ&M^kG%7MFKsj5V_|E#sNdHtAhha5CWviXFv7E9NC_oKH~dDx%MdgYqw z^!ADhlku1nCysOewe+sYX+@WS$ZgM%n;%x6x4S9jKBtr*sc*`-IezTcz;D+%_V)LY z2-mM&r)iqof}C4Nw(@;1>RJiqOVz*g256B!AfX?Vx9PFEs@U7xV}F1DP~aEfA=WK0l-t3e&EoaZ3=A-}fFY<#w@R78Z zh(c5Wi3$nJ-U{U3?#AfMb&W-zT}bDYqPjU$dK<{9qslU{NAuEjAO~jNyBmy>K|__- zpT$=ZMX<&s%tU{Eq z=1^5o`jwKdVU4D9DOjNd=ZGkxD)Tyd+@@pt@mPFL2iE%$Bn#WboO=Q&Q-2hN=t$>0^VXrPCd?YV_gtOtq$x=Z=s@T?u!=4S9%#Dc zFs!V`b&lvGzIAA8v$St|UL@zFShx;yl5%MqbWBE2Wovv4I6Y#4rj3#YDv5n!jYS9q zrBZ}cNLuhHg)y1c8-aS9S-Kt83dF>M_9%kVh-;{e-i-7A|&3SUMZZ9Xlsy|au91{d%2X#C6D^!o_P$|C_MSs4Q@a3 z;%5TS|8Ah#inx7v@i!gaPDFG-i$W`~M+5Dy@W>C1x%#wcdQEZt)sFqSraGmVUv#ul zs5*nGEinpvdy%a(fywE>$u&cx4B9HX&@%VJnGa}ot~`R05!c>$mEE-o>mT?gX1fdO z^);%AaOumhpgUpggeeee#m2UTrX6#9%Mx+KPI3KmO(hXuIj*zLXgcRgYgjuGIOa4L zpVrj-0ggF#H$kSFJ=Y;RQf&*f*ITykshLa^`dY_AJNzQjsG5tPX*u<{!EY~UFA7=( z);GtASwBrG5?<1Mw@PsW$HrI@LQPyWh|)AOg^C`f0^{{S>m%N4P>Okz*lK%hES1b@r*< zL$+xFc82{}t~~^^wNA#Y@7l!n6M%sCp$9Fr)>yj)bW5Fw{RstRin$*=BBp29Rh3Nv zMkHW4WhGbzwF|g5WJC_HSMEih^B2MB!%e<}If;iL)DU1^0q0gg-6ilk{9EdI5JVo{ z%Y&fo3KQ4|7CSq*z5N`#wtC%z<7D+--?*?m3@{o7MF5z}vU%@4oOt*gYiCYnnc%!| zl>}x=X5lCSi4HsnMV2tkVilL9MZ)JV>Yw)6)I#0)|zPo*qU3r8QkkNLHC^WvpXaqY#Ixcc04yzzxoocrz% zapt}6VRCFM=fh1l%P>fx)UBuq41*X#4wNh9R>2B~-JclqB2Ef}A_b}Rj8F8E)ts)d z?7K2}P^|X=03ZNKL_t(0)Uq#=1aUyA2@%SxC9` zv_|Vvm#nmq9a^gZe<0#}wSyA)qEyZ|rF_2r>R3IfLU52lU*@HiF&}b&M$lR)uIuC& zbAA7$F`$+K0RtyN&+6A@zK>{~Q;>w>bQJnr;*yTlnZZ}?ZJD2!pm}l3x-9#Z?S4sZ z(1RS)%YdaU;~kR(w^F88wlSt!33T{Il!LDO!qz%`-{R&<_eBb-a5LXmRv$9sb0m@;yKLJ-qvakFD4w z0QW!oz}E!)y3XaC6(#XkN7qksE{@vpr~_r)&|T}S)b&%j;Isj+F;`}zNpBmey`AXQ=9 z3+M;HZLsO|* zCW?(p`0^e+-zBA|NC})vth1;Gbd$af??hJ`LbM`bZ?(HX!K<_IfKhNMo4ovwvA$uu^H>UMI z;6v=Cm*0vqZH3?e`~s~S7Myx@g9v4dJ*S9SF2qo}lm^KcUAaj)De@v=)7Z3li`&Ii!>4lB^i<{4Czq`|E!#06@r za9tqe&I=)?Tms{o&c_6p8H>`IdhCc(jSD%?YQ8}f=V@@f|Gt(lU*5tx&+guoYEq-L z#jdRpb{#&#rE8k?^${W|Qp5YepT4|~#087aC%=fKHq^F4Tj_HhmI$rZrG>cCnxG<4 zYZhHc7foV%=$h7djI2$$0Zl}-Mr(tetkJbCCI);A1e+vqgHlNFiSg@WqU~n`DMnB5 zg6Se+YKR>=3L$ie8F95~36%opsJAw;t<3;&z>}E1D(MBLL7yG{AOz7kW$;As9qn{V zt$XqGBz2rYSP_uQQu~x_T?AYVSe?L0W7EquEaqq>jH)V0RyPf`1hlQtouhLBV=H{y zpsm5}&Xco_h$c(MMW5hRt5H7nLtQESA~9Sq%juP8q8S0M9i6^NZ4kspt6x!05g{)4}a_(Jow~~6PpF6_peadii@wm zhB>{)+OZQ%WSg`1-p{k2`x4bL!yDHcj-5Qt`o;!Vs~yy2f^R!c++$fZH7Ad5qOV+` zKDxo0)eu|Wc=j^g)M1nmjG|GBkR^Ma7-Vc|ouZD8N%Tx(WEu^}O>&5h)&k9mir|Ek zTJy$kL){9kH(a?MSofN1y9@5|hP|k1Y~bv@k@MFgI*iyb3tqXZIDSuLHuHpgkFeJ4 zP;JzF>)-l0j=lH0`Sri_{k(p;g%GIMYuKMN4VF>s5$joWjxGofuR*l{8pYUXR1CDO z$F-hnR59&Z#8^y>=;-jyvu+f#1yQ|kwJpIzEsAO@P@f5W_1Tun zL>@m|F+T1vn}PKQJ=MrCowjTqvxGX(Hqc&p`fY#34h@}Q4xk}Gw*qQqfF`m8YnFi1 z@;nE@us%ob0Y>SNDR~$R^B|}<1a=Y--4WvwWEHh~Tmd&q8L|x1wRFncJUIUlTs#OW z4S$mX5apcf+f}YvWW|P(P(wfiQckS`K$NKLl^jHaV}>AYX`70q=unl?7o@f?0oW34 z9%Deo6q%lE-_(|>s`}4O(_pP#0Tq`Zo5mV@XuXD?hkZS)YpG8u2N{Xw->{#C`;`6} z1}Pi{0v{aHk-%bqO1oIB$YhuE583O(aXTEBhdIScS-DnB5v9k@J;3pIKg?unlTca2 z1H@h~F69?3$AMB7)M|eOp8&#;L2Oa0i;{zVeXAgcgLSkU>(uKTDTpm(wze#trYZ7u z$vPkQce$6vPva#*WjOZOIo^2sX?9;bPq)9v&fbi#UfW@DZHIH;{bBUhWbiCX&&n+K zxa+!=;E4o`F7LrXDd%Bd4ev$SR@4I^IZV7y!8S^jg*w@fd!yuW8Mh_RETrHRr3_k2 z@AyfQ^8?9qmW#Tj12H*Sm1xMa)5GU`7>LjV%!6@0Tre)@XZrm@jCkj;wmx*xI#gU3 z-pf^hd^zuFU2=n$FD_|9rTn+gf0BRj_z&hZ zJ%HXsO+E-$e*N~|@Vh9ZTQF{-?}%UbJmEJl%?qE#?_Wi)AJ1FlhQ65p`oEz2(igwB z3y7dkp2B|Hhgts{e-jyH2HBHOGX9Z|0I>gy|0DDN{eQb_hqZg@Mci}GVc+wfWL_E*y^4FSc;ux?n|kBY=yp7*IV34tH=l&l)@)v)UU;fpP@@*gb;0?iOw<|yXWB)F{{Lx>59J-R)EPY@^nTpdG zzKd}KNuIf^`zVa~#CrAl8D6qF%Qe%iEMW=9^?{`^NvhvPHMn^3QVupql~Vawt<>N& zH#6uDFBjgpu*~&MdPYv2I(dh(+sSU1GLLHA2O8f=xqRtTN?m!wS<^YL@9(qg(%A7z z(Yh}EjY5!sN64$iMA*ytg=aa(#^vO(RLP`}vV184CPOtn$^8_wEip_# z)?Xk!dQHr7~7XDMgvJRyg*HH^kJZPVd`P#Ni+oxvwbU0WGu zdox~{!+5;{mmEN6j|u1Q7k=w0&4%^twuYx(t{9m)i$#Yvimq$1DoL)Y(TLbKjH(Ln zg~}%80E9q$znc<6+jLAe)==IvUvzlqsq0Z6sTE>Cp@|4V-xi7x2;0h|mV1s>T?t5hZx%c>iOMvOS$~@#YYa$m85K| z3SZj@5>f*?iV=kvt+ z(n9Bx;cSE8+ZH8?&CLndukBDpMK>DJ1y~=i6PjIIyFgis4iOc7c0NGUHCO>L8e=L# z*P*Ot3@ldUG;kiY zt(b=eM9p9N;UD0MCm!Q>e)ki6;!~gF!TV2h@#-GF>rzgj2+k+jI#CMgJl=H}kpyg8 zjgMgL1P6p^gPlxR>|IaMmraAt{y+WOT)cRN-TfIq|4YAyZ{|t*QVY7SXj;$6Ry2z_TEIwh@@cJ7zr>VRTQzfb zqeG%Wd}Lwab89DPL!eTM7(B{ov?#i!VJ&v-Ols8r4!e56)3fWmXWG$?D)x69Ds8Fj z4JK#K((FzdZLKr=%Cne<9%B3GDQxiU?O(&3-Xbn$nCTu0&rEABpTEx8$3MX4JKn*l z9w=MmiT6=bYIo<}68qG&7HHBE$w$*BGrZ;!ssYTfv1$O-E3Hy;lO;PYcZ~<#OJ7 z0PK2TY&EX4ET)Fd2Q||xn*HZBE_zPg|NoNr-qDsE_nqITLU-SL-@PwQ4wyt_fB}R+ zkQ5V0P)yR2qU2Rr$y8V^C9N!JmAyX4$IA_}tz++cZAnM#UCFDn@+wPSnX)A@lM=-Q z5+DJB01=2VgPD2r-n?)_cUSNqRn@oedlTMp2~p>`aB$|`j@4Dw)%E**f8XzKz~a%G zuRJv7(94!sSo$`Op8F8i-hf{opgVm=lQsI2rx86xdHyuy=UFX-EYYy;B02}5Ji_MZ z{|tTI%Xs|Z2U$9Jf^IR#^5GMldF(;PnWV@Cdtdb$dV@I@&OFJ;XFRuZ4(BCBzmF+P z%B=}zJmTrC4Xkx+iY?9$OZs~jD4j!#z;?DsvS@2&-ZFMUYBTc^muGk~gn_bKGwBKX zeK1DiY7ZS4+nV0Irg9ls?Z~XBR-Q#)us(9suAo~@*pf?FyUybEHQi+mwWR1c^djWl zF~h9Gfnx{Q^U`}5KJx_SXvkvbsk4mC878$yPDTvL=!|N{LU1atal(-m1$8y%;?Oal zNwN&)mU;|zNj_9KYv{NfE1`A-KBRiV)Q5mG3@`}+2ybgsv_#7^04Qvfn8)Z47FHh>hiCpMJ` z07%Te7><)u10^znoHsGYr6LAb(#SPO*4O30*LGbKusW5c4lF+FrogL2AVdOerU1}( zCgiL%YN$i|{^7tBMV-K%xX^3P2_;E2PunZzqY<7g=C1TUvRA!BX%&Km+%!*R8`w

j&MB;0?Ji@KYj{Q#S=H^f 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

90Iyt**I8RmL*Bz0jwzF9NBK*H{$U; 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

746q(KR5lYlFUhlUzMvJy4?`pX=*|a}MiWm%nis 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

~)2AiYi;%FIM3Gq>df8@ar;;}<-X&eA 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 z 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%0DQatRJ}{SSe(t#i2Bl$Z=()JqBh!k_QOUz$MJv%v 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 z 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

_(etzElR&5hB9gO9}xrWGf|GDuohFrIKr2?Y! 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%0ACE;0;pl>JO{{Uosowe88fn!V>E<3y#|c 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 CLljE@ literal 0 HcmV?d00001 From 6b1f9c168199fcb3236495b52c7cf4e04a4b92b4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 18 Oct 2024 15:57:39 +0200 Subject: [PATCH 052/323] Fix: Links and unneeded content --- README.md | 22 ++++------------------ 1 file changed, 4 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index d6fb95837..021aff610 100644 --- a/README.md +++ b/README.md @@ -27,20 +27,12 @@ Logo -

Best-README-Template

+

Poddy

- An awesome README template to jumpstart your projects! + Podcasts Done Differently.
- Explore the docs » -
-
- View Demo - · - Report Bug - · - Request Feature -

+

@@ -75,7 +67,7 @@ ## About The Project -[![Poddy][product-screenshot]](./src/assets/Screenshot.png) +[![Poddy][./src/assets/Screenshot.png]](./src/assets/Screenshot.png) Poddy is a react web app designed to be your best friend when it comes to podcasts. @@ -166,12 +158,6 @@ Don't forget to give the project a star! Thanks again! 4. Push to the Branch (`git push origin feature/AmazingFeature`) 5. Open a Pull Request -### Top contributors: - - - contrib.rocks image - -

(back to top)

From fb639f4351f2990a9cf0bd6fa86c4cee998d00e0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 21 Oct 2024 12:24:04 +0200 Subject: [PATCH 053/323] Fix: Center loading icon --- src/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index f1aca1464..24f526a2c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -365,7 +365,7 @@ function App() { if (loading || loadingGenres) return ( - + ); From aac32ab3c95fac5188a4f044ba4f1c4214b21fa6 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 21 Oct 2024 12:29:21 +0200 Subject: [PATCH 054/323] Fix: Remove un-used old search state --- src/App.jsx | 3 +-- src/pages/FavoritesPage.jsx | 10 +++++----- 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 24f526a2c..bc4d1477f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -36,7 +36,6 @@ function App() { return storedFavorites ? JSON.parse(storedFavorites) : []; }); const [showFavorites, setShowFavorites] = useState(false); - const [searchTerm, setSearchTerm] = useState(''); const [filterOption, setFilterOption] = useState(null); const [listenedEpisodes, setListenedEpisodes] = useState(() => { const storedListenedEpisodes = localStorage.getItem('listenedEpisodes'); @@ -395,7 +394,7 @@ function App() { toggleFavorite={toggleFavorite} onShowClick={handleShowClick} onBackToShows={handleBackToShows} - searchTerm={searchTerm} + searchQuery={searchQuery} sortOption={sortOption} filterOption={filterOption} listenedEpisodes={listenedEpisodes} diff --git a/src/pages/FavoritesPage.jsx b/src/pages/FavoritesPage.jsx index f144589a9..6432a80ae 100644 --- a/src/pages/FavoritesPage.jsx +++ b/src/pages/FavoritesPage.jsx @@ -4,13 +4,13 @@ import DeleteIcon from '@mui/icons-material/Delete'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "../utils/sortUtils"; import PropTypes from 'prop-types'; -const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onBackToShows, searchTerm, sortOption }) => { +const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onBackToShows, searchQuery, sortOption }) => { const [sortedFavorites, setSortedFavorites] = useState([]); useEffect(() => { let filtered = favoriteEpisodes.filter((fav) => - fav.showTitle.toLowerCase().includes(searchTerm.toLowerCase()) || - fav.episodeTitle.toLowerCase().includes(searchTerm.toLowerCase()) + fav.showTitle.toLowerCase().includes(searchQuery.toLowerCase()) || + fav.episodeTitle.toLowerCase().includes(searchQuery.toLowerCase()) ); let sorted; @@ -32,7 +32,7 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onBackToShows, search } setSortedFavorites(sorted); - }, [favoriteEpisodes, searchTerm, sortOption]); + }, [favoriteEpisodes, searchQuery, sortOption]); const handleRemoveFavorite = (episode) => { toggleFavorite(episode); @@ -106,7 +106,7 @@ FavoritesPage.propTypes = { ).isRequired, toggleFavorite: PropTypes.func.isRequired, onBackToShows: PropTypes.func.isRequired, - searchTerm: PropTypes.string.isRequired, + searchQuery: PropTypes.string.isRequired, sortOption: PropTypes.oneOf(['A-Z', 'Z-A', 'newest', 'oldest']).isRequired, }; From 379edad0af91a718abcd2c502ac9ec0e40271a3b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 21 Oct 2024 18:15:57 +0200 Subject: [PATCH 055/323] Fix: Comments for useFetch and for genres UseEffect --- src/App.jsx | 3 +++ src/hooks/useFetchData.js | 4 ++-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index bc4d1477f..d0e35bc23 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -158,7 +158,10 @@ function App() { window.removeEventListener('beforeunload', handleBeforeUnload); }; }, [isPlaying]); + + // Iterates over the previewData, grabbing genre id's, making a set of the unique ID's, and then fetches each genres information from the genre endpoint + // We then save an array of genre objects to state with setGenres - The dependency array is our previewData useEffect(() => { if (!previewData) return; diff --git a/src/hooks/useFetchData.js b/src/hooks/useFetchData.js index 718c005e7..54a918b13 100644 --- a/src/hooks/useFetchData.js +++ b/src/hooks/useFetchData.js @@ -12,7 +12,7 @@ const useFetchData = (url) => { const fetchData = async () => { setLoading(true); try { - const response = await axios.get(url); + const response = await axios.get(url); // Axios promise based infrastructure handles processing the get request setData(response.data); setError(null); } catch (err) { @@ -26,7 +26,7 @@ const useFetchData = (url) => { fetchData(); }, [url]); - return { data, loading, error }; + return { data, loading, error }; // Return resulting state values to be processed by component }; export default useFetchData; \ No newline at end of file From a70272167915c356cb70a2507c957da6cbdec5ef Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 21 Oct 2024 18:21:09 +0200 Subject: [PATCH 056/323] Fix: Comments for Sort options --- src/App.jsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index d0e35bc23..c3afcf6ca 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -17,10 +17,10 @@ const GENRE_URL = "https://podcast-api.netlify.app/genre/"; const SHOW_URL = "https://podcast-api.netlify.app/id/"; function App() { - const { data: previewData, loading, error } = useFetchData(PREVIEW_URL); - const [genres, setGenres] = useState([]); - const [loadingGenres, setLoadingGenres] = useState(true); - const [sortOption, setSortOption] = useState("A-Z"); + const { data: previewData, loading, error } = useFetchData(PREVIEW_URL); // Fetch the initial data for the show cards + const [genres, setGenres] = useState([]); // Iterate over unique genre ID's and generate array of fetched genre objects + const [loadingGenres, setLoadingGenres] = useState(true); // State to manage when we are fetching the genre objects and crated the above array + const [sortOption, setSortOption] = useState("A-Z"); // Manage the sort option defined by the user, defaults to A-Z const [selectedGenre, setSelectedGenre] = useState(null); const [sortedData, setSortedData] = useState(previewData); const [filteredData, setFilteredData] = useState(previewData); @@ -158,7 +158,7 @@ function App() { window.removeEventListener('beforeunload', handleBeforeUnload); }; }, [isPlaying]); - + // Iterates over the previewData, grabbing genre id's, making a set of the unique ID's, and then fetches each genres information from the genre endpoint // We then save an array of genre objects to state with setGenres - The dependency array is our previewData @@ -184,6 +184,7 @@ function App() { fetchGenres(); }, [previewData]); + // Process user defined sort option and array show cards as such useEffect(() => { if (previewData) { let sorted; @@ -226,6 +227,7 @@ function App() { setFilteredData(filteredData); }, [selectedGenre, sortedData, searchQuery]); + // Click handler to set new sorting option const handleSortChange = (option) => { setSortOption(option); }; From afe67d56aecf4aac7d0deb609c00f9dcc09b4f29 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 21 Oct 2024 18:28:01 +0200 Subject: [PATCH 057/323] Fix: Comments for genre state management --- src/App.jsx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index c3afcf6ca..bf161fc5b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -21,7 +21,7 @@ function App() { const [genres, setGenres] = useState([]); // Iterate over unique genre ID's and generate array of fetched genre objects const [loadingGenres, setLoadingGenres] = useState(true); // State to manage when we are fetching the genre objects and crated the above array const [sortOption, setSortOption] = useState("A-Z"); // Manage the sort option defined by the user, defaults to A-Z - const [selectedGenre, setSelectedGenre] = useState(null); + const [selectedGenre, setSelectedGenre] = useState(null); // Manages the user defined selected genre for filtering shows, defaults to null for all shows const [sortedData, setSortedData] = useState(previewData); const [filteredData, setFilteredData] = useState(previewData); const [searchQuery, setSearchQuery] = useState(''); @@ -208,6 +208,8 @@ function App() { } }, [sortOption, previewData]); + // Iterates over shows, filtering for shows with genre ID's that match the selected genres ID + // Then filters additionally for a text search query if there is one useEffect(() => { let filteredData = sortedData; @@ -232,6 +234,7 @@ function App() { setSortOption(option); }; + // Click handler to set the selected genre const handleFilterChange = (genre) => { setSelectedGenre(genre); }; From 7be3b41a5918b44adb0c73f119ff32246508160e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 22 Oct 2024 00:18:41 +0200 Subject: [PATCH 058/323] Fix: State comments for clarity --- src/App.jsx | 55 +++++++++++++++-------------------------------------- 1 file changed, 15 insertions(+), 40 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index bf161fc5b..a2a125d1f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -22,31 +22,30 @@ function App() { const [loadingGenres, setLoadingGenres] = useState(true); // State to manage when we are fetching the genre objects and crated the above array const [sortOption, setSortOption] = useState("A-Z"); // Manage the sort option defined by the user, defaults to A-Z const [selectedGenre, setSelectedGenre] = useState(null); // Manages the user defined selected genre for filtering shows, defaults to null for all shows - const [sortedData, setSortedData] = useState(previewData); - const [filteredData, setFilteredData] = useState(previewData); - const [searchQuery, setSearchQuery] = useState(''); - const [modalOpen, setModalOpen] = useState(false); - const [detailedShow, setDetailedShow] = useState(null); - const [currentEpisode, setCurrentEpisode] = useState(null); - const [isPlaying, setIsPlaying] = useState(false); - const [loadingShow, setLoadingShow] = useState(false); - const [playingShow, setPlayingShow] = useState(null); - const [favoriteEpisodes, setFavoriteEpisodes] = useState(() => { + const [sortedData, setSortedData] = useState(previewData); // State array of sorted previewData + const [filteredData, setFilteredData] = useState(previewData); // Filtered version of sortedData array + const [searchQuery, setSearchQuery] = useState(''); // Search field text input saved to state + const [modalOpen, setModalOpen] = useState(false); // State to manage the PodcastDetails Modal being open or closed based on boolean + const [detailedShow, setDetailedShow] = useState(null); // When a show card is clicked, a get request is done and the shows detailed data is stored here + const [currentEpisode, setCurrentEpisode] = useState(null); // State used by skip handlers to store current episodes data + const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes + const [loadingShow, setLoadingShow] = useState(false); // Handle loading state when a show is clicked on + const [playingShow, setPlayingShow] = useState(null); // Sets the playing show equal to the detail show from the PodcastDetails Modal + const [favoriteEpisodes, setFavoriteEpisodes] = useState(() => { // Sets favorite episodes equal to the episodes in state, or an empty array if no episodes exist const storedFavorites = localStorage.getItem('favoriteEpisodes'); return storedFavorites ? JSON.parse(storedFavorites) : []; }); - const [showFavorites, setShowFavorites] = useState(false); - const [filterOption, setFilterOption] = useState(null); - const [listenedEpisodes, setListenedEpisodes] = useState(() => { + const [showFavorites, setShowFavorites] = useState(false); // State which triggers whether or not we open the favorites view + const [listenedEpisodes, setListenedEpisodes] = useState(() => { // Checks for listened episodes in local storage and sets itself equal to that, or empty array const storedListenedEpisodes = localStorage.getItem('listenedEpisodes'); return storedListenedEpisodes ? JSON.parse(storedListenedEpisodes) : []; }); - const [isResetDialogOpen, setIsResetDialogOpen] = useState(false); - const [episodeTimestamps, setEpisodeTimestamps] = useState(() => { + const [isResetDialogOpen, setIsResetDialogOpen] = useState(false); // State to control whether listening reset dialog is open or closed + const [episodeTimestamps, setEpisodeTimestamps] = useState(() => { // State which manages tracking of timestamps of episodes played const storedTimestamps = localStorage.getItem('episodeTimestamps'); return storedTimestamps ? JSON.parse(storedTimestamps) : {}; }); - const [fuse, setFuse] = useState(null); + const [fuse, setFuse] = useState(null); useEffect(() => { if (previewData && previewData.length > 0) { @@ -298,16 +297,10 @@ function App() { }; const handleSkipNext = () => { - console.log("HANDLE SKIP NEXT ENGAGED"); - console.log("CURRENT EPISODE:", currentEpisode); - if (detailedShow && currentEpisode) { const allEpisodes = getAllEpisodes(detailedShow); let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - console.log('Current Index:', currentIndex); - console.log('All Episodes:', allEpisodes); - // If currentIndex is still -1, assume we're at the first episode if (currentIndex === -1) { currentIndex = 0; @@ -317,26 +310,15 @@ function App() { const nextEpisode = allEpisodes[currentIndex + 1]; setCurrentEpisode(nextEpisode); setIsPlaying(true); - console.log("Loading next episode:", nextEpisode); - } else { - console.log("Reached the end of all episodes."); } - } else { - console.log("No detailed show or current episode found."); } }; const handleSkipPrevious = () => { - console.log("HANDLE SKIP PREVIOUS ENGAGED"); - console.log("CURRENT EPISODE:", currentEpisode); - if (detailedShow && currentEpisode) { const allEpisodes = getAllEpisodes(detailedShow); let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - console.log('Current Index:', currentIndex); - console.log('All Episodes:', allEpisodes); - // If currentIndex is still -1, assume we're at the first episode if (currentIndex === -1) { currentIndex = 0; @@ -346,12 +328,7 @@ function App() { const previousEpisode = allEpisodes[currentIndex - 1]; setCurrentEpisode(previousEpisode); setIsPlaying(true); - console.log("Loading previous episode:", previousEpisode); - } else { - console.log("Already at the first episode."); } - } else { - console.log("No detailed show or current episode found."); } }; @@ -363,7 +340,6 @@ function App() { setCurrentEpisode(episodeWithSeason); setPlayingShow(detailedShow); setIsPlaying(true); - // Remove the immediate marking as listened here }; const handleEpisodeComplete = (episodeData) => { @@ -404,7 +380,6 @@ function App() { onBackToShows={handleBackToShows} searchQuery={searchQuery} sortOption={sortOption} - filterOption={filterOption} listenedEpisodes={listenedEpisodes} /> )} From 2912a0905ef253dbdab8dfe52ae6215c50aee488 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Mon, 2 Dec 2024 11:19:06 +0200 Subject: [PATCH 059/323] Feat: Add Redux store to main.jsx --- package-lock.json | 110 +++++++++++++++++++++++++++++++++++++++++++--- package.json | 5 ++- src/app/store.js | 5 +++ src/main.jsx | 7 ++- 4 files changed, 118 insertions(+), 9 deletions(-) create mode 100644 src/app/store.js diff --git a/package-lock.json b/package-lock.json index 9eab020f0..d495c514a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -13,11 +13,14 @@ "@fontsource/roboto": "^5.1.0", "@mui/icons-material": "^6.1.3", "@mui/material": "^6.1.3", + "@reduxjs/toolkit": "^2.3.0", "axios": "^1.7.7", "fuse.js": "^7.0.0", "lodash": "^4.17.21", "react": "^18.3.1", - "react-dom": "^18.3.1" + "react-dom": "^18.3.1", + "react-redux": "^9.1.2", + "redux": "^5.0.1" }, "devDependencies": { "@eslint/js": "^9.11.1", @@ -1036,9 +1039,9 @@ } }, "node_modules/@eslint/plugin-kit": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.0.tgz", - "integrity": "sha512-vH9PiIMMwvhCx31Af3HiGzsVNULDbyVkHXwlemn/B0TFj/00ho3y55efXrUZTfQipxoHC5u4xq6zblww1zm1Ig==", + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.2.3.tgz", + "integrity": "sha512-2b/g5hRmpbb1o4GnTZax9N9m0FXzz9OV42ZzI4rDDMDuHUqigAiQCEWChBWCY4ztAGVRjoWT19v0yMmc5/L5kA==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -1406,6 +1409,30 @@ "url": "https://opencollective.com/popperjs" } }, + "node_modules/@reduxjs/toolkit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.3.0.tgz", + "integrity": "sha512-WC7Yd6cNGfHx8zf+iu+Q1UPTfEcXhQ+ATi7CV1hlrSAaQBdlPzg7Ww/wJHNQem7qG9rxmWoFCDCPubSvFObGzA==", + "license": "MIT", + "dependencies": { + "immer": "^10.0.3", + "redux": "^5.0.1", + "redux-thunk": "^3.1.0", + "reselect": "^5.1.0" + }, + "peerDependencies": { + "react": "^16.9.0 || ^17.0.0 || ^18", + "react-redux": "^7.2.1 || ^8.1.3 || ^9.0.0" + }, + "peerDependenciesMeta": { + "react": { + "optional": true + }, + "react-redux": { + "optional": true + } + } + }, "node_modules/@rollup/rollup-android-arm-eabi": { "version": "4.24.0", "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.24.0.tgz", @@ -1730,6 +1757,12 @@ "@types/react": "*" } }, + "node_modules/@types/use-sync-external-store": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/@types/use-sync-external-store/-/use-sync-external-store-0.0.3.tgz", + "integrity": "sha512-EwmlvuaxPNej9+T4v5AuBPJa2x2UOJVdjCtDHgcDqitUeOtjnJKJ+apYjVcAoBEMjKW1VVFGZLUb5+qqa09XFA==", + "license": "MIT" + }, "node_modules/@vitejs/plugin-react": { "version": "4.3.2", "resolved": "https://registry.npmjs.org/@vitejs/plugin-react/-/plugin-react-4.3.2.tgz", @@ -2193,9 +2226,9 @@ } }, "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dev": true, "license": "MIT", "dependencies": { @@ -3292,6 +3325,16 @@ "node": ">= 4" } }, + "node_modules/immer": { + "version": "10.1.1", + "resolved": "https://registry.npmjs.org/immer/-/immer-10.1.1.tgz", + "integrity": "sha512-s2MPrmjovJcoMaHtx6K11Ra7oD05NT97w1IC5zpMkT6Atjr7H8LjaDd81iIxUYpMKSRRNMJE703M1Fhr/TctHw==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/immer" + } + }, "node_modules/import-fresh": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", @@ -4296,6 +4339,29 @@ "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", "license": "MIT" }, + "node_modules/react-redux": { + "version": "9.1.2", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-9.1.2.tgz", + "integrity": "sha512-0OA4dhM1W48l3uzmv6B7TXPCGmokUU4p1M44DGN2/D9a1FjVPukVjER1PcPX97jIg6aUeLq1XJo1IpfbgULn0w==", + "license": "MIT", + "dependencies": { + "@types/use-sync-external-store": "^0.0.3", + "use-sync-external-store": "^1.0.0" + }, + "peerDependencies": { + "@types/react": "^18.2.25", + "react": "^18.0", + "redux": "^5.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "redux": { + "optional": true + } + } + }, "node_modules/react-refresh": { "version": "0.14.2", "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.14.2.tgz", @@ -4322,6 +4388,21 @@ "react-dom": ">=16.6.0" } }, + "node_modules/redux": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/redux/-/redux-5.0.1.tgz", + "integrity": "sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==", + "license": "MIT" + }, + "node_modules/redux-thunk": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/redux-thunk/-/redux-thunk-3.1.0.tgz", + "integrity": "sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==", + "license": "MIT", + "peerDependencies": { + "redux": "^5.0.0" + } + }, "node_modules/reflect.getprototypeof": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", @@ -4369,6 +4450,12 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/reselect": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/reselect/-/reselect-5.1.1.tgz", + "integrity": "sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==", + "license": "MIT" + }, "node_modules/resolve": { "version": "2.0.0-next.5", "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", @@ -4879,6 +4966,15 @@ "punycode": "^2.1.0" } }, + "node_modules/use-sync-external-store": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.2.tgz", + "integrity": "sha512-PElTlVMwpblvbNqQ82d2n6RjStvdSoNe9FG28kNfz3WiXilJm4DdNkEzRhCZuIDwY8U08WVihhGR5iRqAwfDiw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/vite": { "version": "5.4.8", "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.8.tgz", diff --git a/package.json b/package.json index 90811c697..319df9f43 100644 --- a/package.json +++ b/package.json @@ -15,11 +15,14 @@ "@fontsource/roboto": "^5.1.0", "@mui/icons-material": "^6.1.3", "@mui/material": "^6.1.3", + "@reduxjs/toolkit": "^2.3.0", "axios": "^1.7.7", "fuse.js": "^7.0.0", "lodash": "^4.17.21", "react": "^18.3.1", - "react-dom": "^18.3.1" + "react-dom": "^18.3.1", + "react-redux": "^9.1.2", + "redux": "^5.0.1" }, "devDependencies": { "@eslint/js": "^9.11.1", diff --git a/src/app/store.js b/src/app/store.js new file mode 100644 index 000000000..a1f685097 --- /dev/null +++ b/src/app/store.js @@ -0,0 +1,5 @@ +import { configureStore } from '@reduxjs/toolkit' + +export default configureStore({ + reducer: {}, +}) \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index 551c5e1b6..380c3544a 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -9,6 +9,9 @@ import { ThemeProvider } from '@mui/material/styles'; import CssBaseline from '@mui/material/CssBaseline'; import { lightTheme, darkTheme } from './theme'; import useMediaQuery from '@mui/material/useMediaQuery'; +import store from './app/store' +import { Provider } from 'react-redux' + // Define Root function component such that inside we check if the user prefers dark mode, and use a ternary to return the resulting theme function Root() { @@ -18,7 +21,9 @@ function Root() { return ( - + + + ); } From 3d374aa5fbce224b48c33e5a04c6a601e2684d60 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 4 Dec 2024 14:27:57 +0200 Subject: [PATCH 060/323] Add fetchPodcasts file with RTK Query fetch management --- src/app/store.js | 5 ---- src/main.jsx | 2 +- src/services/fetchPodcasts.ts | 43 +++++++++++++++++++++++++++++++++++ src/store/store.js | 15 ++++++++++++ 4 files changed, 59 insertions(+), 6 deletions(-) delete mode 100644 src/app/store.js create mode 100644 src/services/fetchPodcasts.ts create mode 100644 src/store/store.js diff --git a/src/app/store.js b/src/app/store.js deleted file mode 100644 index a1f685097..000000000 --- a/src/app/store.js +++ /dev/null @@ -1,5 +0,0 @@ -import { configureStore } from '@reduxjs/toolkit' - -export default configureStore({ - reducer: {}, -}) \ No newline at end of file diff --git a/src/main.jsx b/src/main.jsx index 380c3544a..dbeb7b058 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -9,7 +9,7 @@ import { ThemeProvider } from '@mui/material/styles'; import CssBaseline from '@mui/material/CssBaseline'; import { lightTheme, darkTheme } from './theme'; import useMediaQuery from '@mui/material/useMediaQuery'; -import store from './app/store' +import store from './store/store.js' import { Provider } from 'react-redux' diff --git a/src/services/fetchPodcasts.ts b/src/services/fetchPodcasts.ts new file mode 100644 index 000000000..cb0f84f07 --- /dev/null +++ b/src/services/fetchPodcasts.ts @@ -0,0 +1,43 @@ +import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' + +interface Podcast { + id: string; + title: string; + description: string; + seasons: number; + image: string; + genres: number[]; + updated: string; +} + +interface Genre { + id: number, + title: string; + description: string; + shows: string[]; +} + +// Define a service using a base URL and expected endpoints +export const podcastApi = createApi({ + reducerPath: 'podcastApi', + baseQuery: fetchBaseQuery({ baseUrl: 'https://podcast-api.netlify.app' }), + endpoints: (builder) => ({ + + getAllPodcasts: builder.query({ + query: () => `podcasts`, + }), + + getPodcastById: builder.query({ + query: (podcastId) => `podcasts/id/${podcastId}` + }), + + getGenreByGenreId: builder.query({ + query: (genreId) => `podcasts/genre/${genreId}` + }) + + }), +}) + +// Export hooks for usage in functional components, which are +// auto-generated based on the defined endpoints +export const { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery } = podcastApi \ No newline at end of file diff --git a/src/store/store.js b/src/store/store.js new file mode 100644 index 000000000..74474905f --- /dev/null +++ b/src/store/store.js @@ -0,0 +1,15 @@ +import { configureStore } from '@reduxjs/toolkit' +import { setupListeners } from '@reduxjs/toolkit/query' +import { podcastApi } from '../services/fetchPodcasts' + +export const store = configureStore({ + reducer: { + [podcastApi.reducerPath]: podcastApi.reducer + }, + + middleware: (getDefaultMiddleware) => { + getDefaultMiddleware().concat(podcastApi.middleware) + } +}) + +setupListeners(store.dispatch) \ No newline at end of file From c92d17d468d3485703b733709bcc4d197aa4dcef Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 4 Dec 2024 14:48:05 +0200 Subject: [PATCH 061/323] Feat: Use RTK Query to fetch podcast data, rename previewData to allPodcastsData --- src/App.jsx | 37 ++++++++++++++++++----------------- src/main.jsx | 2 +- src/services/fetchPodcasts.ts | 8 ++++---- src/store/store.js | 4 ++-- 4 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index a2a125d1f..8eb334435 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -11,19 +11,20 @@ import FavoritesPage from './pages/FavoritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { initializeFuzzySearch, performFuzzySearch } from './utils/fuzzySearch'; +import { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery } from './services/fetchPodcasts' const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; const SHOW_URL = "https://podcast-api.netlify.app/id/"; function App() { - const { data: previewData, loading, error } = useFetchData(PREVIEW_URL); // Fetch the initial data for the show cards + const { data: allPodcastsData, error, loading } = useGetAllPodcastsQuery(); // Fetch the initial data for the show cards const [genres, setGenres] = useState([]); // Iterate over unique genre ID's and generate array of fetched genre objects const [loadingGenres, setLoadingGenres] = useState(true); // State to manage when we are fetching the genre objects and crated the above array const [sortOption, setSortOption] = useState("A-Z"); // Manage the sort option defined by the user, defaults to A-Z const [selectedGenre, setSelectedGenre] = useState(null); // Manages the user defined selected genre for filtering shows, defaults to null for all shows - const [sortedData, setSortedData] = useState(previewData); // State array of sorted previewData - const [filteredData, setFilteredData] = useState(previewData); // Filtered version of sortedData array + const [sortedData, setSortedData] = useState(allPodcastsData); // State array of sorted allPodcastsData + const [filteredData, setFilteredData] = useState(allPodcastsData); // Filtered version of sortedData array const [searchQuery, setSearchQuery] = useState(''); // Search field text input saved to state const [modalOpen, setModalOpen] = useState(false); // State to manage the PodcastDetails Modal being open or closed based on boolean const [detailedShow, setDetailedShow] = useState(null); // When a show card is clicked, a get request is done and the shows detailed data is stored here @@ -48,10 +49,10 @@ function App() { const [fuse, setFuse] = useState(null); useEffect(() => { - if (previewData && previewData.length > 0) { - setFuse(initializeFuzzySearch(previewData)); + if (allPodcastsData && allPodcastsData.length > 0) { + setFuse(initializeFuzzySearch(allPodcastsData)); } - }, [previewData]); + }, [allPodcastsData]); const updateEpisodeTimestamp = useCallback((showId, episodeTitle, timestamp) => { setEpisodeTimestamps(prev => { @@ -159,14 +160,14 @@ function App() { }, [isPlaying]); - // Iterates over the previewData, grabbing genre id's, making a set of the unique ID's, and then fetches each genres information from the genre endpoint - // We then save an array of genre objects to state with setGenres - The dependency array is our previewData + // Iterates over the allPodcastsData, grabbing genre id's, making a set of the unique ID's, and then fetches each genres information from the genre endpoint + // We then save an array of genre objects to state with setGenres - The dependency array is our allPodcastsData useEffect(() => { - if (!previewData) return; + if (!allPodcastsData) return; const fetchGenres = async () => { try { - const genreIds = new Set(previewData.flatMap(show => show.genres)); + const genreIds = new Set(allPodcastsData.flatMap(show => show.genres)); const genrePromises = Array.from(genreIds).map(async (id) => { const response = await fetch(`${GENRE_URL}${id}`); return await response.json(); @@ -181,31 +182,31 @@ function App() { }; fetchGenres(); - }, [previewData]); + }, [allPodcastsData]); // Process user defined sort option and array show cards as such useEffect(() => { - if (previewData) { + if (allPodcastsData) { let sorted; switch (sortOption) { case 'A-Z': - sorted = sortByTitleAscending(previewData); + sorted = sortByTitleAscending(allPodcastsData); break; case 'Z-A': - sorted = sortByTitleDescending(previewData); + sorted = sortByTitleDescending(allPodcastsData); break; case 'newest': - sorted = sortByDateDescending(previewData); + sorted = sortByDateDescending(allPodcastsData); break; case 'oldest': - sorted = sortByDateAscending(previewData); + sorted = sortByDateAscending(allPodcastsData); break; default: - sorted = previewData; + sorted = allPodcastsData; } setSortedData(sorted); } - }, [sortOption, previewData]); + }, [sortOption, allPodcastsData]); // Iterates over shows, filtering for shows with genre ID's that match the selected genres ID // Then filters additionally for a text search query if there is one diff --git a/src/main.jsx b/src/main.jsx index dbeb7b058..3fda9883e 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -9,7 +9,7 @@ import { ThemeProvider } from '@mui/material/styles'; import CssBaseline from '@mui/material/CssBaseline'; import { lightTheme, darkTheme } from './theme'; import useMediaQuery from '@mui/material/useMediaQuery'; -import store from './store/store.js' +import { store } from './store/store.js' import { Provider } from 'react-redux' diff --git a/src/services/fetchPodcasts.ts b/src/services/fetchPodcasts.ts index cb0f84f07..a9eeeac4d 100644 --- a/src/services/fetchPodcasts.ts +++ b/src/services/fetchPodcasts.ts @@ -20,19 +20,19 @@ interface Genre { // Define a service using a base URL and expected endpoints export const podcastApi = createApi({ reducerPath: 'podcastApi', - baseQuery: fetchBaseQuery({ baseUrl: 'https://podcast-api.netlify.app' }), + baseQuery: fetchBaseQuery({ baseUrl: 'https://podcast-api.netlify.app/' }), endpoints: (builder) => ({ getAllPodcasts: builder.query({ - query: () => `podcasts`, + query: () => ``, }), getPodcastById: builder.query({ - query: (podcastId) => `podcasts/id/${podcastId}` + query: (podcastId) => `id/${podcastId}` }), getGenreByGenreId: builder.query({ - query: (genreId) => `podcasts/genre/${genreId}` + query: (genreId) => `genre/${genreId}` }) }), diff --git a/src/store/store.js b/src/store/store.js index 74474905f..62cf7ae6d 100644 --- a/src/store/store.js +++ b/src/store/store.js @@ -7,9 +7,9 @@ export const store = configureStore({ [podcastApi.reducerPath]: podcastApi.reducer }, - middleware: (getDefaultMiddleware) => { + middleware: (getDefaultMiddleware) => getDefaultMiddleware().concat(podcastApi.middleware) - } + , }) setupListeners(store.dispatch) \ No newline at end of file From 8591da94d7c75e5ec5343b8b456a6f64f34eaf87 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 4 Dec 2024 14:49:04 +0200 Subject: [PATCH 062/323] Fix: Remove unused custom useFetch hook --- src/hooks/useFetchData.js | 32 -------------------------------- 1 file changed, 32 deletions(-) delete mode 100644 src/hooks/useFetchData.js diff --git a/src/hooks/useFetchData.js b/src/hooks/useFetchData.js deleted file mode 100644 index 54a918b13..000000000 --- a/src/hooks/useFetchData.js +++ /dev/null @@ -1,32 +0,0 @@ -import { useState, useEffect } from 'react'; -import axios from 'axios'; - -const useFetchData = (url) => { - const [data, setData] = useState(null); - const [loading, setLoading] = useState(true); - const [error, setError] = useState(null); - - useEffect(() => { - if (!url) return; - - const fetchData = async () => { - setLoading(true); - try { - const response = await axios.get(url); // Axios promise based infrastructure handles processing the get request - setData(response.data); - setError(null); - } catch (err) { - console.log(err) - setError(true); - } finally { - setLoading(false); - } - }; - - fetchData(); - }, [url]); - - return { data, loading, error }; // Return resulting state values to be processed by component -}; - -export default useFetchData; \ No newline at end of file From 5881924c0c188f4c744ae9378368c872f2bb34b7 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 4 Dec 2024 14:49:29 +0200 Subject: [PATCH 063/323] Fix: Remove unused usefetch custom hook import --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 8eb334435..398b2cff8 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,4 +1,3 @@ -import useFetchData from './hooks/useFetchData'; import LoadingSpinner from "./pages/LoadingSpinner"; import ErrorPage from './pages/ErrorPage'; import SearchAppBar from './components/SearchAppBar'; From bbc687684c88263918ddf5ff302f14e36d774128 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 4 Dec 2024 14:51:45 +0200 Subject: [PATCH 064/323] Fix: Remove old url endpoint --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 398b2cff8..05aa821e6 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -12,7 +12,6 @@ import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { initializeFuzzySearch, performFuzzySearch } from './utils/fuzzySearch'; import { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery } from './services/fetchPodcasts' -const PREVIEW_URL = "https://podcast-api.netlify.app"; const GENRE_URL = "https://podcast-api.netlify.app/genre/"; const SHOW_URL = "https://podcast-api.netlify.app/id/"; From 19194b27315b1ddc1475a3eb3d9d8c2dc69720b4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 4 Dec 2024 14:53:56 +0200 Subject: [PATCH 065/323] Fix: changing loading to isLoading for more description --- src/App.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 05aa821e6..9ab091eb0 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -16,7 +16,7 @@ const GENRE_URL = "https://podcast-api.netlify.app/genre/"; const SHOW_URL = "https://podcast-api.netlify.app/id/"; function App() { - const { data: allPodcastsData, error, loading } = useGetAllPodcastsQuery(); // Fetch the initial data for the show cards + const { data: allPodcastsData, error, isLoading } = useGetAllPodcastsQuery(); // Fetch the initial data for the show cards const [genres, setGenres] = useState([]); // Iterate over unique genre ID's and generate array of fetched genre objects const [loadingGenres, setLoadingGenres] = useState(true); // State to manage when we are fetching the genre objects and crated the above array const [sortOption, setSortOption] = useState("A-Z"); // Manage the sort option defined by the user, defaults to A-Z @@ -346,7 +346,7 @@ function App() { }; - if (loading || loadingGenres) return ( + if (isLoading || loadingGenres) return ( From b211357af103299d09ed51a639418361ed7b5cc4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 20 Dec 2024 17:46:38 +0200 Subject: [PATCH 066/323] Feat: Fetch and transform podcast data with genres using RTK Query --- package-lock.json | 16 ++++++++- package.json | 3 +- src/App.jsx | 9 +++-- src/features/podcastSlice.js | 13 ++++++++ src/services/fetchPodcasts.ts | 62 ++++++++++++++++++++++++++++++++++- 5 files changed, 98 insertions(+), 5 deletions(-) create mode 100644 src/features/podcastSlice.js diff --git a/package-lock.json b/package-lock.json index d495c514a..1cdd89ca2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,7 +20,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-redux": "^9.1.2", - "redux": "^5.0.1" + "redux": "^5.0.1", + "typescript": "^5.7.2" }, "devDependencies": { "@eslint/js": "^9.11.1", @@ -4909,6 +4910,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/typescript": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.7.2.tgz", + "integrity": "sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==", + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, "node_modules/unbox-primitive": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", diff --git a/package.json b/package.json index 319df9f43..541c542a5 100644 --- a/package.json +++ b/package.json @@ -22,7 +22,8 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-redux": "^9.1.2", - "redux": "^5.0.1" + "redux": "^5.0.1", + "typescript": "^5.7.2" }, "devDependencies": { "@eslint/js": "^9.11.1", diff --git a/src/App.jsx b/src/App.jsx index 9ab091eb0..532506be0 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -10,12 +10,16 @@ import FavoritesPage from './pages/FavoritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { initializeFuzzySearch, performFuzzySearch } from './utils/fuzzySearch'; -import { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery } from './services/fetchPodcasts' +import { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery, useGetAllPodcastsEnrichedQuery } from './services/fetchPodcasts' + const GENRE_URL = "https://podcast-api.netlify.app/genre/"; const SHOW_URL = "https://podcast-api.netlify.app/id/"; function App() { + const { data: podcastDataPrime, isSuccess } = useGetAllPodcastsEnrichedQuery() + console.log(podcastDataPrime) + const { data: allPodcastsData, error, isLoading } = useGetAllPodcastsQuery(); // Fetch the initial data for the show cards const [genres, setGenres] = useState([]); // Iterate over unique genre ID's and generate array of fetched genre objects const [loadingGenres, setLoadingGenres] = useState(true); // State to manage when we are fetching the genre objects and crated the above array @@ -157,7 +161,8 @@ function App() { }; }, [isPlaying]); - + // TODO + // CONVERT THIS USE EFFECT TO REDUX // Iterates over the allPodcastsData, grabbing genre id's, making a set of the unique ID's, and then fetches each genres information from the genre endpoint // We then save an array of genre objects to state with setGenres - The dependency array is our allPodcastsData useEffect(() => { diff --git a/src/features/podcastSlice.js b/src/features/podcastSlice.js new file mode 100644 index 000000000..7f777f760 --- /dev/null +++ b/src/features/podcastSlice.js @@ -0,0 +1,13 @@ +import { createSlice } from "@reduxjs/toolkit"; + +const initialState = { + podcasts: [], +} + +const podcastSlice = createSlice({ + name: "podcasts", + initialState, + reducers: { + + } +}) \ No newline at end of file diff --git a/src/services/fetchPodcasts.ts b/src/services/fetchPodcasts.ts index a9eeeac4d..ea34ae838 100644 --- a/src/services/fetchPodcasts.ts +++ b/src/services/fetchPodcasts.ts @@ -17,12 +17,67 @@ interface Genre { shows: string[]; } +interface EnrichedPodcast extends Omit { + genres: Genre[]; +} + +interface TransformedResponse { + enrichedPodcasts: EnrichedPodcast[]; + allGenres: Genre[]; +} + // Define a service using a base URL and expected endpoints export const podcastApi = createApi({ reducerPath: 'podcastApi', baseQuery: fetchBaseQuery({ baseUrl: 'https://podcast-api.netlify.app/' }), endpoints: (builder) => ({ + getAllPodcastsEnriched: builder.query({ + queryFn: async (_, api) => { + const baseQuery = fetchBaseQuery({ baseUrl: 'https://podcast-api.netlify.app/' }); + try { + // Fetch all podcasts + const podcastsResult = await baseQuery('', api, {}); + if (podcastsResult.error) { + return { error: podcastsResult.error }; + } + const podcasts = podcastsResult.data as Podcast[]; + + // Get unique genre IDs + const genreIds = [...new Set(podcasts.flatMap(podcast => podcast.genres))]; + + // Fetch all genres + const genrePromises = genreIds.map(genreId => + baseQuery(`genre/${genreId}`, api, {}) + ); + const genreResults = await Promise.all(genrePromises); + + // Handle genre fetch errors + const genres = genreResults.reduce((acc, result, index) => { + if (result.data) { + acc[genreIds[index]] = result.data as Genre; + } + return acc; + }, {} as Record); + + // Transform podcasts to include full genre info + const enrichedPodcasts = podcasts.map(podcast => ({ + ...podcast, + genres: podcast.genres.map(genreId => genres[genreId]) + })); + + return { + data: { + enrichedPodcasts, + allGenres: Object.values(genres) + } + }; + } catch (error) { + return { error: { status: 500, data: error } }; + } + } + }), + getAllPodcasts: builder.query({ query: () => ``, }), @@ -40,4 +95,9 @@ export const podcastApi = createApi({ // Export hooks for usage in functional components, which are // auto-generated based on the defined endpoints -export const { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery } = podcastApi \ No newline at end of file +export const { + useGetAllPodcastsEnrichedQuery, + useGetAllPodcastsQuery, + useGetPodcastByIdQuery, + useGetGenreByGenreIdQuery +} = podcastApi; \ No newline at end of file From b5ae3d032e50420c2fc63e58f1a6a70f54770151 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 20 Dec 2024 20:09:27 +0200 Subject: [PATCH 067/323] Feat: ShowCard component using RTK Query fetched data --- src/App.jsx | 7 +--- src/components/ShowCard.jsx | 15 ++----- src/features/podcastSlice.js | 13 ------ src/pages/Content.jsx | 27 +++++++----- .../{fetchPodcasts.ts => podcastApi.ts} | 4 +- src/state/podcastSlice.js | 42 +++++++++++++++++++ src/store/store.js | 4 +- 7 files changed, 69 insertions(+), 43 deletions(-) delete mode 100644 src/features/podcastSlice.js rename src/services/{fetchPodcasts.ts => podcastApi.ts} (97%) create mode 100644 src/state/podcastSlice.js diff --git a/src/App.jsx b/src/App.jsx index 532506be0..84f842cb8 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -10,15 +10,14 @@ import FavoritesPage from './pages/FavoritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { initializeFuzzySearch, performFuzzySearch } from './utils/fuzzySearch'; -import { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery, useGetAllPodcastsEnrichedQuery } from './services/fetchPodcasts' +import { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery, useGetAllPodcastsEnrichedQuery } from './services/podcastApi' const GENRE_URL = "https://podcast-api.netlify.app/genre/"; const SHOW_URL = "https://podcast-api.netlify.app/id/"; function App() { - const { data: podcastDataPrime, isSuccess } = useGetAllPodcastsEnrichedQuery() - console.log(podcastDataPrime) + const { data, isError } = useGetAllPodcastsEnrichedQuery() const { data: allPodcastsData, error, isLoading } = useGetAllPodcastsQuery(); // Fetch the initial data for the show cards const [genres, setGenres] = useState([]); // Iterate over unique genre ID's and generate array of fetched genre objects @@ -370,8 +369,6 @@ function App() { /> {!showFavorites && filteredData && ( diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index 8fcf0b370..844e8b604 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -1,14 +1,7 @@ import { Paper, CardMedia, Typography, Box, Chip} from '@mui/material'; import PropTypes from "prop-types"; -export default function ShowCard({ title, description, seasons, image, genresArray, showsGenre, updated, onClick }) { - - const getGenreTitles = () => { - return showsGenre.map(genreId => { - const genre = genresArray.find(g => g.id === genreId); - return genre ? genre.title : 'Unknown Genre'; - }); - }; +export default function ShowCard({ title, description, seasons, image, genres, updated, onClick }) { const seasonText = () => { if (seasons > 1) { @@ -67,8 +60,8 @@ export default function ShowCard({ title, description, seasons, image, genresArr flexWrap: "wrap", // Allows chips to wrap if needed }} > - {getGenreTitles().map((genre, index) => ( - + {genres.map((genre) => ( + ))} state.podcasts.enrichedPodcasts) + -function Content({ showData, genres, onShowClick }) { return ( - {showData.map((showPreview) => ( - + {podcasts.map((podcast) => ( + onShowClick(showPreview)} + title={podcast.title} + description={podcast.description} + seasons={podcast.seasons} + image={podcast.image} + genres={podcast.genres} + showsGenre={podcast.genres} + updated={podcast.updated} + onClick={() => onShowClick(podcast)} /> ))} diff --git a/src/services/fetchPodcasts.ts b/src/services/podcastApi.ts similarity index 97% rename from src/services/fetchPodcasts.ts rename to src/services/podcastApi.ts index ea34ae838..bbf74879a 100644 --- a/src/services/fetchPodcasts.ts +++ b/src/services/podcastApi.ts @@ -23,7 +23,7 @@ interface EnrichedPodcast extends Omit { interface TransformedResponse { enrichedPodcasts: EnrichedPodcast[]; - allGenres: Genre[]; + genres: Genre[]; } // Define a service using a base URL and expected endpoints @@ -69,7 +69,7 @@ export const podcastApi = createApi({ return { data: { enrichedPodcasts, - allGenres: Object.values(genres) + genres: Object.values(genres) } }; } catch (error) { diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js new file mode 100644 index 000000000..76abc51d9 --- /dev/null +++ b/src/state/podcastSlice.js @@ -0,0 +1,42 @@ +import { createSlice } from "@reduxjs/toolkit"; +import { podcastApi } from "../services/podcastApi"; + +const initialState = { + genres: [], + enrichedPodcasts: [], + loading: false, + error: null, +} + +const podcastSlice = createSlice({ + name: 'podcasts', + initialState, + reducers: {}, + extraReducers: (builder) => { + builder + .addMatcher( + podcastApi.endpoints.getAllPodcastsEnriched.matchPending, + (state) => { + state.loading = true; + state.error = null; + } + ) + .addMatcher( + podcastApi.endpoints.getAllPodcastsEnriched.matchFulfilled, + (state, action) => { + state.loading = false; + state.enrichedPodcasts = action.payload.enrichedPodcasts; + state.genres = action.payload.genres + } + ) + .addMatcher( + podcastApi.endpoints.getAllPodcastsEnriched.matchRejected, + (state, action) => { + state.loading = false; + state.error = action.error; + } + ) + } +}) + +export default podcastSlice.reducer; \ No newline at end of file diff --git a/src/store/store.js b/src/store/store.js index 62cf7ae6d..6cd4948d8 100644 --- a/src/store/store.js +++ b/src/store/store.js @@ -1,9 +1,11 @@ import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query' -import { podcastApi } from '../services/fetchPodcasts' +import { podcastApi } from '../services/podcastApi' +import podcastReducer from '../state/podcastSlice' export const store = configureStore({ reducer: { + podcasts: podcastReducer, [podcastApi.reducerPath]: podcastApi.reducer }, From f4aa900b3c30f79443b920932d6b395061c54486 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 20 Dec 2024 20:11:03 +0200 Subject: [PATCH 068/323] Fix: Remove unwanted spacing in content component --- src/pages/Content.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 759db872a..923aea000 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -7,7 +7,6 @@ import { useSelector } from 'react-redux' function Content({ onShowClick }) { const podcasts = useSelector((state) => state.podcasts.enrichedPodcasts) - return ( Date: Fri, 20 Dec 2024 20:19:01 +0200 Subject: [PATCH 069/323] Fix: Remove old proptypes --- src/pages/Content.jsx | 19 ------------------- 1 file changed, 19 deletions(-) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 923aea000..dd06a557a 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -33,25 +33,6 @@ function Content({ onShowClick }) { // Define Prop Types for previewData array of objects and for genres array of objects Content.propTypes = { - showData: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.string.isRequired, - title: PropTypes.string.isRequired, - description: PropTypes.string.isRequired, - seasons: PropTypes.number.isRequired, - image: PropTypes.string.isRequired, - genres: PropTypes.array.isRequired, - updated: PropTypes.string.isRequired - }) - ).isRequired, - genres: PropTypes.arrayOf( - PropTypes.shape({ - id: PropTypes.number.isRequired, - title: PropTypes.string.isRequired, - description: PropTypes.string, - shows: PropTypes.array - }) - ).isRequired, onShowClick: PropTypes.func.isRequired, } From b83db6b2aa6be121d31c4ab07d429c90973e9626 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 20 Dec 2024 20:22:22 +0200 Subject: [PATCH 070/323] Fix: Rename searchappbar to NavBar --- src/App.jsx | 2 +- src/components/{SearchAppBar.jsx => NavBar.jsx} | 0 2 files changed, 1 insertion(+), 1 deletion(-) rename src/components/{SearchAppBar.jsx => NavBar.jsx} (100%) diff --git a/src/App.jsx b/src/App.jsx index 84f842cb8..22e39770a 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,6 +1,6 @@ import LoadingSpinner from "./pages/LoadingSpinner"; import ErrorPage from './pages/ErrorPage'; -import SearchAppBar from './components/SearchAppBar'; +import SearchAppBar from './components/NavBar'; import Content from "./pages/Content"; import { useState, useEffect, useCallback } from 'react'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "./utils/sortUtils"; diff --git a/src/components/SearchAppBar.jsx b/src/components/NavBar.jsx similarity index 100% rename from src/components/SearchAppBar.jsx rename to src/components/NavBar.jsx From 4f316c69cae4732a2cbc637a36920b5f735afbac Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 20 Dec 2024 20:28:50 +0200 Subject: [PATCH 071/323] Fix: NavBar refactor to use Redux state podcast genre array --- src/App.jsx | 4 ++-- src/components/NavBar.jsx | 7 ++++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 22e39770a..3a1284a14 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -1,6 +1,6 @@ import LoadingSpinner from "./pages/LoadingSpinner"; import ErrorPage from './pages/ErrorPage'; -import SearchAppBar from './components/NavBar'; +import NavBar from './components/NavBar'; import Content from "./pages/Content"; import { useState, useEffect, useCallback } from 'react'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "./utils/sortUtils"; @@ -359,7 +359,7 @@ function App() { return ( <> - ({ position: 'relative', @@ -50,7 +51,8 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ }, })); -export default function SearchAppBar({ onSortChange, onFilterChange, onSearchChange, onFavoritesClick, onResetClick, genres }) { +export default function NavBar({ onSortChange, onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { + const genres = useSelector((state) => state.podcasts.genres) const theme = useTheme(); const [sortAnchorEl, setSortAnchorEl] = useState(null); const [filterAnchorEl, setFilterAnchorEl] = useState(null); @@ -172,11 +174,10 @@ export default function SearchAppBar({ onSortChange, onFilterChange, onSearchCha ); } -SearchAppBar.propTypes = { +NavBar.propTypes = { onSortChange: PropTypes.func.isRequired, onFilterChange: PropTypes.func.isRequired, onSearchChange: PropTypes.func.isRequired, onFavoritesClick: PropTypes.func.isRequired, onResetClick: PropTypes.func.isRequired, - genres: PropTypes.array.isRequired, }; \ No newline at end of file From 2d7cdfe86108d7bbe0a8f28bbe93407d766dce74 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 20 Dec 2024 20:30:38 +0200 Subject: [PATCH 072/323] Fix: Theme references to use new "NavBar" name --- src/components/NavBar.jsx | 4 ++-- src/theme.js | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 1e2aacf3c..1ae7be1de 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -107,8 +107,8 @@ export default function NavBar({ onSortChange, onFilterChange, onSearchChange, o elevation={0} position="fixed" sx={{ - backgroundColor: theme.palette.searchAppBar.background, - color: theme.palette.searchAppBar.color, + backgroundColor: theme.palette.NavBar.background, + color: theme.palette.NavBar.color, }} > diff --git a/src/theme.js b/src/theme.js index 5aeb95048..d7d3840ed 100644 --- a/src/theme.js +++ b/src/theme.js @@ -3,7 +3,7 @@ import { createTheme } from '@mui/material/styles'; export const lightTheme = createTheme({ palette: { mode: 'light', - searchAppBar: { + NavBar: { background: '#f5f5f5', color: '#121212', inputBackground: '#e0e0e0', @@ -57,7 +57,7 @@ export const lightTheme = createTheme({ export const darkTheme = createTheme({ palette: { mode: 'dark', - searchAppBar: { + NavBar: { background: '#212121', color: '#fafafa' }, From d02ace9d314e432c7b989be4138efdb498b307a3 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 11:55:27 +0200 Subject: [PATCH 073/323] Fix: Remove old unused genre state reference --- src/App.jsx | 1 - src/components/PodcastDetailsModal.jsx | 3 +++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 3a1284a14..5646f9d11 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -364,7 +364,6 @@ function App() { onFilterChange={handleFilterChange} onSearchChange={handleSearchChange} onFavoritesClick={handleFavoritesClick} - genres={genres} onResetClick={handleResetClick} /> {!showFavorites && filteredData && ( diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 69a9880f6..d4de35ee4 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -19,8 +19,11 @@ import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; +import { useSelector } from 'react-redux' const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { + const podcasts = useSelector((state) => state.podcasts.enrichedPodcasts) + const [selectedSeason, setSelectedSeason] = useState(null); const formatTime = (seconds) => { From 7b517e1783623469358a814ce8b233c352706a0a Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 13:21:57 +0200 Subject: [PATCH 074/323] Feat: Add sorting logic to podcastSlice --- src/state/podcastSlice.js | 16 ++++++++++++++-- src/utils/sortUtils.js | 17 ++++++++++++++++- 2 files changed, 30 insertions(+), 3 deletions(-) diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index 76abc51d9..932984f56 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -1,17 +1,28 @@ import { createSlice } from "@reduxjs/toolkit"; import { podcastApi } from "../services/podcastApi"; +import { applySorting } from "../utils/sortUtils"; const initialState = { genres: [], enrichedPodcasts: [], + sortedAndFilteredEnrichedPodcasts: [], loading: false, error: null, + sortOption: 'A-Z', } const podcastSlice = createSlice({ name: 'podcasts', initialState, - reducers: {}, + reducers: { + setSortOption(state, action) { + state.sortOption = action.payload; + state.sortedAndFilteredEnrichedPodcasts = applySorting( + state.enrichedPodcasts, + action.payload + ); + } + }, extraReducers: (builder) => { builder .addMatcher( @@ -26,7 +37,8 @@ const podcastSlice = createSlice({ (state, action) => { state.loading = false; state.enrichedPodcasts = action.payload.enrichedPodcasts; - state.genres = action.payload.genres + state.enrichedPodcasts = action.payload.sortedAndFilteredEnrichedPodcasts; + state.genres = action.payload.genres; } ) .addMatcher( diff --git a/src/utils/sortUtils.js b/src/utils/sortUtils.js index 53089895c..f74f5c28a 100644 --- a/src/utils/sortUtils.js +++ b/src/utils/sortUtils.js @@ -30,4 +30,19 @@ export const sortByDateDescending = (data, dateKey = 'updated') => { const dateB = new Date(b[dateKey] || b.savedAt || 0); return dateB - dateA; }); -}; \ No newline at end of file +}; + +export const applySorting = (podcasts, sortOption) => { + switch (sortOption) { + case 'A-Z': + return sortByTitleAscending(podcasts); + case 'Z-A': + return sortByTitleDescending(podcasts); + case 'newest': + return sortByDateDescending(podcasts); + case 'oldest': + return sortByDateAscending(podcasts); + default: + return podcasts; + } +} \ No newline at end of file From 61dcf2677660b606ca5d2784e0ff5fcaa45321fc Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 13:47:24 +0200 Subject: [PATCH 075/323] Feat: Implement sorting with redux --- src/App.jsx | 1 + src/components/NavBar.jsx | 17 ++++++++++++----- src/pages/Content.jsx | 4 ++-- src/state/podcastSlice.js | 6 +++++- 4 files changed, 20 insertions(+), 8 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 5646f9d11..21fffdb3b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -18,6 +18,7 @@ const SHOW_URL = "https://podcast-api.netlify.app/id/"; function App() { const { data, isError } = useGetAllPodcastsEnrichedQuery() + console.log(data) const { data: allPodcastsData, error, isLoading } = useGetAllPodcastsQuery(); // Fetch the initial data for the show cards const [genres, setGenres] = useState([]); // Iterate over unique genre ID's and generate array of fetched genre objects diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 1ae7be1de..805a9e98b 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -10,7 +10,8 @@ import FavoriteIcon from '@mui/icons-material/Favorite'; import PoddyLogo from './PoddyLogo'; import SettingsIcon from '@mui/icons-material/Settings'; import { debounce } from 'lodash'; -import { useSelector } from 'react-redux' +import { useSelector, useDispatch } from 'react-redux' +import { setSortOption } from '../state/podcastSlice' const Search = styled('div')(({ theme }) => ({ position: 'relative', @@ -52,6 +53,12 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ })); export default function NavBar({ onSortChange, onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { + const dispatch = useDispatch() + + const handleSort = (option) => { + dispatch(setSortOption(option)) + } + const genres = useSelector((state) => state.podcasts.genres) const theme = useTheme(); const [sortAnchorEl, setSortAnchorEl] = useState(null); @@ -144,10 +151,10 @@ export default function NavBar({ onSortChange, onFilterChange, onSearchChange, o - handleSortSelect('A-Z')}>Title A-Z - handleSortSelect('Z-A')}>Title Z-A - handleSortSelect('newest')}>Newest Added - handleSortSelect('oldest')}>Oldest Added + handleSort('A-Z')}>Title A-Z + handleSort('Z-A')}>Title Z-A + handleSort('newest')}>Newest Added + handleSort('oldest')}>Oldest Added diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index dd06a557a..778aa6291 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -5,7 +5,7 @@ import { useSelector } from 'react-redux' function Content({ onShowClick }) { - const podcasts = useSelector((state) => state.podcasts.enrichedPodcasts) + const sortedPodcasts = useSelector((state) => state.podcasts.sortedAndFilteredEnrichedPodcasts) return ( - {podcasts.map((podcast) => ( + {sortedPodcasts.map((podcast) => ( { state.loading = false; state.enrichedPodcasts = action.payload.enrichedPodcasts; - state.enrichedPodcasts = action.payload.sortedAndFilteredEnrichedPodcasts; + state.sortedAndFilteredEnrichedPodcasts = applySorting( + state.enrichedPodcasts, + state.sortOption + ) state.genres = action.payload.genres; } ) @@ -51,4 +54,5 @@ const podcastSlice = createSlice({ } }) +export const { setSortOption } = podcastSlice.actions; export default podcastSlice.reducer; \ No newline at end of file From ba03fc8ce868eaddc45cfb48ab14ed27ba2806cf Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 13:51:57 +0200 Subject: [PATCH 076/323] Fix: Remove "&" from certain titles --- src/components/ShowCard.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index 844e8b604..8b5d3383b 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -35,7 +35,7 @@ export default function ShowCard({ title, description, seasons, image, genres, u mb: "0.25rem" }}> - {title} + {title.replace("&", "&")} Date: Sat, 21 Dec 2024 14:12:28 +0200 Subject: [PATCH 077/323] Fix: Refactor Search from Navbar to be its own component --- src/components/NavBar.jsx | 15 +++------------ src/components/Search.jsx | 12 ++++++++++++ 2 files changed, 15 insertions(+), 12 deletions(-) create mode 100644 src/components/Search.jsx diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 805a9e98b..6354cd7e7 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -9,21 +9,11 @@ import SortIcon from '@mui/icons-material/Sort'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PoddyLogo from './PoddyLogo'; import SettingsIcon from '@mui/icons-material/Settings'; +import Search from './Search' import { debounce } from 'lodash'; import { useSelector, useDispatch } from 'react-redux' import { setSortOption } from '../state/podcastSlice' -const Search = styled('div')(({ theme }) => ({ - position: 'relative', - borderRadius: theme.shape.borderRadius, - marginLeft: 0, - width: '100%', - [theme.breakpoints.up('sm')]: { - marginLeft: theme.spacing(1), - width: 'auto', - }, -})); - const SearchIconWrapper = styled('div')(({ theme }) => ({ padding: theme.spacing(0, 2), height: '100%', @@ -54,9 +44,10 @@ const StyledInputBase = styled(InputBase)(({ theme }) => ({ export default function NavBar({ onSortChange, onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { const dispatch = useDispatch() - + const handleSort = (option) => { dispatch(setSortOption(option)) + handleSortClose() } const genres = useSelector((state) => state.podcasts.genres) diff --git a/src/components/Search.jsx b/src/components/Search.jsx new file mode 100644 index 000000000..690f77b2e --- /dev/null +++ b/src/components/Search.jsx @@ -0,0 +1,12 @@ +import { styled } from '@mui/material/styles'; + +export const Search = styled('div')(({ theme }) => ({ + position: 'relative', + borderRadius: theme.shape.borderRadius, + marginLeft: 0, + width: '100%', + [theme.breakpoints.up('sm')]: { + marginLeft: theme.spacing(1), + width: 'auto', + }, + })); \ No newline at end of file From bfff734f82b2f4e9cdcb98a8ac8dc8856b252894 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 14:13:48 +0200 Subject: [PATCH 078/323] Fix: Refactor SearchIconWrapper from Navbar to be its own component --- src/components/NavBar.jsx | 12 +----------- src/components/SearchIconWrapper.jsx | 12 ++++++++++++ 2 files changed, 13 insertions(+), 11 deletions(-) create mode 100644 src/components/SearchIconWrapper.jsx diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 6354cd7e7..0c1933437 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -10,21 +10,11 @@ import FavoriteIcon from '@mui/icons-material/Favorite'; import PoddyLogo from './PoddyLogo'; import SettingsIcon from '@mui/icons-material/Settings'; import Search from './Search' +import SearchIconWrapper from './SearchIconWrapper' import { debounce } from 'lodash'; import { useSelector, useDispatch } from 'react-redux' import { setSortOption } from '../state/podcastSlice' -const SearchIconWrapper = styled('div')(({ theme }) => ({ - padding: theme.spacing(0, 2), - height: '100%', - position: 'absolute', - pointerEvents: 'none', - display: 'flex', - alignItems: 'center', - justifyContent: 'center', - color: theme.palette.text.primary, -})); - const StyledInputBase = styled(InputBase)(({ theme }) => ({ color: theme.palette.text.primary, backgroundColor: alpha(theme.palette.common.black, 0.15), diff --git a/src/components/SearchIconWrapper.jsx b/src/components/SearchIconWrapper.jsx new file mode 100644 index 000000000..7076b32b6 --- /dev/null +++ b/src/components/SearchIconWrapper.jsx @@ -0,0 +1,12 @@ +import { styled } from '@mui/material/styles'; + +export const SearchIconWrapper = styled('div')(({ theme }) => ({ + padding: theme.spacing(0, 2), + height: '100%', + position: 'absolute', + pointerEvents: 'none', + display: 'flex', + alignItems: 'center', + justifyContent: 'center', + color: theme.palette.text.primary, + })); \ No newline at end of file From cdec393af48f29caf0d9082bcf16ab0f6262b17a Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 14:16:10 +0200 Subject: [PATCH 079/323] Fix: Refactor StyledInputBase from Navbar to be its own component --- src/components/NavBar.jsx | 20 +------------------- src/components/StyledInputBase.jsx | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 19 deletions(-) create mode 100644 src/components/StyledInputBase.jsx diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 0c1933437..bce27ca07 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -1,8 +1,7 @@ import { useState, useMemo } from 'react'; import { useTheme } from '@mui/material/styles'; import PropTypes from 'prop-types'; -import { styled, alpha } from '@mui/material/styles'; -import { AppBar, Box, Toolbar, Typography, InputBase, IconButton, Menu, MenuItem } from '@mui/material/'; +import { AppBar, Box, Toolbar, Typography, IconButton, Menu, MenuItem } from '@mui/material/'; import SearchIcon from '@mui/icons-material/Search'; import FilterListIcon from '@mui/icons-material/FilterList'; import SortIcon from '@mui/icons-material/Sort'; @@ -15,23 +14,6 @@ import { debounce } from 'lodash'; import { useSelector, useDispatch } from 'react-redux' import { setSortOption } from '../state/podcastSlice' -const StyledInputBase = styled(InputBase)(({ theme }) => ({ - color: theme.palette.text.primary, - backgroundColor: alpha(theme.palette.common.black, 0.15), - borderRadius: theme.shape.borderRadius, - '& .MuiInputBase-input': { - padding: theme.spacing(1, 1, 1, 0), - paddingLeft: `calc(1em + ${theme.spacing(4)})`, - transition: theme.transitions.create('width'), - [theme.breakpoints.up('sm')]: { - width: '12ch', - '&:focus': { - width: '20ch', - }, - }, - }, -})); - export default function NavBar({ onSortChange, onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { const dispatch = useDispatch() diff --git a/src/components/StyledInputBase.jsx b/src/components/StyledInputBase.jsx new file mode 100644 index 000000000..1ff791428 --- /dev/null +++ b/src/components/StyledInputBase.jsx @@ -0,0 +1,19 @@ +import { styled, alpha } from '@mui/material/styles'; +import { InputBase } from '@mui/material/'; + +export const StyledInputBase = styled(InputBase)(({ theme }) => ({ + color: theme.palette.text.primary, + backgroundColor: alpha(theme.palette.common.black, 0.15), + borderRadius: theme.shape.borderRadius, + '& .MuiInputBase-input': { + padding: theme.spacing(1, 1, 1, 0), + paddingLeft: `calc(1em + ${theme.spacing(4)})`, + transition: theme.transitions.create('width'), + [theme.breakpoints.up('sm')]: { + width: '12ch', + '&:focus': { + width: '20ch', + }, + }, + }, +})); \ No newline at end of file From eda8b420573f03288709e85b2aec154bca0b5a38 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 14:18:11 +0200 Subject: [PATCH 080/323] Fix: Import StyledInputBase to Navbar --- src/components/NavBar.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index bce27ca07..572d65663 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -10,6 +10,7 @@ import PoddyLogo from './PoddyLogo'; import SettingsIcon from '@mui/icons-material/Settings'; import Search from './Search' import SearchIconWrapper from './SearchIconWrapper' +import StyledInputBase from './StyledInputBase' import { debounce } from 'lodash'; import { useSelector, useDispatch } from 'react-redux' import { setSortOption } from '../state/podcastSlice' From e73ad3c74b9fbfe948fd06068c6f90667d914961 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 14:19:44 +0200 Subject: [PATCH 081/323] Fix: Export SearchIconWrapper --- src/components/SearchIconWrapper.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/SearchIconWrapper.jsx b/src/components/SearchIconWrapper.jsx index 7076b32b6..29102ef0a 100644 --- a/src/components/SearchIconWrapper.jsx +++ b/src/components/SearchIconWrapper.jsx @@ -1,6 +1,6 @@ import { styled } from '@mui/material/styles'; -export const SearchIconWrapper = styled('div')(({ theme }) => ({ +const SearchIconWrapper = styled('div')(({ theme }) => ({ padding: theme.spacing(0, 2), height: '100%', position: 'absolute', @@ -9,4 +9,6 @@ export const SearchIconWrapper = styled('div')(({ theme }) => ({ alignItems: 'center', justifyContent: 'center', color: theme.palette.text.primary, - })); \ No newline at end of file + })); + +export default SearchIconWrapper \ No newline at end of file From 88734ca95f557f6cd41fc27facdcb599f512e5ac Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 14:20:26 +0200 Subject: [PATCH 082/323] Fix: Export StyledInputBase --- src/components/StyledInputBase.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/StyledInputBase.jsx b/src/components/StyledInputBase.jsx index 1ff791428..3617aac76 100644 --- a/src/components/StyledInputBase.jsx +++ b/src/components/StyledInputBase.jsx @@ -1,7 +1,7 @@ import { styled, alpha } from '@mui/material/styles'; import { InputBase } from '@mui/material/'; -export const StyledInputBase = styled(InputBase)(({ theme }) => ({ +const StyledInputBase = styled(InputBase)(({ theme }) => ({ color: theme.palette.text.primary, backgroundColor: alpha(theme.palette.common.black, 0.15), borderRadius: theme.shape.borderRadius, @@ -16,4 +16,6 @@ export const StyledInputBase = styled(InputBase)(({ theme }) => ({ }, }, }, -})); \ No newline at end of file +})); + +export default StyledInputBase \ No newline at end of file From 62da6615e37e5f3fe59aa17416942d04650878bc Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 14:20:50 +0200 Subject: [PATCH 083/323] Fix: Export Search --- src/components/Search.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/Search.jsx b/src/components/Search.jsx index 690f77b2e..f4fc7c58e 100644 --- a/src/components/Search.jsx +++ b/src/components/Search.jsx @@ -1,6 +1,6 @@ import { styled } from '@mui/material/styles'; -export const Search = styled('div')(({ theme }) => ({ +const Search = styled('div')(({ theme }) => ({ position: 'relative', borderRadius: theme.shape.borderRadius, marginLeft: 0, @@ -9,4 +9,6 @@ export const Search = styled('div')(({ theme }) => ({ marginLeft: theme.spacing(1), width: 'auto', }, - })); \ No newline at end of file + })); + +export default Search \ No newline at end of file From 3a76906b5a65ade0cf889ddba16a8c468735c3b8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 14:36:41 +0200 Subject: [PATCH 084/323] Fix: Remove unused handleSortSelect --- src/components/NavBar.jsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 572d65663..e2555f0f7 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -42,11 +42,6 @@ export default function NavBar({ onSortChange, onFilterChange, onSearchChange, o setSortAnchorEl(null); }; - const handleSortSelect = (sortOption) => { - onSortChange(sortOption); - handleSortClose(); - }; - const handleFilterClick = (event) => { setFilterAnchorEl(event.currentTarget); }; From 72a684786dd89f937a3e8e0484240e4967e6ce47 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 14:38:50 +0200 Subject: [PATCH 085/323] Fix: Remove unused onSortChange prop --- src/components/NavBar.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index e2555f0f7..acda674f0 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -15,7 +15,7 @@ import { debounce } from 'lodash'; import { useSelector, useDispatch } from 'react-redux' import { setSortOption } from '../state/podcastSlice' -export default function NavBar({ onSortChange, onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { +export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { const dispatch = useDispatch() const handleSort = (option) => { From 35b418d3d049abc1b4ed8a5953957c10147a2506 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 15:33:17 +0200 Subject: [PATCH 086/323] Feat: Migrating Navbar state to redux --- src/components/NavBar.jsx | 10 ++++++++-- src/state/navbarSlice.js | 29 +++++++++++++++++++++++++++++ src/store/store.js | 4 +++- 3 files changed, 40 insertions(+), 3 deletions(-) create mode 100644 src/state/navbarSlice.js diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index acda674f0..2a58b3e8a 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -14,15 +14,21 @@ import StyledInputBase from './StyledInputBase' import { debounce } from 'lodash'; import { useSelector, useDispatch } from 'react-redux' import { setSortOption } from '../state/podcastSlice' +import { toggleSortMenu } from '../state/navbarSlice' export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { const dispatch = useDispatch() const handleSort = (option) => { dispatch(setSortOption(option)) - handleSortClose() } + const isSortMenuOpen = useSelector((state) => state.navbar.isSortMenuOpen); + + const handleSortMenu = () => { + dispatch(toggleSortMenu()); + }; + const genres = useSelector((state) => state.podcasts.genres) const theme = useTheme(); const [sortAnchorEl, setSortAnchorEl] = useState(null); @@ -109,7 +115,7 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic - + handleSort('A-Z')}>Title A-Z handleSort('Z-A')}>Title Z-A handleSort('newest')}>Newest Added diff --git a/src/state/navbarSlice.js b/src/state/navbarSlice.js new file mode 100644 index 000000000..fae6ef76c --- /dev/null +++ b/src/state/navbarSlice.js @@ -0,0 +1,29 @@ +import { createSlice } from "@reduxjs/toolkit"; + +const initialState = { + isSortMenuOpen: false, + isFilterMenuOpen: false, + isSettingsMenuOpen: false, + sortAnchorEl: null, + filterAnchorEl: null, + settingsAnchorEl: null, +}; + +const navbarSlice = createSlice({ + name: 'navbar', + initialState, + reducers: { + toggleSortMenu: (state) => { + state.isSortMenuOpen = !state.isSortMenuOpen + }, + toggleFilterMenu: (state) => { + state.isFilterMenuOpen = !state.isFilterMenuOpen + }, + toggleSettingsMenu: (state) => { + state.isSettingsMenuOpen = !state.isSettingsMenuOpen + }, + } +}); + +export const { toggleSortMenu } = navbarSlice.actions +export default navbarSlice.reducer; diff --git a/src/store/store.js b/src/store/store.js index 6cd4948d8..d5162066f 100644 --- a/src/store/store.js +++ b/src/store/store.js @@ -2,11 +2,13 @@ import { configureStore } from '@reduxjs/toolkit' import { setupListeners } from '@reduxjs/toolkit/query' import { podcastApi } from '../services/podcastApi' import podcastReducer from '../state/podcastSlice' +import navbarReducer from '../state/navbarSlice' export const store = configureStore({ reducer: { podcasts: podcastReducer, - [podcastApi.reducerPath]: podcastApi.reducer + [podcastApi.reducerPath]: podcastApi.reducer, + navbar: navbarReducer, }, middleware: (getDefaultMiddleware) => From de0a98d12534bcd7f5a8b2567227c774aff1258b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 17:45:31 +0200 Subject: [PATCH 087/323] Fix: Remove menu opening and closing logic from state --- src/App.jsx | 3 --- src/components/NavBar.jsx | 23 +++++++---------------- src/state/navbarSlice.js | 31 ++++++++++++++++++++++++------- 3 files changed, 31 insertions(+), 26 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 21fffdb3b..3945439e4 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -18,8 +18,6 @@ const SHOW_URL = "https://podcast-api.netlify.app/id/"; function App() { const { data, isError } = useGetAllPodcastsEnrichedQuery() - console.log(data) - const { data: allPodcastsData, error, isLoading } = useGetAllPodcastsQuery(); // Fetch the initial data for the show cards const [genres, setGenres] = useState([]); // Iterate over unique genre ID's and generate array of fetched genre objects const [loadingGenres, setLoadingGenres] = useState(true); // State to manage when we are fetching the genre objects and crated the above array @@ -361,7 +359,6 @@ function App() { return ( <> { - dispatch(setSortOption(option)) - } - - const isSortMenuOpen = useSelector((state) => state.navbar.isSortMenuOpen); - - const handleSortMenu = () => { - dispatch(toggleSortMenu()); + dispatch(setSortOption(option)); + handleSortClose() }; - const genres = useSelector((state) => state.podcasts.genres) const theme = useTheme(); const [sortAnchorEl, setSortAnchorEl] = useState(null); @@ -115,7 +107,7 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic - + handleSort('A-Z')}>Title A-Z handleSort('Z-A')}>Title Z-A handleSort('newest')}>Newest Added @@ -147,7 +139,6 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic } NavBar.propTypes = { - onSortChange: PropTypes.func.isRequired, onFilterChange: PropTypes.func.isRequired, onSearchChange: PropTypes.func.isRequired, onFavoritesClick: PropTypes.func.isRequired, diff --git a/src/state/navbarSlice.js b/src/state/navbarSlice.js index fae6ef76c..407da30a0 100644 --- a/src/state/navbarSlice.js +++ b/src/state/navbarSlice.js @@ -13,17 +13,34 @@ const navbarSlice = createSlice({ name: 'navbar', initialState, reducers: { - toggleSortMenu: (state) => { - state.isSortMenuOpen = !state.isSortMenuOpen + setSortAnchorEl(state, action) { + state.sortAnchorEl = action.payload }, - toggleFilterMenu: (state) => { - state.isFilterMenuOpen = !state.isFilterMenuOpen + setFilterAnchorEl(state, action) { + state.filterAnchorEl = action.payload }, - toggleSettingsMenu: (state) => { - state.isSettingsMenuOpen = !state.isSettingsMenuOpen + setSettingsAnchorEl(state, action) { + state.settingsAnchorEl = action.payload + }, + clearSortAnchorEl(state) { + state.sortAnchorEl = null + }, + clearFilterAnchorEl(state) { + state.filterAnchorEl = null + }, + clearSettingsAnchorEl(state) { + state.settingsAnchorEl = null }, } }); -export const { toggleSortMenu } = navbarSlice.actions +export const { + setSortAnchorEl, + setFilterAnchorEl, + setSettingsAnchorEl, + clearSortAnchorEl, + clearFilterAnchorEl, + clearSettingsAnchorEl +} = navbarSlice.actions + export default navbarSlice.reducer; From f76c164aa5434e19da9349774370725954f0be7b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 18:07:00 +0200 Subject: [PATCH 088/323] Fix: Refactor names of hanlder functions in navbar component --- src/components/NavBar.jsx | 32 ++++++++++++++++---------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 0aa8425ba..83040c40a 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -16,10 +16,10 @@ import { useDispatch, useSelector } from 'react-redux'; import { setSortOption } from '../state/podcastSlice'; export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { - const dispatch = useDispatch() + const dispatch = useDispatch(); const handleSort = (option) => { dispatch(setSortOption(option)); - handleSortClose() + handleSortMenuClose() }; const genres = useSelector((state) => state.podcasts.genres) const theme = useTheme(); @@ -32,38 +32,38 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic [onSearchChange] ); - const handleSortClick = (event) => { + const handleSortMenuOpen = (event) => { setSortAnchorEl(event.currentTarget); }; - const handleSortClose = () => { + const handleSortMenuClose = () => { setSortAnchorEl(null); }; - const handleFilterClick = (event) => { + const handleFilterMenuOpen = (event) => { setFilterAnchorEl(event.currentTarget); }; - const handleFilterClose = () => { + const handleFilterMenuClose = () => { setFilterAnchorEl(null); }; const handleFilterSelect = (genre) => { onFilterChange(genre); - handleFilterClose(); + handleFilterMenuClose(); }; - const handleSettingsClick = (event) => { + const handleSettingsMenuOpen = (event) => { setSettingsAnchorEl(event.currentTarget); }; - const handleSettingsClose = () => { + const handleSettingsMenuClose = () => { setSettingsAnchorEl(null); }; const handleResetClick = () => { onResetClick(); - handleSettingsClose(); + handleSettingsMenuClose(); }; return ( @@ -104,19 +104,19 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic onChange={(e) => debouncedSearch(e.target.value)} /> - + - + handleSort('A-Z')}>Title A-Z handleSort('Z-A')}>Title Z-A handleSort('newest')}>Newest Added handleSort('oldest')}>Oldest Added - + - + handleFilterSelect(null)}>Show All {genres.map((genre) => ( handleFilterSelect(genre)}> @@ -127,10 +127,10 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic - + - + Reset Listening History From 47edcec38b3d89f444d687d0e5dbb2d11a528d9c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 18:28:45 +0200 Subject: [PATCH 089/323] Feat: Add Redux Filter handling in NavBar --- src/components/NavBar.jsx | 10 +++++++--- src/state/podcastSlice.js | 9 +++++++-- 2 files changed, 14 insertions(+), 5 deletions(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 83040c40a..089c2fda3 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -13,7 +13,7 @@ import SearchIconWrapper from './SearchIconWrapper' import Search from './Search' import StyledInputBase from './StyledInputBase' import { useDispatch, useSelector } from 'react-redux'; -import { setSortOption } from '../state/podcastSlice'; +import { setSortOption, setFilterOption } from '../state/podcastSlice'; export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { const dispatch = useDispatch(); @@ -21,6 +21,10 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic dispatch(setSortOption(option)); handleSortMenuClose() }; + const handleFilter = (option) => { + dispatch(setFilterOption(option)) + handleFilterMenuClose() + } const genres = useSelector((state) => state.podcasts.genres) const theme = useTheme(); const [sortAnchorEl, setSortAnchorEl] = useState(null); @@ -117,9 +121,9 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic - handleFilterSelect(null)}>Show All + handleFilter(null)}>Show All {genres.map((genre) => ( - handleFilterSelect(genre)}> + handleFilter(genre)}> {genre.title} ))} diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index d6cf3454d..f15525ff8 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -9,6 +9,7 @@ const initialState = { loading: false, error: null, sortOption: 'A-Z', + filterOption: null, } const podcastSlice = createSlice({ @@ -21,7 +22,11 @@ const podcastSlice = createSlice({ state.enrichedPodcasts, action.payload ); - } + }, + setFilterOption(state, action) { + state.filterOption = action.payload + console.log(state.filterOption) + } }, extraReducers: (builder) => { builder @@ -54,5 +59,5 @@ const podcastSlice = createSlice({ } }) -export const { setSortOption } = podcastSlice.actions; +export const { setSortOption, setFilterOption } = podcastSlice.actions; export default podcastSlice.reducer; \ No newline at end of file From 17d888686d7e6a14348809c96c48e724a23ba886 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 19:27:40 +0200 Subject: [PATCH 090/323] Feat: Implement filtering by genre --- src/state/podcastSlice.js | 12 +++++++++--- src/utils/filterUtils.js | 11 +++++++++++ 2 files changed, 20 insertions(+), 3 deletions(-) create mode 100644 src/utils/filterUtils.js diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index f15525ff8..8d368f0c4 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -1,6 +1,7 @@ import { createSlice } from "@reduxjs/toolkit"; import { podcastApi } from "../services/podcastApi"; import { applySorting } from "../utils/sortUtils"; +import { filterPodcastsByGenre } from "../utils/filterUtils"; const initialState = { genres: [], @@ -18,14 +19,19 @@ const podcastSlice = createSlice({ reducers: { setSortOption(state, action) { state.sortOption = action.payload; - state.sortedAndFilteredEnrichedPodcasts = applySorting( + const sortedPodcasts = applySorting( state.enrichedPodcasts, action.payload ); + state.sortedAndFilteredEnrichedPodcasts = filterPodcastsByGenre(sortedPodcasts, state.filterOption) }, setFilterOption(state, action) { - state.filterOption = action.payload - console.log(state.filterOption) + state.filterOption = action.payload; + const filteredPodcasts = filterPodcastsByGenre( + state.enrichedPodcasts, + action.payload + ); + state.sortedAndFilteredEnrichedPodcasts = applySorting(filteredPodcasts, state.sortOption); } }, extraReducers: (builder) => { diff --git a/src/utils/filterUtils.js b/src/utils/filterUtils.js new file mode 100644 index 000000000..f63347ba3 --- /dev/null +++ b/src/utils/filterUtils.js @@ -0,0 +1,11 @@ +export const filterPodcastsByGenre = (podcasts, genre) => { + if (!genre) { + // If no genre is selected, return the full list + return podcasts; + } + + // Filter podcasts based on the genre ID + return podcasts.filter((podcast) => + podcast.genres.some((podcastGenre) => podcastGenre.id === genre.id) + ); +}; \ No newline at end of file From d5c9c159aad1a36da46c67c98c674785d9ad8d11 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 21 Dec 2024 19:29:57 +0200 Subject: [PATCH 091/323] Fix: Remove old filter function props in Navbar component --- src/components/NavBar.jsx | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 089c2fda3..79db066e6 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -15,7 +15,7 @@ import StyledInputBase from './StyledInputBase' import { useDispatch, useSelector } from 'react-redux'; import { setSortOption, setFilterOption } from '../state/podcastSlice'; -export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClick, onResetClick }) { +export default function NavBar({ onSearchChange, onFavoritesClick, onResetClick }) { const dispatch = useDispatch(); const handleSort = (option) => { dispatch(setSortOption(option)); @@ -52,11 +52,6 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic setFilterAnchorEl(null); }; - const handleFilterSelect = (genre) => { - onFilterChange(genre); - handleFilterMenuClose(); - }; - const handleSettingsMenuOpen = (event) => { setSettingsAnchorEl(event.currentTarget); }; @@ -143,7 +138,6 @@ export default function NavBar({ onFilterChange, onSearchChange, onFavoritesClic } NavBar.propTypes = { - onFilterChange: PropTypes.func.isRequired, onSearchChange: PropTypes.func.isRequired, onFavoritesClick: PropTypes.func.isRequired, onResetClick: PropTypes.func.isRequired, From 989418a947e16ed9cb03bf36ded9b85821f04e91 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 23 Jan 2025 08:02:33 +0200 Subject: [PATCH 092/323] Fix: Reset listening history deletes episode timestamps from local storage --- src/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 3945439e4..f4a389ad8 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -97,7 +97,7 @@ function App() { const handleResetConfirm = () => { setListenedEpisodes([]); - localStorage.removeItem('listenedEpisodes'); + localStorage.removeItem('episodeTimestamps'); setIsResetDialogOpen(false); }; From 6d705b97fbfb88dd03043f03125ca1e1d73520f9 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 24 Jan 2025 12:16:02 +0200 Subject: [PATCH 093/323] Feat: Fuzzy searching implementation --- src/App.jsx | 28 +--------------------------- src/components/NavBar.jsx | 31 +++++++++++++++++-------------- src/state/podcastSlice.js | 20 +++++++++++++++++++- src/utils/fuzzySearch.js | 9 +++++++-- 4 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index f4a389ad8..850f3cf1f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -25,7 +25,6 @@ function App() { const [selectedGenre, setSelectedGenre] = useState(null); // Manages the user defined selected genre for filtering shows, defaults to null for all shows const [sortedData, setSortedData] = useState(allPodcastsData); // State array of sorted allPodcastsData const [filteredData, setFilteredData] = useState(allPodcastsData); // Filtered version of sortedData array - const [searchQuery, setSearchQuery] = useState(''); // Search field text input saved to state const [modalOpen, setModalOpen] = useState(false); // State to manage the PodcastDetails Modal being open or closed based on boolean const [detailedShow, setDetailedShow] = useState(null); // When a show card is clicked, a get request is done and the shows detailed data is stored here const [currentEpisode, setCurrentEpisode] = useState(null); // State used by skip handlers to store current episodes data @@ -46,13 +45,7 @@ function App() { const storedTimestamps = localStorage.getItem('episodeTimestamps'); return storedTimestamps ? JSON.parse(storedTimestamps) : {}; }); - const [fuse, setFuse] = useState(null); - useEffect(() => { - if (allPodcastsData && allPodcastsData.length > 0) { - setFuse(initializeFuzzySearch(allPodcastsData)); - } - }, [allPodcastsData]); const updateEpisodeTimestamp = useCallback((showId, episodeTitle, timestamp) => { setEpisodeTimestamps(prev => { @@ -220,15 +213,8 @@ function App() { ); } - if (searchQuery) { - const lowerCaseQuery = searchQuery.toLowerCase(); - filteredData = filteredData.filter((show) => - show.title.toLowerCase().includes(lowerCaseQuery) - ); - } - setFilteredData(filteredData); - }, [selectedGenre, sortedData, searchQuery]); + }, [selectedGenre, sortedData]); // Click handler to set new sorting option const handleSortChange = (option) => { @@ -240,16 +226,6 @@ function App() { setSelectedGenre(genre); }; - const handleSearchChange = (query) => { - setSearchQuery(query); - if (query && fuse) { - const results = performFuzzySearch(fuse, query); - setFilteredData(results.map(result => result.item)); - } else { - setFilteredData(sortedData); - } - }; - const handleShowClick = async (show) => { if (playingShow && playingShow.id === show.id) { setModalOpen(true); @@ -360,7 +336,6 @@ function App() { <> @@ -376,7 +351,6 @@ function App() { toggleFavorite={toggleFavorite} onShowClick={handleShowClick} onBackToShows={handleBackToShows} - searchQuery={searchQuery} sortOption={sortOption} listenedEpisodes={listenedEpisodes} /> diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 79db066e6..8deacfdc3 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -13,10 +13,20 @@ import SearchIconWrapper from './SearchIconWrapper' import Search from './Search' import StyledInputBase from './StyledInputBase' import { useDispatch, useSelector } from 'react-redux'; -import { setSortOption, setFilterOption } from '../state/podcastSlice'; +import { setSortOption, setFilterOption, setSearchTerm } from '../state/podcastSlice'; + + + +export default function NavBar({ onFavoritesClick, onResetClick }) { + const genres = useSelector((state) => state.podcasts.genres) + const podcasts = useSelector((state) => state.podcasts) + const theme = useTheme(); + const [sortAnchorEl, setSortAnchorEl] = useState(null); + const [filterAnchorEl, setFilterAnchorEl] = useState(null); + const [settingsAnchorEl, setSettingsAnchorEl] = useState(null); -export default function NavBar({ onSearchChange, onFavoritesClick, onResetClick }) { const dispatch = useDispatch(); + const handleSort = (option) => { dispatch(setSortOption(option)); handleSortMenuClose() @@ -24,17 +34,11 @@ export default function NavBar({ onSearchChange, onFavoritesClick, onResetClick const handleFilter = (option) => { dispatch(setFilterOption(option)) handleFilterMenuClose() - } - const genres = useSelector((state) => state.podcasts.genres) - const theme = useTheme(); - const [sortAnchorEl, setSortAnchorEl] = useState(null); - const [filterAnchorEl, setFilterAnchorEl] = useState(null); - const [settingsAnchorEl, setSettingsAnchorEl] = useState(null); + }; - const debouncedSearch = useMemo( - () => debounce(onSearchChange, 300), - [onSearchChange] - ); + const handleSearchChange = (term) => { + dispatch(setSearchTerm(term)) + }; const handleSortMenuOpen = (event) => { setSortAnchorEl(event.currentTarget); @@ -100,7 +104,7 @@ export default function NavBar({ onSearchChange, onFavoritesClick, onResetClick debouncedSearch(e.target.value)} + onChange={(e) => handleSearchChange(e.target.value)} /> @@ -138,7 +142,6 @@ export default function NavBar({ onSearchChange, onFavoritesClick, onResetClick } NavBar.propTypes = { - onSearchChange: PropTypes.func.isRequired, onFavoritesClick: PropTypes.func.isRequired, onResetClick: PropTypes.func.isRequired, }; \ No newline at end of file diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index 8d368f0c4..9b4bc1d25 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -2,6 +2,7 @@ import { createSlice } from "@reduxjs/toolkit"; import { podcastApi } from "../services/podcastApi"; import { applySorting } from "../utils/sortUtils"; import { filterPodcastsByGenre } from "../utils/filterUtils"; +import { initializeFuzzySearch, performFuzzySearch } from '../utils/fuzzySearch'; const initialState = { genres: [], @@ -11,6 +12,7 @@ const initialState = { error: null, sortOption: 'A-Z', filterOption: null, + searchTerm: '' } const podcastSlice = createSlice({ @@ -32,6 +34,22 @@ const podcastSlice = createSlice({ action.payload ); state.sortedAndFilteredEnrichedPodcasts = applySorting(filteredPodcasts, state.sortOption); + }, + setSearchTerm(state, action) { + state.searchTerm = action.payload; + if (state.searchTerm === '') { + state.sortedAndFilteredEnrichedPodcasts = state.enrichedPodcasts + console.log(state.sortedAndFilteredEnrichedPodcasts) + } + else { + const fuse = initializeFuzzySearch(state.enrichedPodcasts) + console.log(" I am console logging the search term in the podcast slice") + console.log(state.searchTerm) + const results = performFuzzySearch(fuse, state.searchTerm); + console.log("Have defined results and will now console log") + console.log(results) + state.sortedAndFilteredEnrichedPodcasts = results.map(result => result.item) + } } }, extraReducers: (builder) => { @@ -65,5 +83,5 @@ const podcastSlice = createSlice({ } }) -export const { setSortOption, setFilterOption } = podcastSlice.actions; +export const { setSortOption, setFilterOption, setSearchTerm } = podcastSlice.actions; export default podcastSlice.reducer; \ No newline at end of file diff --git a/src/utils/fuzzySearch.js b/src/utils/fuzzySearch.js index 47c0931d6..9fd05bb1c 100644 --- a/src/utils/fuzzySearch.js +++ b/src/utils/fuzzySearch.js @@ -1,15 +1,15 @@ import Fuse from 'fuse.js'; export const initializeFuzzySearch = (shows) => { + console.log("INITIALISING THE FUZZY SEARCH") + console.log(shows) if (!shows || shows.length === 0) { return null; } const options = { keys: ['title', 'description'], - threshold: 1, includeScore: true, - distance: 500, // Increase distance minMatchCharLength: 2, // Match shorter parts }; @@ -17,8 +17,13 @@ export const initializeFuzzySearch = (shows) => { }; export const performFuzzySearch = (fuse, searchTerm) => { + console.log("WE ARE IN THE PERFORM FUZZY SEARCH FUNCTION") if (!fuse) { + console.log("NO FUSE!") return []; } + console.log("ABOUT TO RETURN FUSE SEARCH SEARCH TERM") + console.log(fuse) + console.log(searchTerm) return fuse.search(searchTerm); }; \ No newline at end of file From 7c803a9fd2155dbe2f0ed5f9e1477e9ef0bb8a07 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 4 Feb 2025 18:23:32 +0200 Subject: [PATCH 094/323] Feat: implement fuzzy search with sorting and filtering --- src/state/podcastSlice.js | 23 ++++++++++------------- src/utils/fuzzySearch.js | 8 +------- 2 files changed, 11 insertions(+), 20 deletions(-) diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index 9b4bc1d25..7d15a56bd 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -37,20 +37,17 @@ const podcastSlice = createSlice({ }, setSearchTerm(state, action) { state.searchTerm = action.payload; - if (state.searchTerm === '') { - state.sortedAndFilteredEnrichedPodcasts = state.enrichedPodcasts - console.log(state.sortedAndFilteredEnrichedPodcasts) - } - else { - const fuse = initializeFuzzySearch(state.enrichedPodcasts) - console.log(" I am console logging the search term in the podcast slice") - console.log(state.searchTerm) - const results = performFuzzySearch(fuse, state.searchTerm); - console.log("Have defined results and will now console log") - console.log(results) - state.sortedAndFilteredEnrichedPodcasts = results.map(result => result.item) + let searchResults = state.enrichedPodcasts + + if (state.searchTerm) { + const fuse = initializeFuzzySearch(searchResults); + searchResults = performFuzzySearch(fuse, state.searchTerm) + .map(result => result.item); } - } + + searchResults = applySorting(searchResults, state.sortOption); + state.sortedAndFilteredEnrichedPodcasts = filterPodcastsByGenre(searchResults, state.filterOption); + }, }, extraReducers: (builder) => { builder diff --git a/src/utils/fuzzySearch.js b/src/utils/fuzzySearch.js index 9fd05bb1c..eed6a1de1 100644 --- a/src/utils/fuzzySearch.js +++ b/src/utils/fuzzySearch.js @@ -1,8 +1,6 @@ import Fuse from 'fuse.js'; export const initializeFuzzySearch = (shows) => { - console.log("INITIALISING THE FUZZY SEARCH") - console.log(shows) if (!shows || shows.length === 0) { return null; } @@ -10,20 +8,16 @@ export const initializeFuzzySearch = (shows) => { const options = { keys: ['title', 'description'], includeScore: true, - minMatchCharLength: 2, // Match shorter parts + threshold: 0.45 }; return new Fuse(shows, options); }; export const performFuzzySearch = (fuse, searchTerm) => { - console.log("WE ARE IN THE PERFORM FUZZY SEARCH FUNCTION") if (!fuse) { console.log("NO FUSE!") return []; } - console.log("ABOUT TO RETURN FUSE SEARCH SEARCH TERM") - console.log(fuse) - console.log(searchTerm) return fuse.search(searchTerm); }; \ No newline at end of file From 3b70ea8b7b94131e768720e6688b308cc29d4a8f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 4 Feb 2025 18:29:56 +0200 Subject: [PATCH 095/323] Fix: Remove old irrelevant imports --- src/components/NavBar.jsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 8deacfdc3..16f7f942e 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -1,4 +1,4 @@ -import { useState, useMemo } from 'react'; +import { useState } from 'react'; import { useTheme } from '@mui/material/styles'; import PropTypes from 'prop-types'; import { AppBar, Box, Toolbar, Typography, IconButton, Menu, MenuItem } from '@mui/material/'; @@ -8,7 +8,6 @@ import SortIcon from '@mui/icons-material/Sort'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PoddyLogo from './PoddyLogo'; import SettingsIcon from '@mui/icons-material/Settings'; -import { debounce } from 'lodash'; import SearchIconWrapper from './SearchIconWrapper' import Search from './Search' import StyledInputBase from './StyledInputBase' @@ -19,7 +18,6 @@ import { setSortOption, setFilterOption, setSearchTerm } from '../state/podcastS export default function NavBar({ onFavoritesClick, onResetClick }) { const genres = useSelector((state) => state.podcasts.genres) - const podcasts = useSelector((state) => state.podcasts) const theme = useTheme(); const [sortAnchorEl, setSortAnchorEl] = useState(null); const [filterAnchorEl, setFilterAnchorEl] = useState(null); From c8722dec2d41e82ad282b1e0fb078f478ddbb433 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 4 Feb 2025 18:32:41 +0200 Subject: [PATCH 096/323] Fix: Remove irrelevant prop for NavBar --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 850f3cf1f..793eda38c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -335,7 +335,6 @@ function App() { return ( <> From 9e6cf72deb558c72460daa4c86776cd76b9ea11c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 4 Feb 2025 18:35:28 +0200 Subject: [PATCH 097/323] Fix: remove old filter and sort handlers --- src/App.jsx | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 793eda38c..c7709542a 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -216,16 +216,6 @@ function App() { setFilteredData(filteredData); }, [selectedGenre, sortedData]); - // Click handler to set new sorting option - const handleSortChange = (option) => { - setSortOption(option); - }; - - // Click handler to set the selected genre - const handleFilterChange = (genre) => { - setSelectedGenre(genre); - }; - const handleShowClick = async (show) => { if (playingShow && playingShow.id === show.id) { setModalOpen(true); From bc15cd062ae7f6d2a600c7c5caf9f17a7556bd99 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 4 Feb 2025 18:38:14 +0200 Subject: [PATCH 098/323] Fix: Remove fuzzy search imports from app.jsx --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index c7709542a..d7ef9bcee 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -9,7 +9,6 @@ import PodcastDetailsModal from './components/PodcastDetailsModal'; import FavoritesPage from './pages/FavoritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; -import { initializeFuzzySearch, performFuzzySearch } from './utils/fuzzySearch'; import { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery, useGetAllPodcastsEnrichedQuery } from './services/podcastApi' From 9790ec25f3b719834a072eb18a7f0c297206c4b7 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 4 Feb 2025 18:50:02 +0200 Subject: [PATCH 099/323] Fix: remove old useEffects and references for podcast sorting and filtering --- src/App.jsx | 87 +++-------------------------------------------------- 1 file changed, 5 insertions(+), 82 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index d7ef9bcee..be9f6ee38 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,27 +3,15 @@ import ErrorPage from './pages/ErrorPage'; import NavBar from './components/NavBar'; import Content from "./pages/Content"; import { useState, useEffect, useCallback } from 'react'; -import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "./utils/sortUtils"; import AudioPlayer from './components/AudioPlayer'; import PodcastDetailsModal from './components/PodcastDetailsModal'; import FavoritesPage from './pages/FavoritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; -import { useGetAllPodcastsQuery, useGetPodcastByIdQuery, useGetGenreByGenreIdQuery, useGetAllPodcastsEnrichedQuery } from './services/podcastApi' - - -const GENRE_URL = "https://podcast-api.netlify.app/genre/"; -const SHOW_URL = "https://podcast-api.netlify.app/id/"; +import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' function App() { - const { data, isError } = useGetAllPodcastsEnrichedQuery() - const { data: allPodcastsData, error, isLoading } = useGetAllPodcastsQuery(); // Fetch the initial data for the show cards - const [genres, setGenres] = useState([]); // Iterate over unique genre ID's and generate array of fetched genre objects - const [loadingGenres, setLoadingGenres] = useState(true); // State to manage when we are fetching the genre objects and crated the above array - const [sortOption, setSortOption] = useState("A-Z"); // Manage the sort option defined by the user, defaults to A-Z - const [selectedGenre, setSelectedGenre] = useState(null); // Manages the user defined selected genre for filtering shows, defaults to null for all shows - const [sortedData, setSortedData] = useState(allPodcastsData); // State array of sorted allPodcastsData - const [filteredData, setFilteredData] = useState(allPodcastsData); // Filtered version of sortedData array + const { data: allPodcastsData, error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards const [modalOpen, setModalOpen] = useState(false); // State to manage the PodcastDetails Modal being open or closed based on boolean const [detailedShow, setDetailedShow] = useState(null); // When a show card is clicked, a get request is done and the shows detailed data is stored here const [currentEpisode, setCurrentEpisode] = useState(null); // State used by skip handlers to store current episodes data @@ -150,70 +138,7 @@ function App() { window.removeEventListener('beforeunload', handleBeforeUnload); }; }, [isPlaying]); - - // TODO - // CONVERT THIS USE EFFECT TO REDUX - // Iterates over the allPodcastsData, grabbing genre id's, making a set of the unique ID's, and then fetches each genres information from the genre endpoint - // We then save an array of genre objects to state with setGenres - The dependency array is our allPodcastsData - useEffect(() => { - if (!allPodcastsData) return; - - const fetchGenres = async () => { - try { - const genreIds = new Set(allPodcastsData.flatMap(show => show.genres)); - const genrePromises = Array.from(genreIds).map(async (id) => { - const response = await fetch(`${GENRE_URL}${id}`); - return await response.json(); - }); - const fetchedGenres = await Promise.all(genrePromises); - setGenres(fetchedGenres); - } catch (err) { - console.error("Error fetching genres:", err); - } finally { - setLoadingGenres(false); - } - }; - - fetchGenres(); - }, [allPodcastsData]); - - // Process user defined sort option and array show cards as such - useEffect(() => { - if (allPodcastsData) { - let sorted; - switch (sortOption) { - case 'A-Z': - sorted = sortByTitleAscending(allPodcastsData); - break; - case 'Z-A': - sorted = sortByTitleDescending(allPodcastsData); - break; - case 'newest': - sorted = sortByDateDescending(allPodcastsData); - break; - case 'oldest': - sorted = sortByDateAscending(allPodcastsData); - break; - default: - sorted = allPodcastsData; - } - setSortedData(sorted); - } - }, [sortOption, allPodcastsData]); - - // Iterates over shows, filtering for shows with genre ID's that match the selected genres ID - // Then filters additionally for a text search query if there is one - useEffect(() => { - let filteredData = sortedData; - - if (selectedGenre) { - filteredData = sortedData.filter((show) => - show.genres.includes(selectedGenre.id) - ); - } - - setFilteredData(filteredData); - }, [selectedGenre, sortedData]); + const handleShowClick = async (show) => { if (playingShow && playingShow.id === show.id) { @@ -314,7 +239,7 @@ function App() { }; - if (isLoading || loadingGenres) return ( + if (isLoading) return ( @@ -327,7 +252,7 @@ function App() { onFavoritesClick={handleFavoritesClick} onResetClick={handleResetClick} /> - {!showFavorites && filteredData && ( + {!showFavorites && ( )} @@ -360,7 +284,6 @@ function App() { open={modalOpen} onClose={handleCloseModal} onPlayEpisode={handlePlayEpisode} - genres={genres} toggleFavorite={toggleFavorite} favoriteEpisodes={favoriteEpisodes} listenedEpisodes={listenedEpisodes} From ed7af788d028aaa4bb80907239f4a24fcb9b9d41 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 4 Feb 2025 18:55:12 +0200 Subject: [PATCH 100/323] Fix: remove misplaced console.log --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index be9f6ee38..ddad25272 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -66,7 +66,6 @@ function App() { }); }, []); - const handleResetClick = () => { setIsResetDialogOpen(true); }; From 5516ccfd3f27044d47544795f89d73452758fbc0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 4 Feb 2025 18:59:03 +0200 Subject: [PATCH 101/323] Fix: Remove unused "data: allPodcastsData" reference --- src/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index ddad25272..61c2f9597 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -11,7 +11,7 @@ import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' function App() { - const { data: allPodcastsData, error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards + const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards const [modalOpen, setModalOpen] = useState(false); // State to manage the PodcastDetails Modal being open or closed based on boolean const [detailedShow, setDetailedShow] = useState(null); // When a show card is clicked, a get request is done and the shows detailed data is stored here const [currentEpisode, setCurrentEpisode] = useState(null); // State used by skip handlers to store current episodes data From d84bd37da319e55cc12de9545659c1d018588144 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 10:31:55 +0200 Subject: [PATCH 102/323] Fix: restructure PodcastDetailsModal reference to exist in content component --- src/App.jsx | 24 ++++++---------- src/components/PodcastDetailsModal.jsx | 13 ++++----- src/pages/Content.jsx | 40 +++++++++++++++++++++++--- src/state/podcastSlice.js | 16 +++++++++-- 4 files changed, 64 insertions(+), 29 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 61c2f9597..bb66f15bd 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -4,15 +4,15 @@ import NavBar from './components/NavBar'; import Content from "./pages/Content"; import { useState, useEffect, useCallback } from 'react'; import AudioPlayer from './components/AudioPlayer'; -import PodcastDetailsModal from './components/PodcastDetailsModal'; import FavoritesPage from './pages/FavoritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' +import { useSelector, useDispatch } from 'react-redux' +import { setModalOpen } from './state/podcastSlice' function App() { const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards - const [modalOpen, setModalOpen] = useState(false); // State to manage the PodcastDetails Modal being open or closed based on boolean const [detailedShow, setDetailedShow] = useState(null); // When a show card is clicked, a get request is done and the shows detailed data is stored here const [currentEpisode, setCurrentEpisode] = useState(null); // State used by skip handlers to store current episodes data const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes @@ -33,6 +33,10 @@ function App() { return storedTimestamps ? JSON.parse(storedTimestamps) : {}; }); + const selectedPodcastData = useSelector(state => state.podcasts.selectedPodcastData); + const modalOpen = useSelector(state => state.podcasts.modalOpen); + const dispatch = useDispatch() + const updateEpisodeTimestamp = useCallback((showId, episodeTitle, timestamp) => { setEpisodeTimestamps(prev => { @@ -160,7 +164,7 @@ function App() { }; const handleCloseModal = () => { - setModalOpen(false); + dispatch(setModalOpen(true)); }; const getAllEpisodes = (show) => { @@ -253,6 +257,7 @@ function App() { /> {!showFavorites && ( @@ -276,19 +281,6 @@ function App() { onEpisodeComplete={handleEpisodeComplete} updateEpisodeTimestamp={updateEpisodeTimestamp} /> - {detailedShow && modalOpen && ( - - )} { - const podcasts = useSelector((state) => state.podcasts.enrichedPodcasts) const [selectedSeason, setSelectedSeason] = useState(null); @@ -216,17 +215,17 @@ PodcastDetailsModal.propTypes = { show: PropTypes.object.isRequired, open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, - onPlayEpisode: PropTypes.func.isRequired, + // onPlayEpisode: PropTypes.func.isRequired, genres: PropTypes.arrayOf(PropTypes.shape({ id: PropTypes.number.isRequired, title: PropTypes.string.isRequired, description: PropTypes.string })).isRequired, loading: PropTypes.bool.isRequired, - toggleFavorite: PropTypes.func.isRequired, - favoriteEpisodes: PropTypes.array.isRequired, - listenedEpisodes: PropTypes.array.isRequired, - episodeTimestamps: PropTypes.object.isRequired, + // toggleFavorite: PropTypes.func.isRequired, + // favoriteEpisodes: PropTypes.array.isRequired, + // listenedEpisodes: PropTypes.array.isRequired, + // episodeTimestamps: PropTypes.object.isRequired, }; export default PodcastDetailsModal; diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 778aa6291..a46ecce5e 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -1,13 +1,44 @@ import ShowCard from "../components/ShowCard"; import { Grid2 } from '@mui/material'; import PropTypes from "prop-types"; -import { useSelector } from 'react-redux' +import { useSelector, useDispatch } from 'react-redux' +import { useState } from "react"; +import { useGetPodcastByIdQuery } from '../services/podcastApi'; +import { setSelectedPodcastId, setModalOpen, setSelectedPodcastData } from '../state/podcastSlice'; +import PodcastDetailsModal from '../components/PodcastDetailsModal'; -function Content({ onShowClick }) { - const sortedPodcasts = useSelector((state) => state.podcasts.sortedAndFilteredEnrichedPodcasts) +function Content() { + const sortedPodcasts = useSelector((state) => state.podcasts.sortedAndFilteredEnrichedPodcasts); + const selectedPodcastId = useSelector(state => state.podcasts.selectedPodcastId); + const modalOpen = useSelector((state) => state.modalOpen) + const [selectedShowId, setSelectedShowId] = useState(null); + + const { data: selectedPodcastData, isLoading, isError } = useGetPodcastByIdQuery(selectedPodcastId, { + skip: !selectedPodcastId + }); + + const dispatch = useDispatch(); + const handleShowClick = (id) => { + dispatch(setSelectedPodcastId(id)); + dispatch(setModalOpen(true)); + + }; return ( + <> + setSelectedShowId(null)} + // onPlayEpisode={handlePlayEpisode} + // toggleFavorite={toggleFavorite} + // favoriteEpisodes={favoriteEpisodes} + // listenedEpisodes={listenedEpisodes} + // episodeTimestamps={episodeTimestamps} + /> onShowClick(podcast)} + onClick={() => handleShowClick(podcast.id)} /> ))} + ); } diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index 7d15a56bd..e305041f5 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -12,7 +12,10 @@ const initialState = { error: null, sortOption: 'A-Z', filterOption: null, - searchTerm: '' + searchTerm: '', + selectedPodcastId: null, + modalOpen: false, + selectedPodcastData: null, } const podcastSlice = createSlice({ @@ -48,6 +51,15 @@ const podcastSlice = createSlice({ searchResults = applySorting(searchResults, state.sortOption); state.sortedAndFilteredEnrichedPodcasts = filterPodcastsByGenre(searchResults, state.filterOption); }, + setSelectedPodcastId(state, action) { + state.selectedPodcast = action.payload + }, + setModalOpen(state, action) { + state.modalOpen = action.payload + }, + setSelectedPodcastData(state, action) { + state.selectedPodcastData = action.payload + } }, extraReducers: (builder) => { builder @@ -80,5 +92,5 @@ const podcastSlice = createSlice({ } }) -export const { setSortOption, setFilterOption, setSearchTerm } = podcastSlice.actions; +export const { setSortOption, setFilterOption, setSearchTerm, setSelectedPodcastId, setModalOpen, setSelectedPodcastData } = podcastSlice.actions; export default podcastSlice.reducer; \ No newline at end of file From 80bce8c8ac4814eae327dc42c3f9afb339340cc7 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 10:34:55 +0200 Subject: [PATCH 103/323] Fix: Refactor PodcastDetailsModal to use podcast object's genres --- src/components/PodcastDetailsModal.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 81473ea96..3a229f978 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -119,9 +119,9 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi {show.description} - {showGenres.length > 0 ? ( - showGenres.map((genre) => ( - + {podcast.genres.length > 0 ? ( + podcast.genres.map((genre, index) => ( + )) ) : ( No genres available From 99330f004c6e1f1bdabb2e42ab27b013bd273078 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 10:35:33 +0200 Subject: [PATCH 104/323] Fix: remove unused show genres function --- src/components/PodcastDetailsModal.jsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 3a229f978..ff14b9598 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -69,10 +69,6 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi setSelectedSeason(season); }; - const showGenres = genres.filter(genre => - genre.shows.includes(show.id) - ); - return ( Date: Thu, 6 Feb 2025 10:37:27 +0200 Subject: [PATCH 105/323] Fix: refactor genre map to use name show instead of podcast --- src/components/PodcastDetailsModal.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index ff14b9598..e064633fe 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -21,7 +21,7 @@ import PropTypes from 'prop-types'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; -const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { +const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { const [selectedSeason, setSelectedSeason] = useState(null); @@ -115,8 +115,8 @@ const PodcastDetailsModal = ({ show, genres, open, onClose, onPlayEpisode, loadi {show.description} - {podcast.genres.length > 0 ? ( - podcast.genres.map((genre, index) => ( + {show.genres.length > 0 ? ( + show.genres.map((genre, index) => ( )) ) : ( From ed388b086937eb6d6f77fe169b2da2b4774c17af Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 11:10:06 +0200 Subject: [PATCH 106/323] Fix: refactor podcastdetailsmodal to get it to open --- src/components/PodcastDetailsModal.jsx | 37 ++++++++++------------- src/pages/Content.jsx | 42 +++++++++++++------------- 2 files changed, 37 insertions(+), 42 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index e064633fe..a80e1a9dd 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -22,7 +22,7 @@ import CheckCircleIcon from '@mui/icons-material/CheckCircle'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { - + console.log(show) const [selectedSeason, setSelectedSeason] = useState(null); const formatTime = (seconds) => { @@ -49,20 +49,20 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, togg }); }; - const isFavorite = (episode) => { - return favoriteEpisodes.some(fav => - fav.showId === show.id && - fav.episodeTitle === episode.title && - fav.seasonTitle === selectedSeason.title - ); - }; + // const isFavorite = (episode) => { + // return favoriteEpisodes.some(fav => + // fav.showId === show.id && + // fav.episodeTitle === episode.title && + // fav.seasonTitle === selectedSeason.title + // ); + // }; - const isListened = (episode) => { - return listenedEpisodes.some(listened => - listened.showId === show.id && - listened.episodeTitle === episode.title - ); - }; + // const isListened = (episode) => { + // return listenedEpisodes.some(listened => + // listened.showId === show.id && + // listened.episodeTitle === episode.title + // ); + // }; const handleSeasonChange = (event) => { const season = show.seasons.find(s => s.season === event.target.value); @@ -166,7 +166,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, togg - + {/* {selectedSeason && selectedSeason.episodes.map((episode) => ( handleToggleFavorite(episode)}> @@ -195,7 +195,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, togg ))} - + */} @@ -212,11 +212,6 @@ PodcastDetailsModal.propTypes = { open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, // onPlayEpisode: PropTypes.func.isRequired, - genres: PropTypes.arrayOf(PropTypes.shape({ - id: PropTypes.number.isRequired, - title: PropTypes.string.isRequired, - description: PropTypes.string - })).isRequired, loading: PropTypes.bool.isRequired, // toggleFavorite: PropTypes.func.isRequired, // favoriteEpisodes: PropTypes.array.isRequired, diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index a46ecce5e..38bb1c959 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -10,7 +10,7 @@ import PodcastDetailsModal from '../components/PodcastDetailsModal'; function Content() { const sortedPodcasts = useSelector((state) => state.podcasts.sortedAndFilteredEnrichedPodcasts); - const selectedPodcastId = useSelector(state => state.podcasts.selectedPodcastId); + const [selectedPodcastId, setSelectedPodcastId] = useState(null) const modalOpen = useSelector((state) => state.modalOpen) const [selectedShowId, setSelectedShowId] = useState(null); @@ -20,7 +20,7 @@ function Content() { const dispatch = useDispatch(); const handleShowClick = (id) => { - dispatch(setSelectedPodcastId(id)); + setSelectedPodcastId(id); dispatch(setModalOpen(true)); }; @@ -39,26 +39,26 @@ function Content() { // listenedEpisodes={listenedEpisodes} // episodeTimestamps={episodeTimestamps} /> - - {sortedPodcasts.map((podcast) => ( - - handleShowClick(podcast.id)} - /> + + {sortedPodcasts.map((podcast) => ( + + handleShowClick(podcast.id)} + /> + + ))} - ))} - ); } From c5c3d22945b8a071856c732a73b16040edfb920c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 11:13:58 +0200 Subject: [PATCH 107/323] Fix: change opening of modal to be controlled by react state --- src/pages/Content.jsx | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 38bb1c959..0698b5fa5 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -18,13 +18,6 @@ function Content() { skip: !selectedPodcastId }); - const dispatch = useDispatch(); - const handleShowClick = (id) => { - setSelectedPodcastId(id); - dispatch(setModalOpen(true)); - - }; - return ( <> handleShowClick(podcast.id)} + onClick={() => setSelectedPodcastId(podcast.id)} /> ))} From 4068d25f9b5f6d90863c790dabc5ff9945521607 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 11:18:32 +0200 Subject: [PATCH 108/323] Fix: PodCastDetailsModal not closing --- src/components/PodcastDetailsModal.jsx | 1 - src/pages/Content.jsx | 4 +--- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index a80e1a9dd..582f8a9eb 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -22,7 +22,6 @@ import CheckCircleIcon from '@mui/icons-material/CheckCircle'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { - console.log(show) const [selectedSeason, setSelectedSeason] = useState(null); const formatTime = (seconds) => { diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 0698b5fa5..5ff48d583 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -11,8 +11,6 @@ import PodcastDetailsModal from '../components/PodcastDetailsModal'; function Content() { const sortedPodcasts = useSelector((state) => state.podcasts.sortedAndFilteredEnrichedPodcasts); const [selectedPodcastId, setSelectedPodcastId] = useState(null) - const modalOpen = useSelector((state) => state.modalOpen) - const [selectedShowId, setSelectedShowId] = useState(null); const { data: selectedPodcastData, isLoading, isError } = useGetPodcastByIdQuery(selectedPodcastId, { skip: !selectedPodcastId @@ -25,7 +23,7 @@ function Content() { loading={isLoading} error={isError} open={!!selectedPodcastId} - onClose={() => setSelectedShowId(null)} + onClose={() => setSelectedPodcastId(null)} // onPlayEpisode={handlePlayEpisode} // toggleFavorite={toggleFavorite} // favoriteEpisodes={favoriteEpisodes} From 6002ab0bd30616707ff799682414ccb21cdbb392 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 12:03:23 +0200 Subject: [PATCH 109/323] Fix: remove unused showgenres prop --- src/components/PodcastDetailsModal.jsx | 1 + src/pages/Content.jsx | 1 - 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 582f8a9eb..a80e1a9dd 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -22,6 +22,7 @@ import CheckCircleIcon from '@mui/icons-material/CheckCircle'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { + console.log(show) const [selectedSeason, setSelectedSeason] = useState(null); const formatTime = (seconds) => { diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 5ff48d583..45a01817f 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -43,7 +43,6 @@ function Content() { seasons={podcast.seasons} image={podcast.image} genres={podcast.genres} - showsGenre={podcast.genres} updated={podcast.updated} onClick={() => setSelectedPodcastId(podcast.id)} /> From b6b00e6106211cd313299e60128a7bbe8b28c55b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 16:30:42 +0200 Subject: [PATCH 110/323] Fix: Refactor slice, api, content and podcastdetailsmodal to open with data from RTK Query --- src/components/PodcastDetailsModal.jsx | 2 +- src/pages/Content.jsx | 2 +- src/services/{podcastApi.ts => podcastApi.js} | 58 ++++++++----------- src/state/podcastSlice.js | 2 +- 4 files changed, 27 insertions(+), 37 deletions(-) rename src/services/{podcastApi.ts => podcastApi.js} (66%) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index a80e1a9dd..0564186a3 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -117,7 +117,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, togg {show.genres.length > 0 ? ( show.genres.map((genre, index) => ( - + )) ) : ( No genres available diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 45a01817f..fe9df5c0a 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -3,7 +3,7 @@ import { Grid2 } from '@mui/material'; import PropTypes from "prop-types"; import { useSelector, useDispatch } from 'react-redux' import { useState } from "react"; -import { useGetPodcastByIdQuery } from '../services/podcastApi'; +import { useGetPodcastByIdQuery } from '../services/podcastApi' import { setSelectedPodcastId, setModalOpen, setSelectedPodcastData } from '../state/podcastSlice'; import PodcastDetailsModal from '../components/PodcastDetailsModal'; diff --git a/src/services/podcastApi.ts b/src/services/podcastApi.js similarity index 66% rename from src/services/podcastApi.ts rename to src/services/podcastApi.js index bbf74879a..6836c96ce 100644 --- a/src/services/podcastApi.ts +++ b/src/services/podcastApi.js @@ -1,38 +1,12 @@ import { createApi, fetchBaseQuery } from '@reduxjs/toolkit/query/react' -interface Podcast { - id: string; - title: string; - description: string; - seasons: number; - image: string; - genres: number[]; - updated: string; -} - -interface Genre { - id: number, - title: string; - description: string; - shows: string[]; -} - -interface EnrichedPodcast extends Omit { - genres: Genre[]; -} - -interface TransformedResponse { - enrichedPodcasts: EnrichedPodcast[]; - genres: Genre[]; -} - // Define a service using a base URL and expected endpoints export const podcastApi = createApi({ reducerPath: 'podcastApi', baseQuery: fetchBaseQuery({ baseUrl: 'https://podcast-api.netlify.app/' }), endpoints: (builder) => ({ - getAllPodcastsEnriched: builder.query({ + getAllPodcastsEnriched: builder.query({ queryFn: async (_, api) => { const baseQuery = fetchBaseQuery({ baseUrl: 'https://podcast-api.netlify.app/' }); try { @@ -41,7 +15,7 @@ export const podcastApi = createApi({ if (podcastsResult.error) { return { error: podcastsResult.error }; } - const podcasts = podcastsResult.data as Podcast[]; + const podcasts = podcastsResult.data; // Get unique genre IDs const genreIds = [...new Set(podcasts.flatMap(podcast => podcast.genres))]; @@ -55,10 +29,10 @@ export const podcastApi = createApi({ // Handle genre fetch errors const genres = genreResults.reduce((acc, result, index) => { if (result.data) { - acc[genreIds[index]] = result.data as Genre; + acc[genreIds[index]] = result.data; } return acc; - }, {} as Record); + }, {}); // Transform podcasts to include full genre info const enrichedPodcasts = podcasts.map(podcast => ({ @@ -78,15 +52,31 @@ export const podcastApi = createApi({ } }), - getAllPodcasts: builder.query({ + getAllPodcasts: builder.query({ query: () => ``, }), - getPodcastById: builder.query({ - query: (podcastId) => `id/${podcastId}` + getPodcastById: builder.query({ + queryFn: async (podcastId, api, extraOptions) => { + const baseQuery = fetchBaseQuery({ baseUrl: 'https://podcast-api.netlify.app/' }); + const podcastResult = await baseQuery(`id/${podcastId}`, api, extraOptions); + if (podcastResult.error) return { error: podcastResult.error }; + + const fetchedPodcast = podcastResult.data; + + const state = api.getState(); + const enrichedPodcasts = state.podcasts?.enrichedPodcasts || []; + const enrichedPodcast = enrichedPodcasts.find(p => p.id === podcastId); + + const finalPodcast = enrichedPodcast + ? {...fetchedPodcast, genres: enrichedPodcast.genres} + : fetchedPodcast; + + return { data: finalPodcast }; + }, }), - getGenreByGenreId: builder.query({ + getGenreByGenreId: builder.query({ query: (genreId) => `genre/${genreId}` }) diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index e305041f5..eec4de606 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -1,5 +1,5 @@ import { createSlice } from "@reduxjs/toolkit"; -import { podcastApi } from "../services/podcastApi"; +import { podcastApi } from "../services/podcastApi" import { applySorting } from "../utils/sortUtils"; import { filterPodcastsByGenre } from "../utils/filterUtils"; import { initializeFuzzySearch, performFuzzySearch } from '../utils/fuzzySearch'; From 5024192b9fee7aeac8d01e5458381c1d3e6ba665 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 17:13:31 +0200 Subject: [PATCH 111/323] Fix: Remove unused showtypes prop type --- src/pages/Content.jsx | 15 +++++---------- src/state/podcastSlice.js | 3 --- 2 files changed, 5 insertions(+), 13 deletions(-) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index fe9df5c0a..e9abcd0e9 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -2,15 +2,15 @@ import ShowCard from "../components/ShowCard"; import { Grid2 } from '@mui/material'; import PropTypes from "prop-types"; import { useSelector, useDispatch } from 'react-redux' -import { useState } from "react"; import { useGetPodcastByIdQuery } from '../services/podcastApi' -import { setSelectedPodcastId, setModalOpen, setSelectedPodcastData } from '../state/podcastSlice'; +import { setSelectedPodcastId, setSelectedPodcastData } from '../state/podcastSlice'; import PodcastDetailsModal from '../components/PodcastDetailsModal'; function Content() { + const dispatch = useDispatch() const sortedPodcasts = useSelector((state) => state.podcasts.sortedAndFilteredEnrichedPodcasts); - const [selectedPodcastId, setSelectedPodcastId] = useState(null) + const selectedPodcastId = useSelector((state) => state.podcasts.selectedPodcastId) const { data: selectedPodcastData, isLoading, isError } = useGetPodcastByIdQuery(selectedPodcastId, { skip: !selectedPodcastId @@ -23,7 +23,7 @@ function Content() { loading={isLoading} error={isError} open={!!selectedPodcastId} - onClose={() => setSelectedPodcastId(null)} + onClose={() => dispatch(setSelectedPodcastId(null))} // onPlayEpisode={handlePlayEpisode} // toggleFavorite={toggleFavorite} // favoriteEpisodes={favoriteEpisodes} @@ -44,7 +44,7 @@ function Content() { image={podcast.image} genres={podcast.genres} updated={podcast.updated} - onClick={() => setSelectedPodcastId(podcast.id)} + onClick={() => dispatch(setSelectedPodcastId(podcast.id))} /> ))} @@ -53,10 +53,5 @@ function Content() { ); } -// Define Prop Types for previewData array of objects and for genres array of objects -Content.propTypes = { - onShowClick: PropTypes.func.isRequired, -} - export default Content \ No newline at end of file diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index eec4de606..4f973893c 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -54,9 +54,6 @@ const podcastSlice = createSlice({ setSelectedPodcastId(state, action) { state.selectedPodcast = action.payload }, - setModalOpen(state, action) { - state.modalOpen = action.payload - }, setSelectedPodcastData(state, action) { state.selectedPodcastData = action.payload } From cf426a515b0778f9fe8bde47f4ff39f267daf8e5 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 17:16:04 +0200 Subject: [PATCH 112/323] Fix: Remove unused imports --- src/pages/Content.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index e9abcd0e9..135e8261d 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -1,9 +1,8 @@ import ShowCard from "../components/ShowCard"; import { Grid2 } from '@mui/material'; -import PropTypes from "prop-types"; import { useSelector, useDispatch } from 'react-redux' import { useGetPodcastByIdQuery } from '../services/podcastApi' -import { setSelectedPodcastId, setSelectedPodcastData } from '../state/podcastSlice'; +import { setSelectedPodcastId } from '../state/podcastSlice'; import PodcastDetailsModal from '../components/PodcastDetailsModal'; From 996bc7b7555a825f7375d722874619ea6864ac5a Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 17:31:03 +0200 Subject: [PATCH 113/323] Fix: Typo in podcast slice selectedpodcastId preventing podcastdetailsmodal from opening --- src/state/podcastSlice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index 4f973893c..f2040b631 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -52,7 +52,7 @@ const podcastSlice = createSlice({ state.sortedAndFilteredEnrichedPodcasts = filterPodcastsByGenre(searchResults, state.filterOption); }, setSelectedPodcastId(state, action) { - state.selectedPodcast = action.payload + state.selectedPodcastId = action.payload }, setSelectedPodcastData(state, action) { state.selectedPodcastData = action.payload From 74ff978f058e70653a3cedbcdead2cd9fc0044ad Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 18:13:46 +0200 Subject: [PATCH 114/323] Fix: refactor podcastdetails modal and content to remove unused props --- src/components/PodcastDetailsModal.jsx | 4 +++- src/pages/Content.jsx | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 0564186a3..a26f65441 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -19,9 +19,11 @@ import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; +import LoadingSpinner from '../pages/LoadingSpinner'; +import ErrorPage from '../pages/ErrorPage'; -const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { +const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, error, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { console.log(show) const [selectedSeason, setSelectedSeason] = useState(null); diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 135e8261d..833051292 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -18,7 +18,7 @@ function Content() { return ( <> Date: Thu, 6 Feb 2025 18:14:39 +0200 Subject: [PATCH 115/323] Fix: remove unused props passed to content in app.jsx --- src/App.jsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index bb66f15bd..df6a7a6b4 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -256,9 +256,7 @@ function App() { onResetClick={handleResetClick} /> {!showFavorites && ( - )} From 22331aae26c1724b8964fda93e44eef2176ffd4e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 18:15:29 +0200 Subject: [PATCH 116/323] Fix: Remove unused loading state from app.jsx --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index df6a7a6b4..cc6dc4daf 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -16,7 +16,6 @@ function App() { const [detailedShow, setDetailedShow] = useState(null); // When a show card is clicked, a get request is done and the shows detailed data is stored here const [currentEpisode, setCurrentEpisode] = useState(null); // State used by skip handlers to store current episodes data const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes - const [loadingShow, setLoadingShow] = useState(false); // Handle loading state when a show is clicked on const [playingShow, setPlayingShow] = useState(null); // Sets the playing show equal to the detail show from the PodcastDetails Modal const [favoriteEpisodes, setFavoriteEpisodes] = useState(() => { // Sets favorite episodes equal to the episodes in state, or an empty array if no episodes exist const storedFavorites = localStorage.getItem('favoriteEpisodes'); From 8beb097bb03e1a63cae1070bbb1a342fb76920af Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 18:16:04 +0200 Subject: [PATCH 117/323] Fix: remove unused modal state from app.jsx --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index cc6dc4daf..697fca70f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -33,7 +33,6 @@ function App() { }); const selectedPodcastData = useSelector(state => state.podcasts.selectedPodcastData); - const modalOpen = useSelector(state => state.podcasts.modalOpen); const dispatch = useDispatch() From 00fd40ba6789a97063ed682d36cf7d5c399cb04d Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 18:16:36 +0200 Subject: [PATCH 118/323] Fix: remove unused podcast state from app.jsx --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 697fca70f..fe4123b14 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -32,7 +32,6 @@ function App() { return storedTimestamps ? JSON.parse(storedTimestamps) : {}; }); - const selectedPodcastData = useSelector(state => state.podcasts.selectedPodcastData); const dispatch = useDispatch() From 437c11e11e92e3fbb5aa1da478064b080599bf8c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 18:17:13 +0200 Subject: [PATCH 119/323] Fix: remove unused useselector import in app.jsx --- src/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index fe4123b14..14c3c209b 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -8,7 +8,7 @@ import FavoritesPage from './pages/FavoritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' -import { useSelector, useDispatch } from 'react-redux' +import { useDispatch } from 'react-redux' import { setModalOpen } from './state/podcastSlice' function App() { From dbe8394dc3b7aebce0eaad26554c49d6c907a8a3 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:09:07 +0200 Subject: [PATCH 120/323] Feat: PodcastDetailsModal opening and closing through redux state management --- src/components/PodcastDetailsModal.jsx | 258 +++++++++++++------------ src/pages/Content.jsx | 15 +- src/state/podcastSlice.js | 24 +++ 3 files changed, 165 insertions(+), 132 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index a26f65441..95193b9d2 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -23,8 +23,7 @@ import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; -const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, error, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { - console.log(show) +const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { const [selectedSeason, setSelectedSeason] = useState(null); const formatTime = (seconds) => { @@ -72,140 +71,143 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, erro }; return ( - - - {loading ? ( - - - - ) : show ? ( - <> - - - {show.title} - - - - {show.title} - - - {show.description} - - - {show.genres.length > 0 ? ( - show.genres.map((genre, index) => ( - - )) - ) : ( - No genres available - )} + <> + {error && } + + + {(loading || fetching) ? ( + + + + ) : show ? ( + <> + + + {show.title} - - - Updated: {(new Date(show.updated)).toLocaleString(undefined, { - year: 'numeric', - month: 'long', - day: 'numeric', - hour12: false, - })} + + + {show.title} - - - {Array.isArray(show.seasons) && ( - - )} - - {Array.isArray(selectedSeason?.episodes) ? ( - - Episodes: {selectedSeason.episodes.length} - + + {show.description} + + + {show.genres.length > 0 ? ( + show.genres.map((genre, index) => ( + + )) ) : ( - - No episodes available - + No genres available )} - - - - - {/* - {selectedSeason && selectedSeason.episodes.map((episode) => ( - - handleToggleFavorite(episode)}> - {isFavorite(episode) ? : } - - - {episode.description} - {episodeTimestamps[show.id] && episodeTimestamps[show.id][episode.title] && ( - - Last played: {formatTime(episodeTimestamps[show.id][episode.title])} + + + Updated: {(new Date(show.updated)).toLocaleString(undefined, { + year: 'numeric', + month: 'long', + day: 'numeric', + hour12: false, + })} + + + {Array.isArray(show.seasons) && ( + )} - - } - /> - - {isListened(episode) && ( - - )} - onPlayEpisode(episode)}> - + + {Array.isArray(selectedSeason?.episodes) ? ( + + Episodes: {selectedSeason.episodes.length} + + ) : ( + + No episodes available + + )} + + + + + + {/* + {selectedSeason && selectedSeason.episodes.map((episode) => ( + + handleToggleFavorite(episode)}> + {isFavorite(episode) ? : } - - - ))} - */} - - - - ) : ( - Failed to load show details. - )} - - + + {episode.description} + {episodeTimestamps[show.id] && episodeTimestamps[show.id][episode.title] && ( + + Last played: {formatTime(episodeTimestamps[show.id][episode.title])} + + )} + + } + /> + + {isListened(episode) && ( + + )} + onPlayEpisode(episode)}> + + + + + ))} + */} + + + + ) : ( + Failed to load show details. + )} + + + ); }; diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 833051292..cc7631e22 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -4,6 +4,7 @@ import { useSelector, useDispatch } from 'react-redux' import { useGetPodcastByIdQuery } from '../services/podcastApi' import { setSelectedPodcastId } from '../state/podcastSlice'; import PodcastDetailsModal from '../components/PodcastDetailsModal'; +import LoadingSpinner from "./LoadingSpinner"; function Content() { @@ -11,16 +12,22 @@ function Content() { const sortedPodcasts = useSelector((state) => state.podcasts.sortedAndFilteredEnrichedPodcasts); const selectedPodcastId = useSelector((state) => state.podcasts.selectedPodcastId) - const { data: selectedPodcastData, isLoading, isError } = useGetPodcastByIdQuery(selectedPodcastId, { + const { + data: selectedPodcastData, + isLoading, + isFetching, + error + } = useGetPodcastByIdQuery(selectedPodcastId, { skip: !selectedPodcastId }); - + return ( <> dispatch(setSelectedPodcastId(null))} // onPlayEpisode={handlePlayEpisode} diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index f2040b631..97cc548ec 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -86,6 +86,30 @@ const podcastSlice = createSlice({ state.error = action.error; } ) + .addMatcher( + podcastApi.endpoints.getPodcastById.matchPending, + (state) => { + state.loading = true; + state.selectedPodcastData = null; + state.error = null; + } + ) + .addMatcher( + podcastApi.endpoints.getPodcastById.matchFulfilled, + (state, action) => { + state.loading = false; + state.selectedPodcastData = action.payload; + state.error = null; + } + ) + .addMatcher( + podcastApi.endpoints.getPodcastById.matchRejected, + (state, action) => { + state.loading = false; + state.selectedPodcastData = null; + state.error = action.error; + } + ) } }) From c740da192e0dc7381626cda411c6c1acda5706bf Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:09:43 +0200 Subject: [PATCH 121/323] Fix: Remove unused loading spinner in content --- src/pages/Content.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index cc7631e22..e7cbf09af 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -4,7 +4,6 @@ import { useSelector, useDispatch } from 'react-redux' import { useGetPodcastByIdQuery } from '../services/podcastApi' import { setSelectedPodcastId } from '../state/podcastSlice'; import PodcastDetailsModal from '../components/PodcastDetailsModal'; -import LoadingSpinner from "./LoadingSpinner"; function Content() { From bda159b2d78e5b0eb42115199b6ce6e31b10c4b4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:12:32 +0200 Subject: [PATCH 122/323] Fix: remove unused proptype --- src/components/ShowCard.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index 8b5d3383b..e4a191ad1 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -111,7 +111,6 @@ ShowCard.propTypes = { seasons: PropTypes.number.isRequired, image: PropTypes.string.isRequired, genres: PropTypes.array.isRequired, - showsGenre: PropTypes.array.isRequired, updated: PropTypes.string.isRequired, onClick: PropTypes.func.isRequired, } From 7d1091934a95e0ea1684fc00d99c596cbdd15f9c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:15:01 +0200 Subject: [PATCH 123/323] Fix: remove .isRequired from show proptype in PodcastDetailsModal as initially it will be undefined --- src/components/PodcastDetailsModal.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 95193b9d2..b9fbf2dd5 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -212,7 +212,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc }; PodcastDetailsModal.propTypes = { - show: PropTypes.object.isRequired, + show: PropTypes.object, open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, // onPlayEpisode: PropTypes.func.isRequired, From 210abdfea6df0b101d11efa34d9c4835a74c8b07 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:16:13 +0200 Subject: [PATCH 124/323] Fix: remove unused handler to close modal from app.jsx --- src/App.jsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 14c3c209b..0b1b19002 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -159,10 +159,6 @@ function App() { setLoadingShow(false); } }; - - const handleCloseModal = () => { - dispatch(setModalOpen(true)); - }; const getAllEpisodes = (show) => { if (!show || !Array.isArray(show.seasons)) { From 5d0e84ae94402430db9e52e6dee940be44dd8a46 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:17:55 +0200 Subject: [PATCH 125/323] Fix: remove old useEffect that used to handle fetching show data when clicked on --- src/App.jsx | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 0b1b19002..9055d0030 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -139,26 +139,6 @@ function App() { }; }, [isPlaying]); - - const handleShowClick = async (show) => { - if (playingShow && playingShow.id === show.id) { - setModalOpen(true); - return; - } - - setModalOpen(true); - setLoadingShow(true); - try { - const response = await fetch(`${SHOW_URL}${show.id}`); - const data = await response.json(); - setDetailedShow(data); - setPlayingShow(data); - } catch (error) { - console.error('Error fetching show details:', error); - } finally { - setLoadingShow(false); - } - }; const getAllEpisodes = (show) => { if (!show || !Array.isArray(show.seasons)) { From 9ae4fbd6a0914017adbd9bdba6e8c65bd7e0ee45 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:20:33 +0200 Subject: [PATCH 126/323] Fix: removed unused modalOpen import in app.jsx --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 9055d0030..3537bfdd7 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -9,7 +9,6 @@ import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' import { useDispatch } from 'react-redux' -import { setModalOpen } from './state/podcastSlice' function App() { const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards From 10e49e04303f0dfe82d043121f2c2b02dbcecc50 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:21:40 +0200 Subject: [PATCH 127/323] Fix: remove old unused detailedShow state from app.jsx --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 3537bfdd7..b0ac64acc 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -12,7 +12,6 @@ import { useDispatch } from 'react-redux' function App() { const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards - const [detailedShow, setDetailedShow] = useState(null); // When a show card is clicked, a get request is done and the shows detailed data is stored here const [currentEpisode, setCurrentEpisode] = useState(null); // State used by skip handlers to store current episodes data const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes const [playingShow, setPlayingShow] = useState(null); // Sets the playing show equal to the detail show from the PodcastDetails Modal From 96d7aacccf06c795e411a51f99728533a30f44c7 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:22:41 +0200 Subject: [PATCH 128/323] Fix: remove unused dispatch definition in app.jsx --- src/App.jsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index b0ac64acc..0cde4365d 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -30,9 +30,6 @@ function App() { return storedTimestamps ? JSON.parse(storedTimestamps) : {}; }); - const dispatch = useDispatch() - - const updateEpisodeTimestamp = useCallback((showId, episodeTitle, timestamp) => { setEpisodeTimestamps(prev => { const newTimestamps = { From c3ce60c0ae02d8b03cfe68a8382e01277cd5e8e4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 19:23:26 +0200 Subject: [PATCH 129/323] Fix: remove unused usedispatch import in app.jsx --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 0cde4365d..ace549305 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -8,7 +8,6 @@ import FavoritesPage from './pages/FavoritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' -import { useDispatch } from 'react-redux' function App() { const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards From 3edba5a333d181779fd3f6214a1b3324f7276b10 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 6 Feb 2025 20:06:12 +0200 Subject: [PATCH 130/323] Feat: Implement porper management for loading new data of podcastdetailsmodal when clicked --- src/components/PodcastDetailsModal.jsx | 15 +++++++++++++-- src/pages/Content.jsx | 2 +- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index b9fbf2dd5..6ee8188e0 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -25,6 +25,10 @@ import ErrorPage from '../pages/ErrorPage'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { const [selectedSeason, setSelectedSeason] = useState(null); + const [imageLoading, setImageLoading] = useState(true) + useEffect(() => { + setImageLoading(true); + }, [selectedSeason, show]); const formatTime = (seconds) => { const hours = Math.floor(seconds / 3600); @@ -103,11 +107,18 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc ) : show ? ( <> - + + {imageLoading && } {show.title} setImageLoading(false)} /> diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index e7cbf09af..d012d30b3 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -23,7 +23,7 @@ function Content() { return ( <> Date: Fri, 7 Feb 2025 13:44:52 +0200 Subject: [PATCH 131/323] Feat: add favourite episodes and listened episodes keys to podcast slice to begin migrating them to redux --- src/state/audioPlayerSlice.js | 7 +++++++ src/state/podcastSlice.js | 2 ++ 2 files changed, 9 insertions(+) create mode 100644 src/state/audioPlayerSlice.js diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js new file mode 100644 index 000000000..b38975d27 --- /dev/null +++ b/src/state/audioPlayerSlice.js @@ -0,0 +1,7 @@ +import { createSlice } from "@reduxjs/toolkit"; + +const initialState = { + currentEpisode: null, + isPlaying: false, + playingShow: null, +} \ No newline at end of file diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index 97cc548ec..d6686da21 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -16,6 +16,8 @@ const initialState = { selectedPodcastId: null, modalOpen: false, selectedPodcastData: null, + favouriteEpisodes: null, + listenedEpisodes: null, } const podcastSlice = createSlice({ From e6683090aeda74b9bf02e49962372a7c6e26e012 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 14:40:17 +0200 Subject: [PATCH 132/323] Feat: begin constructing audioplayer slice --- src/state/audioPlayerSlice.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index b38975d27..7f2ab99b5 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -4,4 +4,5 @@ const initialState = { currentEpisode: null, isPlaying: false, playingShow: null, + episodeTimestamps: null, } \ No newline at end of file From 9f582b20e0aacab06f4e8e3d5846e5d7678fbd74 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 15:35:14 +0200 Subject: [PATCH 133/323] Feat: Create localstorage middleware to begin migrating favourites logic to redux --- src/middleware/localStorageMiddleware.js | 12 ++++++++++++ src/state/podcastSlice.js | 3 +++ 2 files changed, 15 insertions(+) create mode 100644 src/middleware/localStorageMiddleware.js diff --git a/src/middleware/localStorageMiddleware.js b/src/middleware/localStorageMiddleware.js new file mode 100644 index 000000000..48f63f076 --- /dev/null +++ b/src/middleware/localStorageMiddleware.js @@ -0,0 +1,12 @@ +const localStorageMiddleware = store => next => action => { + const result = next(action) + + if (action.type.startswith("/favourites")) { + const state = store.getState(); + localStorage.setItem("favourites", JSON.stringify(state.favourites)); + } + + return result; +} + +export default localStorageMiddleware \ No newline at end of file diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index d6686da21..8fbc90b4a 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -58,6 +58,9 @@ const podcastSlice = createSlice({ }, setSelectedPodcastData(state, action) { state.selectedPodcastData = action.payload + }, + setEpisodeAsFavourite(state, action) { + } }, extraReducers: (builder) => { From 1b21e4f9424756c8b8d3899005b303ea5f95cf49 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 21:03:51 +0200 Subject: [PATCH 134/323] Feat: Build favourites slice to begin tracking favourites state in redux --- src/state/favouritesSlice.js | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) create mode 100644 src/state/favouritesSlice.js diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js new file mode 100644 index 000000000..9c24c8876 --- /dev/null +++ b/src/state/favouritesSlice.js @@ -0,0 +1,28 @@ +import { createSlice } from "@reduxjs/toolkit"; + +const loadFavourites = () => { + try { + const favourites = localStorage.getItem("favourites"); + return favourites ? JSON.parse(favourites) : []; + } catch (error) { + console.error("Error loading favourites from storage", error) + return []; + } +}; + +const favouritesSlice = createSlice({ + name: "favourites", + initialState: loadFavourites(), + reducers: { + addFavourite: (state, action) => { + if(!state.includes(action.payload)) + state.push(action.payload) + }, + removeFavourite: (state, action) => { + return state.filter(fav => fav !== action.payload) + }, + } +}) + +export const { addFavourite, removeFavourite } = favouritesSlice.actions; +export default favouritesSlice.reducer; \ No newline at end of file From 84072648366fb74abb2ffebb8bea5041a4d6a520 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 21:13:08 +0200 Subject: [PATCH 135/323] Feat: Add localstorage reducer and favourites middleware to store --- src/store/store.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/store/store.js b/src/store/store.js index d5162066f..03eb35c55 100644 --- a/src/store/store.js +++ b/src/store/store.js @@ -3,16 +3,19 @@ import { setupListeners } from '@reduxjs/toolkit/query' import { podcastApi } from '../services/podcastApi' import podcastReducer from '../state/podcastSlice' import navbarReducer from '../state/navbarSlice' +import favouritesReducer from '../state/favouritesSlice' +import localStorageMiddleware from '../middleware/localStorageMiddleware' export const store = configureStore({ reducer: { podcasts: podcastReducer, [podcastApi.reducerPath]: podcastApi.reducer, navbar: navbarReducer, + favourites: favouritesReducer, }, middleware: (getDefaultMiddleware) => - getDefaultMiddleware().concat(podcastApi.middleware) + getDefaultMiddleware().concat(podcastApi.middleware, localStorageMiddleware) , }) From d0d753f8cbf88fda2737d9271f12c7a9f4301d1d Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 21:17:02 +0200 Subject: [PATCH 136/323] Fix: typo on "startsWith" function in localstorageMiddleware --- src/middleware/localStorageMiddleware.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/middleware/localStorageMiddleware.js b/src/middleware/localStorageMiddleware.js index 48f63f076..b4463f060 100644 --- a/src/middleware/localStorageMiddleware.js +++ b/src/middleware/localStorageMiddleware.js @@ -1,7 +1,7 @@ const localStorageMiddleware = store => next => action => { const result = next(action) - if (action.type.startswith("/favourites")) { + if (action.type.startsWith("favourites/")) { const state = store.getState(); localStorage.setItem("favourites", JSON.stringify(state.favourites)); } From 29d507ba315f11b922dfa08e9fda8edd1247b240 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 21:20:07 +0200 Subject: [PATCH 137/323] Fix: Typo in name "Favourites" --- src/App.jsx | 4 ++-- src/pages/{FavoritesPage.jsx => FavouritesPage.jsx} | 0 2 files changed, 2 insertions(+), 2 deletions(-) rename src/pages/{FavoritesPage.jsx => FavouritesPage.jsx} (100%) diff --git a/src/App.jsx b/src/App.jsx index ace549305..e9a88344a 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -4,7 +4,7 @@ import NavBar from './components/NavBar'; import Content from "./pages/Content"; import { useState, useEffect, useCallback } from 'react'; import AudioPlayer from './components/AudioPlayer'; -import FavoritesPage from './pages/FavoritesPage'; +import FavoritesPage from './pages/FavouritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' @@ -228,7 +228,7 @@ function App() { /> )} {showFavorites && ( - Date: Fri, 7 Feb 2025 21:21:28 +0200 Subject: [PATCH 138/323] Fix: typo in favourites page import to app.jsx --- src/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index e9a88344a..c64e80c3f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -4,7 +4,7 @@ import NavBar from './components/NavBar'; import Content from "./pages/Content"; import { useState, useEffect, useCallback } from 'react'; import AudioPlayer from './components/AudioPlayer'; -import FavoritesPage from './pages/FavouritesPage'; +import FavouritesPage from './pages/FavouritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' From a866bbd463ff67fa1cd1d2ea82bbf77b1a81fb87 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 21:24:03 +0200 Subject: [PATCH 139/323] Fix: Remove onShowClick from favouritesPage Props --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index c64e80c3f..fbcbe4d73 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -231,7 +231,6 @@ function App() { From 0c620bfa979d2bdaea499e388432612ddd84e5db Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 21:25:29 +0200 Subject: [PATCH 140/323] Fix: Comment out propstypes in favourites page to begin migrating state logic to redux --- src/pages/FavouritesPage.jsx | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 6432a80ae..c76b8c547 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -92,22 +92,22 @@ const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onBackToShows, search ); }; -FavoritesPage.propTypes = { - favoriteEpisodes: PropTypes.arrayOf( - PropTypes.shape({ - showId: PropTypes.string.isRequired, - showTitle: PropTypes.string.isRequired, - seasonTitle: PropTypes.string.isRequired, - episodeTitle: PropTypes.string.isRequired, - episodeNumber: PropTypes.number.isRequired, - savedAt: PropTypes.string.isRequired, - updated: PropTypes.string.isRequired, // Ensure updated is included - }) - ).isRequired, - toggleFavorite: PropTypes.func.isRequired, - onBackToShows: PropTypes.func.isRequired, - searchQuery: PropTypes.string.isRequired, - sortOption: PropTypes.oneOf(['A-Z', 'Z-A', 'newest', 'oldest']).isRequired, -}; +// FavoritesPage.propTypes = { +// favoriteEpisodes: PropTypes.arrayOf( +// PropTypes.shape({ +// showId: PropTypes.string.isRequired, +// showTitle: PropTypes.string.isRequired, +// seasonTitle: PropTypes.string.isRequired, +// episodeTitle: PropTypes.string.isRequired, +// episodeNumber: PropTypes.number.isRequired, +// savedAt: PropTypes.string.isRequired, +// updated: PropTypes.string.isRequired, // Ensure updated is included +// }) +// ).isRequired, +// toggleFavorite: PropTypes.func.isRequired, +// onBackToShows: PropTypes.func.isRequired, +// searchQuery: PropTypes.string.isRequired, +// sortOption: PropTypes.oneOf(['A-Z', 'Z-A', 'newest', 'oldest']).isRequired, +// }; export default FavoritesPage; From 0db0737f6f2152cd30ae2a5ee8c40d96a9ab2807 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 21:32:42 +0200 Subject: [PATCH 141/323] Fix: uncomment episode list in PodcastDetailsModal to migrate functions within to redux --- src/components/PodcastDetailsModal.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 6ee8188e0..874b8180d 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -180,7 +180,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc - {/* + {selectedSeason && selectedSeason.episodes.map((episode) => ( handleToggleFavorite(episode)}> @@ -209,7 +209,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc ))} - */} + From 13ce4ccc9c00b942620ee1d9977e23a86f7d6c9b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 21:57:17 +0200 Subject: [PATCH 142/323] Fix: modify favourites slice to toggle favourites instead of using seperate adding/removing functions --- src/components/PodcastDetailsModal.jsx | 3 +++ src/state/favouritesSlice.js | 13 +++++++------ 2 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 874b8180d..b76a79c3a 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -21,9 +21,12 @@ import PropTypes from 'prop-types'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; +import { useSelector, useDispatch } from 'react-redux' +import { addFavourite, removeFavourite } from '../state/favouritesSlice'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { + const dispatch = useDispatch() const [selectedSeason, setSelectedSeason] = useState(null); const [imageLoading, setImageLoading] = useState(true) useEffect(() => { diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 9c24c8876..832258e60 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -14,15 +14,16 @@ const favouritesSlice = createSlice({ name: "favourites", initialState: loadFavourites(), reducers: { - addFavourite: (state, action) => { - if(!state.includes(action.payload)) + toggleFavourite: (state, action) => { + if(!state.includes(action.payload)) { state.push(action.payload) - }, - removeFavourite: (state, action) => { - return state.filter(fav => fav !== action.payload) + return state + } else { + return state.filter(fav => fav !== action.payload) + } }, } }) -export const { addFavourite, removeFavourite } = favouritesSlice.actions; +export const { toggleFavourite } = favouritesSlice.actions; export default favouritesSlice.reducer; \ No newline at end of file From b803fe4d3430ede6672bfa6eb27fcc5b19887781 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 22:41:41 +0200 Subject: [PATCH 143/323] Fix: Remove add/remove favourite import in PodcastDetailsModal and replace with toggle --- src/components/PodcastDetailsModal.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index b76a79c3a..1ad49a4ac 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -22,11 +22,12 @@ import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; import { useSelector, useDispatch } from 'react-redux' -import { addFavourite, removeFavourite } from '../state/favouritesSlice'; +import { toggleFavourite } from '../state/favouritesSlice'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { const dispatch = useDispatch() + const Favourites = useSelector((state) => state.favourites) const [selectedSeason, setSelectedSeason] = useState(null); const [imageLoading, setImageLoading] = useState(true) useEffect(() => { @@ -186,8 +187,8 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc {selectedSeason && selectedSeason.episodes.map((episode) => ( - handleToggleFavorite(episode)}> - {isFavorite(episode) ? : } + dispatch(toggleFavorite(episode))}> + {Favourites.includes(episode) ? : } Date: Fri, 7 Feb 2025 22:58:11 +0200 Subject: [PATCH 144/323] Feat: create audioPlayerSlice logic --- src/state/audioPlayerSlice.js | 46 ++++++++++++++++++++++++++++++----- 1 file changed, 40 insertions(+), 6 deletions(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 7f2ab99b5..33d9c5190 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -1,8 +1,42 @@ import { createSlice } from "@reduxjs/toolkit"; -const initialState = { - currentEpisode: null, - isPlaying: false, - playingShow: null, - episodeTimestamps: null, -} \ No newline at end of file +const loadTimestamps = () => { + try { + const timestamps = localStorage.getItem("timestamps"); + return timestamps ? JSON.parse(timestamps) : {}; + } catch (error) { + console.error("Error loading timestamps from storage", error) + return {} + } +} + + +const audioPlayerSlice = createSlice({ + name: "audioPlayer", + initialState: { + currentEpisode: null, + isPlaying: false, + playingShow: null, + volume: 50, + timestamps: loadTimestamps(), + }, + reducers: { + setCurrentEpisode: (state, action) => { + state.currentEpisode = action.payload + }, + setIsPlaying: (state, action) => { + state.isPlaying = action.payload + }, + setVolume: (state, action) => { + state.volume = action.payload + }, + saveTimestamp: (state, action) => { + const { episodeId, timestamp } = action.payload; + state.timestamps[episodeId] = timestamp; + } + } + +}) + +export const { setCurrentEpisode, setPlaying, setVolume, saveTimestamp } = audioPlayerSlice.actions; +export default audioPlayerSlice.reducer; \ No newline at end of file From 1de21c09132f5786b24aca47f9dd97a239efbaa8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 23:01:29 +0200 Subject: [PATCH 145/323] Feat: Update localStorageMiddleware to include logic for timestamps --- src/middleware/localStorageMiddleware.js | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/middleware/localStorageMiddleware.js b/src/middleware/localStorageMiddleware.js index b4463f060..d07cf1acb 100644 --- a/src/middleware/localStorageMiddleware.js +++ b/src/middleware/localStorageMiddleware.js @@ -6,6 +6,11 @@ const localStorageMiddleware = store => next => action => { localStorage.setItem("favourites", JSON.stringify(state.favourites)); } + if (action.type.startsWith("audioPlayer/saveTimestamp")) { + const state = store.getState(); + localStorage.setItem("timestamps", JSON.stringify(state.audioPlayer.timestamps)) + } + return result; } From 2ab98915a5500f1b698a13bda94393292d3953c0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 23:06:27 +0200 Subject: [PATCH 146/323] Fix: Add audioPlayerReducer to store --- src/components/PodcastDetailsModal.jsx | 6 ++++-- src/store/store.js | 2 ++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 1ad49a4ac..625dd1d4a 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -23,11 +23,13 @@ import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; +import { saveTimestamp } from '../state/audioPlayerSlice'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { const dispatch = useDispatch() - const Favourites = useSelector((state) => state.favourites) + const favourites = useSelector((state) => state.favourites) + const timestamps = useSelector((state) => state.audioPlayer.timestamps) const [selectedSeason, setSelectedSeason] = useState(null); const [imageLoading, setImageLoading] = useState(true) useEffect(() => { @@ -188,7 +190,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc {selectedSeason && selectedSeason.episodes.map((episode) => ( dispatch(toggleFavorite(episode))}> - {Favourites.includes(episode) ? : } + {favourites.includes(episode) ? : } From 391b52fc435174fd52837150ddf83b3de77c310e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 23:15:27 +0200 Subject: [PATCH 147/323] Feat: Add redux state management logic for listened episodes --- src/components/PodcastDetailsModal.jsx | 4 ++-- src/middleware/localStorageMiddleware.js | 5 +++++ src/state/audioPlayerSlice.js | 11 +++++++++++ 3 files changed, 18 insertions(+), 2 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 625dd1d4a..14fb792f8 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -197,9 +197,9 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc secondary={ <> {episode.description} - {episodeTimestamps[show.id] && episodeTimestamps[show.id][episode.title] && ( + {timestamps[show.id] && timestamps[show.id][episode.title] && ( - Last played: {formatTime(episodeTimestamps[show.id][episode.title])} + Last played: {formatTime(timestamps[show.id][episode.title])} )} diff --git a/src/middleware/localStorageMiddleware.js b/src/middleware/localStorageMiddleware.js index d07cf1acb..82f1d0c70 100644 --- a/src/middleware/localStorageMiddleware.js +++ b/src/middleware/localStorageMiddleware.js @@ -10,6 +10,11 @@ const localStorageMiddleware = store => next => action => { const state = store.getState(); localStorage.setItem("timestamps", JSON.stringify(state.audioPlayer.timestamps)) } + + if (action.type.startsWith("audioPlayer/listenedEpisodes")) { + const state = store.getState(); + localStorage.setItem("listenedEpisodes", JSON.stringify(state.audioPlayer.listenedEpisodes)) + } return result; } diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 33d9c5190..4b9dc1903 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -10,6 +10,16 @@ const loadTimestamps = () => { } } +const loadListenedEpisodes = () => { + try { + const listenedEpisodes = localStorage.getItem("listenedEpisodes"); + return listenedEpisodes ? JSON.parse(listenedEpisodes) : {}; + } catch (error) { + console.error("Error loading the listened episodes from storage", error) + return {} + } +} + const audioPlayerSlice = createSlice({ name: "audioPlayer", @@ -19,6 +29,7 @@ const audioPlayerSlice = createSlice({ playingShow: null, volume: 50, timestamps: loadTimestamps(), + listenedEpisodes: loadListenedEpisodes() }, reducers: { setCurrentEpisode: (state, action) => { From fd004d7ab72837cd084e41166cb58276a20d0a89 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 23:21:11 +0200 Subject: [PATCH 148/323] Fix: Add temp logic for setting episode as listened in redux --- src/state/audioPlayerSlice.js | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 4b9dc1903..ff309ad01 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -44,6 +44,10 @@ const audioPlayerSlice = createSlice({ saveTimestamp: (state, action) => { const { episodeId, timestamp } = action.payload; state.timestamps[episodeId] = timestamp; + }, + setEpisodeAsListened: (state, action) => { + const { show, episode } = action.payload + state.listenedEpisodes[show] = episode } } From b233d3fa03b6f80bf9d46215ca124027c192c6bb Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 23:21:54 +0200 Subject: [PATCH 149/323] Fix: Export setEpisodeAsListened reducer --- src/state/audioPlayerSlice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index ff309ad01..74d040642 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -53,5 +53,5 @@ const audioPlayerSlice = createSlice({ }) -export const { setCurrentEpisode, setPlaying, setVolume, saveTimestamp } = audioPlayerSlice.actions; +export const { setCurrentEpisode, setPlaying, setVolume, saveTimestamp, setEpisodeAsListened } = audioPlayerSlice.actions; export default audioPlayerSlice.reducer; \ No newline at end of file From 5c0c87d0ae09e032752f326096503c2cec4d114a Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 23:24:19 +0200 Subject: [PATCH 150/323] Fix: remove unused favourite logic from podcast slice --- src/components/PodcastDetailsModal.jsx | 2 +- src/state/podcastSlice.js | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 14fb792f8..d311070b7 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -23,7 +23,7 @@ import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; -import { saveTimestamp } from '../state/audioPlayerSlice'; +import { saveTimestamp, setEpisodeAsListened } from '../state/audioPlayerSlice'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index 8fbc90b4a..9675fb554 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -59,9 +59,6 @@ const podcastSlice = createSlice({ setSelectedPodcastData(state, action) { state.selectedPodcastData = action.payload }, - setEpisodeAsFavourite(state, action) { - - } }, extraReducers: (builder) => { builder From 39e65bdb69cd5c381af926559d132b38be368e7f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 7 Feb 2025 23:36:22 +0200 Subject: [PATCH 151/323] Fix: Typo in toggle favourite import and usage --- src/components/PodcastDetailsModal.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index d311070b7..d8625e369 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -26,10 +26,11 @@ import { toggleFavourite } from '../state/favouritesSlice'; import { saveTimestamp, setEpisodeAsListened } from '../state/audioPlayerSlice'; -const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, listenedEpisodes, episodeTimestamps }) => { +const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, episodeTimestamps }) => { const dispatch = useDispatch() const favourites = useSelector((state) => state.favourites) const timestamps = useSelector((state) => state.audioPlayer.timestamps) + const listenedEpisodes = useSelector((state) => state.audioPlayer.listenedEpisodes) const [selectedSeason, setSelectedSeason] = useState(null); const [imageLoading, setImageLoading] = useState(true) useEffect(() => { @@ -189,7 +190,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc {selectedSeason && selectedSeason.episodes.map((episode) => ( - dispatch(toggleFavorite(episode))}> + dispatch(toggleFavourite(episode))}> {favourites.includes(episode) ? : } - {isListened(episode) && ( + {listenedEpisodes.includes(episode) && ( )} onPlayEpisode(episode)}> From aa4fd34f9933a9f9b416e04be39d78175300a707 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 01:07:30 +0200 Subject: [PATCH 152/323] Fix: Create selectIsFavourite selector in favouritesSlice and change structure of favourites object --- src/components/PodcastDetailsModal.jsx | 30 ++++++++++++++++++++++---- src/pages/FavouritesPage.jsx | 2 ++ src/state/favouritesSlice.js | 16 +++++++++----- 3 files changed, 39 insertions(+), 9 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index d8625e369..b7b7ac1e1 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -24,6 +24,7 @@ import ErrorPage from '../pages/ErrorPage'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; import { saveTimestamp, setEpisodeAsListened } from '../state/audioPlayerSlice'; +import { selectIsFavourite } from "../state/favouritesSlice"; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, episodeTimestamps }) => { @@ -190,8 +191,22 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc {selectedSeason && selectedSeason.episodes.map((episode) => ( - dispatch(toggleFavourite(episode))}> - {favourites.includes(episode) ? : } + dispatch(toggleFavourite({ + showId: show.id, + showTitle: show.title, + seasonTitle: selectedSeason.title, + episodeTitle: episode.title, + episodeNumber: episode.episode, + updated: show.updated + }))}> + {favourites.indexOf({ + showId: show.id, + showTitle: show.title, + seasonTitle: selectedSeason.title, + episodeTitle: episode.title, + episodeNumber: episode.episode, + updated: show.updated + }) === -1 ? : } - {listenedEpisodes.includes(episode) && ( + {/* {listenedEpisodes.indexOf({ + showId: show.id, + showTitle: show.title, + seasonTitle: selectedSeason.title, + episodeTitle: episode.title, + episodeNumber: episode.episode, + updated: show.updated + }) !== -1 && ( - )} + )} */} onPlayEpisode(episode)}> diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index c76b8c547..284501b54 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -3,8 +3,10 @@ import { Box, Typography, Button, IconButton, List, ListItem, ListItemText, List import DeleteIcon from '@mui/icons-material/Delete'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "../utils/sortUtils"; import PropTypes from 'prop-types'; +import { useSelector } from 'react-redux'; const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onBackToShows, searchQuery, sortOption }) => { + const favourites = useSelector((state) => state.favourites) const [sortedFavorites, setSortedFavorites] = useState([]); useEffect(() => { diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 832258e60..8efe53082 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -1,4 +1,4 @@ -import { createSlice } from "@reduxjs/toolkit"; +import { createSlice, createSelector } from "@reduxjs/toolkit"; const loadFavourites = () => { try { @@ -10,20 +10,26 @@ const loadFavourites = () => { } }; +const selectIsFavourite = createSelector( + [(state) => state.favourites, (_, showId, episodeNumber) => ({showId, episodeNumber})], + (favourites, { showId, episodeNumber }) => favourites.some(fav => fav.showId === showId && fav.episodeNumber === episodeNumber)) + const favouritesSlice = createSlice({ name: "favourites", initialState: loadFavourites(), reducers: { toggleFavourite: (state, action) => { - if(!state.includes(action.payload)) { - state.push(action.payload) - return state + const existingIndex = state.findIndex(fav => fav.showId === action.payload.showId && fav.episodeNumber === action.payload.episodeNumber) + + if (existingIndex === -1) { + state.push(action.payload); } else { - return state.filter(fav => fav !== action.payload) + state.splice(existingIndex, 1); } }, } }) export const { toggleFavourite } = favouritesSlice.actions; +export { selectIsFavourite } export default favouritesSlice.reducer; \ No newline at end of file From 09368208c59da0a59c653da7569a8e2f9916ff41 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 01:11:47 +0200 Subject: [PATCH 153/323] Fix: Implement isFavourite check for favourite icon using custom selector --- src/components/PodcastDetailsModal.jsx | 10 ++-------- 1 file changed, 2 insertions(+), 8 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index b7b7ac1e1..8acf9785f 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -30,6 +30,7 @@ import { selectIsFavourite } from "../state/favouritesSlice"; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, episodeTimestamps }) => { const dispatch = useDispatch() const favourites = useSelector((state) => state.favourites) + const isFavourite = useSelector(state => selectIsFavourite(state, show.id, episode.episode)) const timestamps = useSelector((state) => state.audioPlayer.timestamps) const listenedEpisodes = useSelector((state) => state.audioPlayer.listenedEpisodes) const [selectedSeason, setSelectedSeason] = useState(null); @@ -199,14 +200,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc episodeNumber: episode.episode, updated: show.updated }))}> - {favourites.indexOf({ - showId: show.id, - showTitle: show.title, - seasonTitle: selectedSeason.title, - episodeTitle: episode.title, - episodeNumber: episode.episode, - updated: show.updated - }) === -1 ? : } + { isFavourite ? : } Date: Sat, 8 Feb 2025 01:20:33 +0200 Subject: [PATCH 154/323] Fix: Implement a handler function to replace the dispatch call in the jsx --- src/components/PodcastDetailsModal.jsx | 21 +++++++++++++-------- 1 file changed, 13 insertions(+), 8 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 8acf9785f..f5794dac5 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -35,6 +35,18 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc const listenedEpisodes = useSelector((state) => state.audioPlayer.listenedEpisodes) const [selectedSeason, setSelectedSeason] = useState(null); const [imageLoading, setImageLoading] = useState(true) + + const handleToggleFavourite = (episode) => { + dispatch(toggleFavourite({ + showId: show.id, + showTitle: show.title, + seasonTitle: selectedSeason.title, + episodeTitle: episode.title, + episodeNumber: episode.episode, + updated: show.updated + })); + }; + useEffect(() => { setImageLoading(true); }, [selectedSeason, show]); @@ -192,14 +204,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc {selectedSeason && selectedSeason.episodes.map((episode) => ( - dispatch(toggleFavourite({ - showId: show.id, - showTitle: show.title, - seasonTitle: selectedSeason.title, - episodeTitle: episode.title, - episodeNumber: episode.episode, - updated: show.updated - }))}> + handleToggleFavourite(episode)}> { isFavourite ? : } Date: Sat, 8 Feb 2025 01:23:33 +0200 Subject: [PATCH 155/323] Fix: Remove old unused handleToggleFavourite --- src/components/PodcastDetailsModal.jsx | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index f5794dac5..7d8ff78ea 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -64,17 +64,6 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc } }, [show]); - const handleToggleFavorite = (episode) => { - toggleFavorite({ - showId: show.id, - showTitle: show.title, - seasonTitle: selectedSeason.title, - episodeTitle: episode.title, - episodeNumber: episode.episode, - updated: show.updated - }); - }; - // const isFavorite = (episode) => { // return favoriteEpisodes.some(fav => // fav.showId === show.id && From d9f7784553b713a8fc22ace6b987bbb37f2256ce Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 01:45:28 +0200 Subject: [PATCH 156/323] Fix: Add handling to favourites slice for when show or episode are undefined/null ie on first load --- src/state/favouritesSlice.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 8efe53082..01a1d8d32 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -12,7 +12,10 @@ const loadFavourites = () => { const selectIsFavourite = createSelector( [(state) => state.favourites, (_, showId, episodeNumber) => ({showId, episodeNumber})], - (favourites, { showId, episodeNumber }) => favourites.some(fav => fav.showId === showId && fav.episodeNumber === episodeNumber)) + (favourites, { showId, episodeNumber }) => { if(!showId || !episodeNumber) { + return false; + } return favourites.some(fav => fav.showId === showId && fav.episodeNumber === episodeNumber); +}) const favouritesSlice = createSlice({ name: "favourites", From ae8c564cf9ede6a5125fbd7eb737972d4046f23e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 17:48:21 +0200 Subject: [PATCH 157/323] Fix: Prep to build episode component to map over --- src/components/PodcastDetailsModal.jsx | 74 +++++++++++++------------- 1 file changed, 38 insertions(+), 36 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 7d8ff78ea..85495dd6d 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -30,7 +30,7 @@ import { selectIsFavourite } from "../state/favouritesSlice"; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, episodeTimestamps }) => { const dispatch = useDispatch() const favourites = useSelector((state) => state.favourites) - const isFavourite = useSelector(state => selectIsFavourite(state, show.id, episode.episode)) + const timestamps = useSelector((state) => state.audioPlayer.timestamps) const listenedEpisodes = useSelector((state) => state.audioPlayer.listenedEpisodes) const [selectedSeason, setSelectedSeason] = useState(null); @@ -190,42 +190,44 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc - - {selectedSeason && selectedSeason.episodes.map((episode) => ( - - handleToggleFavourite(episode)}> - { isFavourite ? : } - - - {episode.description} - {timestamps[show.id] && timestamps[show.id][episode.title] && ( - - Last played: {formatTime(timestamps[show.id][episode.title])} - - )} - - } - /> - - {/* {listenedEpisodes.indexOf({ - showId: show.id, - showTitle: show.title, - seasonTitle: selectedSeason.title, - episodeTitle: episode.title, - episodeNumber: episode.episode, - updated: show.updated - }) !== -1 && ( - - )} */} - onPlayEpisode(episode)}> - + + {selectedSeason && selectedSeason.episodes.map((episode) => { + return ( + + handleToggleFavourite(episode)}> + { isFavourite ? : } - - - ))} + + {episode.description} + {timestamps[show.id] && timestamps[show.id][episode.title] && ( + + Last played: {formatTime(timestamps[show.id][episode.title])} + + )} + + } + /> + + {/* {listenedEpisodes.indexOf({ + showId: show.id, + showTitle: show.title, + seasonTitle: selectedSeason.title, + episodeTitle: episode.title, + episodeNumber: episode.episode, + updated: show.updated + }) !== -1 && ( + + )} */} + onPlayEpisode(episode)}> + + + + + + )})} From e4035783309ece42d2149bb3c86e4f2c53f4c733 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 18:10:49 +0200 Subject: [PATCH 158/323] Feat: First rough draft for episode component --- src/components/Episode.jsx | 50 ++++++++++++++++++++++++++ src/components/PodcastDetailsModal.jsx | 38 +------------------- 2 files changed, 51 insertions(+), 37 deletions(-) create mode 100644 src/components/Episode.jsx diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx new file mode 100644 index 000000000..8599e645c --- /dev/null +++ b/src/components/Episode.jsx @@ -0,0 +1,50 @@ +import { + Typography, + ListItem, + ListItemText, + ListItemSecondaryAction, + IconButton, +} from '@mui/material'; + +const Episode = () => { + + return ( + <> + + handleToggleFavourite(episode)}> + { isFavourite ? : } + + + {episode.description} + {timestamps[show.id] && timestamps[show.id][episode.title] && ( + + Last played: {formatTime(timestamps[show.id][episode.title])} + + )} + + } + /> + + {/* {listenedEpisodes.indexOf({ + showId: show.id, + showTitle: show.title, + seasonTitle: selectedSeason.title, + episodeTitle: episode.title, + episodeNumber: episode.episode, + updated: show.updated + }) !== -1 && ( + + )} */} + onPlayEpisode(episode)}> + + + + + + ) +} + +export default Episode \ No newline at end of file diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 85495dd6d..178723469 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -191,43 +191,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc - {selectedSeason && selectedSeason.episodes.map((episode) => { - return ( - - handleToggleFavourite(episode)}> - { isFavourite ? : } - - - {episode.description} - {timestamps[show.id] && timestamps[show.id][episode.title] && ( - - Last played: {formatTime(timestamps[show.id][episode.title])} - - )} - - } - /> - - {/* {listenedEpisodes.indexOf({ - showId: show.id, - showTitle: show.title, - seasonTitle: selectedSeason.title, - episodeTitle: episode.title, - episodeNumber: episode.episode, - updated: show.updated - }) !== -1 && ( - - )} */} - onPlayEpisode(episode)}> - - - - - - )})} + From abd6ac7ec519c40cf2e24b7627d2611fa4712bbb Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 18:14:55 +0200 Subject: [PATCH 159/323] Feat: Begin migrating episode related state and logic to episode component --- src/components/Episode.jsx | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 8599e645c..5db1c54bc 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -5,8 +5,35 @@ import { ListItemSecondaryAction, IconButton, } from '@mui/material'; +import { useSelector, useDispatch } from 'react-redux' +import { toggleFavourite } from '../state/favouritesSlice'; +import { saveTimestamp, setEpisodeAsListened } from '../state/audioPlayerSlice'; +import { selectIsFavourite } from "../state/favouritesSlice"; const Episode = () => { + const dispatch = useDispatch() + const favourites = useSelector((state) => state.favourites) + + const timestamps = useSelector((state) => state.audioPlayer.timestamps) + const listenedEpisodes = useSelector((state) => state.audioPlayer.listenedEpisodes) + + const handleToggleFavourite = (episode) => { + dispatch(toggleFavourite({ + showId: show.id, + showTitle: show.title, + seasonTitle: selectedSeason.title, + episodeTitle: episode.title, + episodeNumber: episode.episode, + updated: show.updated + })); + }; + + const formatTime = (seconds) => { + const hours = Math.floor(seconds / 3600); + const minutes = Math.floor((seconds % 3600) / 60); + const remainingSeconds = seconds % 60; + return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`; + }; return ( <> From e95447893571e2c19472d7495acc7609de586b55 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 18:17:25 +0200 Subject: [PATCH 160/323] Feat: create logic to manage selected season within podcast slice/ redux state --- src/state/podcastSlice.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index 9675fb554..4e4159b3a 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -18,6 +18,7 @@ const initialState = { selectedPodcastData: null, favouriteEpisodes: null, listenedEpisodes: null, + selectedSeason: null, } const podcastSlice = createSlice({ @@ -59,6 +60,9 @@ const podcastSlice = createSlice({ setSelectedPodcastData(state, action) { state.selectedPodcastData = action.payload }, + setSelectedSeason(state, action) { + state.selectedSeason = action.payload + } }, extraReducers: (builder) => { builder @@ -115,5 +119,5 @@ const podcastSlice = createSlice({ } }) -export const { setSortOption, setFilterOption, setSearchTerm, setSelectedPodcastId, setModalOpen, setSelectedPodcastData } = podcastSlice.actions; +export const { setSortOption, setFilterOption, setSearchTerm, setSelectedPodcastId, setModalOpen, setSelectedPodcastData, setSelectedSeason } = podcastSlice.actions; export default podcastSlice.reducer; \ No newline at end of file From 7ed2d5544056c70a112556c83bca994b95606fb8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 18:40:07 +0200 Subject: [PATCH 161/323] Fix: undo migrating selectSeason to redux, keep it as useState --- src/components/PodcastDetailsModal.jsx | 2 +- src/state/podcastSlice.js | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 178723469..2534afed9 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -33,7 +33,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc const timestamps = useSelector((state) => state.audioPlayer.timestamps) const listenedEpisodes = useSelector((state) => state.audioPlayer.listenedEpisodes) - const [selectedSeason, setSelectedSeason] = useState(null); + const [ selectedSeason, setSelectedSeason ] = useState(null) const [imageLoading, setImageLoading] = useState(true) const handleToggleFavourite = (episode) => { diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index 4e4159b3a..c6de75e77 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -18,7 +18,6 @@ const initialState = { selectedPodcastData: null, favouriteEpisodes: null, listenedEpisodes: null, - selectedSeason: null, } const podcastSlice = createSlice({ @@ -60,9 +59,6 @@ const podcastSlice = createSlice({ setSelectedPodcastData(state, action) { state.selectedPodcastData = action.payload }, - setSelectedSeason(state, action) { - state.selectedSeason = action.payload - } }, extraReducers: (builder) => { builder From 3ba59345d4b1f95a2b475555ebf0230354f8e7a6 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 18:44:12 +0200 Subject: [PATCH 162/323] Fix: Remove now irrelevant imports into PodcastDetailsModal --- src/components/Episode.jsx | 3 +++ src/components/PodcastDetailsModal.jsx | 10 ---------- 2 files changed, 3 insertions(+), 10 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 5db1c54bc..5f6095f67 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -9,6 +9,9 @@ import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; import { saveTimestamp, setEpisodeAsListened } from '../state/audioPlayerSlice'; import { selectIsFavourite } from "../state/favouritesSlice"; +import PlayArrowIcon from '@mui/icons-material/PlayArrow'; +import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; +import FavoriteIcon from '@mui/icons-material/Favorite'; const Episode = () => { const dispatch = useDispatch() diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 2534afed9..51e8f009c 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -8,23 +8,13 @@ import { Select, MenuItem, List, - ListItem, - ListItemText, - ListItemSecondaryAction, - IconButton, Chip, } from '@mui/material'; -import PlayArrowIcon from '@mui/icons-material/PlayArrow'; -import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; -import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types'; -import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; -import { saveTimestamp, setEpisodeAsListened } from '../state/audioPlayerSlice'; -import { selectIsFavourite } from "../state/favouritesSlice"; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, episodeTimestamps }) => { From 9cd05144998b25b029d63f9ffa5786a452d209fd Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 19:09:09 +0200 Subject: [PATCH 163/323] Fix: Add proptypes to episode component --- src/components/Episode.jsx | 9 ++++++++- src/components/PodcastDetailsModal.jsx | 7 +++++++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 5f6095f67..a25f8ce1c 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -12,8 +12,10 @@ import { selectIsFavourite } from "../state/favouritesSlice"; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import FavoriteIcon from '@mui/icons-material/Favorite'; +import PropTypes from 'prop-types' -const Episode = () => { +const Episode = ({ show, episode }) => { + const isFavourite = useSelector(state => selectIsEpisodeFavourite(state, show?.id, episode?.episode)); const dispatch = useDispatch() const favourites = useSelector((state) => state.favourites) @@ -77,4 +79,9 @@ const Episode = () => { ) } +Episode.propTypes = { + show: PropTypes.object, + episode: PropTypes.object, +}; + export default Episode \ No newline at end of file diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 51e8f009c..0c6f60d6e 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -13,6 +13,7 @@ import { import PropTypes from 'prop-types'; import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; +import Episode from './Episode'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; @@ -181,6 +182,12 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc + {selectedSeason && selectedSeason.episodes.map((episode) => { + + })} From a9dcbacf7c25dece60c1f4d80a981c2c348b88ed Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 19:13:23 +0200 Subject: [PATCH 164/323] Fix: Add selectedSeason prop to component and fix typo in isFavourite function --- src/components/Episode.jsx | 5 +++-- src/components/PodcastDetailsModal.jsx | 1 + 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index a25f8ce1c..0a747ba92 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -14,8 +14,8 @@ import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types' -const Episode = ({ show, episode }) => { - const isFavourite = useSelector(state => selectIsEpisodeFavourite(state, show?.id, episode?.episode)); +const Episode = ({ show, episode, selectedSeason }) => { + const isFavourite = useSelector(state => selectIsFavourite(state, show?.id, episode?.episode)); const dispatch = useDispatch() const favourites = useSelector((state) => state.favourites) @@ -82,6 +82,7 @@ const Episode = ({ show, episode }) => { Episode.propTypes = { show: PropTypes.object, episode: PropTypes.object, + selectedSeason: PropTypes.number }; export default Episode \ No newline at end of file diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 0c6f60d6e..b3efb78bd 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -186,6 +186,7 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc })} From 932e753b4cefae71eccb5f82e4a9b7dbf8a41485 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 19:14:21 +0200 Subject: [PATCH 165/323] Fix: remove timestamps from PodcastDetailsModal --- src/components/PodcastDetailsModal.jsx | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index b3efb78bd..38dcecc7c 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -21,8 +21,6 @@ import { toggleFavourite } from '../state/favouritesSlice'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, episodeTimestamps }) => { const dispatch = useDispatch() const favourites = useSelector((state) => state.favourites) - - const timestamps = useSelector((state) => state.audioPlayer.timestamps) const listenedEpisodes = useSelector((state) => state.audioPlayer.listenedEpisodes) const [ selectedSeason, setSelectedSeason ] = useState(null) const [imageLoading, setImageLoading] = useState(true) From 10ef6c4ea8b2268f077a970939a55c1e336d49eb Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 19:15:15 +0200 Subject: [PATCH 166/323] Fix: remove isFavourite handler function from PodcastDetailsModal --- src/components/PodcastDetailsModal.jsx | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 38dcecc7c..2f2d0084e 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -25,17 +25,6 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc const [ selectedSeason, setSelectedSeason ] = useState(null) const [imageLoading, setImageLoading] = useState(true) - const handleToggleFavourite = (episode) => { - dispatch(toggleFavourite({ - showId: show.id, - showTitle: show.title, - seasonTitle: selectedSeason.title, - episodeTitle: episode.title, - episodeNumber: episode.episode, - updated: show.updated - })); - }; - useEffect(() => { setImageLoading(true); }, [selectedSeason, show]); From e1191b1ed1c3609b2aad2bfc2e620f1eb96d5f10 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 19:56:39 +0200 Subject: [PATCH 167/323] Fix: Implement selector in audioPlayerSLice to check if episodes are listened --- src/components/Episode.jsx | 11 +++++++++-- src/state/audioPlayerSlice.js | 10 +++++++++- 2 files changed, 18 insertions(+), 3 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 0a747ba92..e425b1c43 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -7,7 +7,7 @@ import { } from '@mui/material'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; -import { saveTimestamp, setEpisodeAsListened } from '../state/audioPlayerSlice'; +import { saveTimestamp, setEpisodeAsListened, selectIsListened } from '../state/audioPlayerSlice'; import { selectIsFavourite } from "../state/favouritesSlice"; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; @@ -38,7 +38,14 @@ const Episode = ({ show, episode, selectedSeason }) => { const minutes = Math.floor((seconds % 3600) / 60); const remainingSeconds = seconds % 60; return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`; - }; + }; + + const isListened = (episode) => { + return listenedEpisodes.some(listened => + listened.showId === show.id && + listened.episodeTitle === episode.title + ); + }; return ( <> diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 74d040642..c16bde0e0 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -1,4 +1,4 @@ -import { createSlice } from "@reduxjs/toolkit"; +import { createSelector, createSlice } from "@reduxjs/toolkit"; const loadTimestamps = () => { try { @@ -20,6 +20,13 @@ const loadListenedEpisodes = () => { } } +const selectIsListened = createSelector( + [(state) => state.audioPlayer.listenedEpisodes, (_, showId, episodeNumber) => ({showId, episodeNumber})], + (listenedEpisodes, { showId, episodeNumber }) => { if(!showId || !episodeNumber) { + return false; + } return listenedEpisodes.some(episode => episode.showId === showId && episode.episodeNumber === episodeNumber); +}) + const audioPlayerSlice = createSlice({ name: "audioPlayer", @@ -54,4 +61,5 @@ const audioPlayerSlice = createSlice({ }) export const { setCurrentEpisode, setPlaying, setVolume, saveTimestamp, setEpisodeAsListened } = audioPlayerSlice.actions; +export { selectIsListened } export default audioPlayerSlice.reducer; \ No newline at end of file From 81c856826c5fc708cc741fffcf9db0d0ae27ce59 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 20:45:44 +0200 Subject: [PATCH 168/323] Fix: Change prop type of selectedSeason to object --- src/components/Episode.jsx | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index e425b1c43..e5476a08d 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -27,6 +27,7 @@ const Episode = ({ show, episode, selectedSeason }) => { showId: show.id, showTitle: show.title, seasonTitle: selectedSeason.title, + seasonNumber: selectedSeason.season, episodeTitle: episode.title, episodeNumber: episode.episode, updated: show.updated @@ -89,7 +90,7 @@ const Episode = ({ show, episode, selectedSeason }) => { Episode.propTypes = { show: PropTypes.object, episode: PropTypes.object, - selectedSeason: PropTypes.number + selectedSeason: PropTypes.object }; export default Episode \ No newline at end of file From a06d302964f82d2f73af9b43ba6842a6d60c7ade Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 20:47:12 +0200 Subject: [PATCH 169/323] Fix: Remove unnecessary fragment in episode component --- src/components/Episode.jsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index e5476a08d..b0ccc7318 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -48,9 +48,8 @@ const Episode = ({ show, episode, selectedSeason }) => { ); }; - return ( - <> - + return ( + handleToggleFavourite(episode)}> { isFavourite ? : } @@ -82,8 +81,7 @@ const Episode = ({ show, episode, selectedSeason }) => { - - + ) } From aeea91e07e79d557fc4802afc86e87b983c583b5 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 20:51:28 +0200 Subject: [PATCH 170/323] Feat: Add isListened selector to episode component --- src/components/Episode.jsx | 1 + 1 file changed, 1 insertion(+) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index b0ccc7318..3475b56d3 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -16,6 +16,7 @@ import PropTypes from 'prop-types' const Episode = ({ show, episode, selectedSeason }) => { const isFavourite = useSelector(state => selectIsFavourite(state, show?.id, episode?.episode)); + const isListened = useSelector(state => selectIsListened(state, show?.id, episode.episode)) const dispatch = useDispatch() const favourites = useSelector((state) => state.favourites) From 2398f66d8d8153b6347a0641951700deac827acc Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 20:53:41 +0200 Subject: [PATCH 171/323] Fix: add seasonNumber checks to isFavourite selector --- src/state/favouritesSlice.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 01a1d8d32..51f3afbb8 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -11,10 +11,10 @@ const loadFavourites = () => { }; const selectIsFavourite = createSelector( - [(state) => state.favourites, (_, showId, episodeNumber) => ({showId, episodeNumber})], - (favourites, { showId, episodeNumber }) => { if(!showId || !episodeNumber) { + [(state) => state.favourites, (_, showId, seasonNumber, episodeNumber) => ({showId, seasonNumber, episodeNumber})], + (favourites, { showId, seasonNumber, episodeNumber }) => { if(!showId || !seasonNumber || !episodeNumber) { return false; - } return favourites.some(fav => fav.showId === showId && fav.episodeNumber === episodeNumber); + } return favourites.some(fav => fav.showId === showId && fav.seasonNumber === seasonNumber && fav.episodeNumber === episodeNumber); }) const favouritesSlice = createSlice({ From 8778344ed9d564f3e17a947310d3c6df11b0dd3b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 20:55:18 +0200 Subject: [PATCH 172/323] Fix: Add seasonNumber checks to isListened selector --- src/state/audioPlayerSlice.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index c16bde0e0..831c85a49 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -21,10 +21,10 @@ const loadListenedEpisodes = () => { } const selectIsListened = createSelector( - [(state) => state.audioPlayer.listenedEpisodes, (_, showId, episodeNumber) => ({showId, episodeNumber})], - (listenedEpisodes, { showId, episodeNumber }) => { if(!showId || !episodeNumber) { + [(state) => state.audioPlayer.listenedEpisodes, (_, showId, seasonNumber, episodeNumber) => ({showId, seasonNumber, episodeNumber})], + (listenedEpisodes, { showId, seasonNumber, episodeNumber }) => { if(!showId || !seasonNumber || !episodeNumber) { return false; - } return listenedEpisodes.some(episode => episode.showId === showId && episode.episodeNumber === episodeNumber); + } return listenedEpisodes.some(episode => episode.showId === showId && episode.seasonNumber === seasonNumber && episode.episodeNumber === episodeNumber); }) From 058c38ace324e3b8c611bc5b93924643b9436111 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 20:58:32 +0200 Subject: [PATCH 173/323] Fix: implement new isListened selector into episode component --- src/components/Episode.jsx | 19 ++----------------- 1 file changed, 2 insertions(+), 17 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 3475b56d3..6f1bb5dc5 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -4,6 +4,7 @@ import { ListItemText, ListItemSecondaryAction, IconButton, + CheckCircleIcon } from '@mui/material'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; @@ -42,13 +43,6 @@ const Episode = ({ show, episode, selectedSeason }) => { return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`; }; - const isListened = (episode) => { - return listenedEpisodes.some(listened => - listened.showId === show.id && - listened.episodeTitle === episode.title - ); - }; - return ( handleToggleFavourite(episode)}> @@ -68,16 +62,7 @@ const Episode = ({ show, episode, selectedSeason }) => { } /> - {/* {listenedEpisodes.indexOf({ - showId: show.id, - showTitle: show.title, - seasonTitle: selectedSeason.title, - episodeTitle: episode.title, - episodeNumber: episode.episode, - updated: show.updated - }) !== -1 && ( - - )} */} + {isListened && ()} onPlayEpisode(episode)}> From 1513e0d632bc931730d9c7b50d0a18df02fe69ef Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 20:59:26 +0200 Subject: [PATCH 174/323] Fix: Reorganise state logic inside episode component --- src/components/Episode.jsx | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 6f1bb5dc5..066ff0253 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -17,12 +17,9 @@ import PropTypes from 'prop-types' const Episode = ({ show, episode, selectedSeason }) => { const isFavourite = useSelector(state => selectIsFavourite(state, show?.id, episode?.episode)); - const isListened = useSelector(state => selectIsListened(state, show?.id, episode.episode)) - const dispatch = useDispatch() - const favourites = useSelector((state) => state.favourites) - - const timestamps = useSelector((state) => state.audioPlayer.timestamps) - const listenedEpisodes = useSelector((state) => state.audioPlayer.listenedEpisodes) + const isListened = useSelector(state => selectIsListened(state, show?.id, episode.episode)); + const timestamps = useSelector((state) => state.audioPlayer.timestamps); + const dispatch = useDispatch(); const handleToggleFavourite = (episode) => { dispatch(toggleFavourite({ From 01b828263244e59d9bff8e39a925169ca7d70c89 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 21:11:57 +0200 Subject: [PATCH 175/323] Fix: Import check cirlce icon correctly --- src/components/Episode.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 066ff0253..ba40c7910 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -3,9 +3,9 @@ import { ListItem, ListItemText, ListItemSecondaryAction, - IconButton, - CheckCircleIcon + IconButton } from '@mui/material'; +import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; import { saveTimestamp, setEpisodeAsListened, selectIsListened } from '../state/audioPlayerSlice'; From ccdcf5696ab2fd12584629dae86427e694200cac Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 21:56:28 +0200 Subject: [PATCH 176/323] Fix: Restructure favourites and listened selectors --- src/components/Episode.jsx | 2 +- src/components/PodcastDetailsModal.jsx | 14 ++++++++------ src/state/audioPlayerSlice.js | 19 ++++++++++++++----- src/state/favouritesSlice.js | 19 ++++++++++++++----- 4 files changed, 37 insertions(+), 17 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index ba40c7910..6693f95e4 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -40,7 +40,7 @@ const Episode = ({ show, episode, selectedSeason }) => { return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`; }; - return ( + return ( handleToggleFavourite(episode)}> { isFavourite ? : } diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 2f2d0084e..21063d325 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -170,13 +170,15 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc {selectedSeason && selectedSeason.episodes.map((episode) => { - + return ( + + ); })} - diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 831c85a49..8473eff5d 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -21,11 +21,20 @@ const loadListenedEpisodes = () => { } const selectIsListened = createSelector( - [(state) => state.audioPlayer.listenedEpisodes, (_, showId, seasonNumber, episodeNumber) => ({showId, seasonNumber, episodeNumber})], - (listenedEpisodes, { showId, seasonNumber, episodeNumber }) => { if(!showId || !seasonNumber || !episodeNumber) { - return false; - } return listenedEpisodes.some(episode => episode.showId === showId && episode.seasonNumber === seasonNumber && episode.episodeNumber === episodeNumber); -}) + [ + (state) => state.audioPlayer.listenedEpisodes, + (_, showId) => showId, + (_, __, seasonNumber) => seasonNumber, + (_, __, ___, episodeNumber) => episodeNumber + ], + (listenedEpisodes, showId, seasonNumber, episodeNumber) => + listenedEpisodes.some( + (episode) => + episode.showId === showId && + episode.seasonNumber === seasonNumber && + episode.episodeNumber === episodeNumber + ) +); const audioPlayerSlice = createSlice({ diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 51f3afbb8..f8f238341 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -11,11 +11,20 @@ const loadFavourites = () => { }; const selectIsFavourite = createSelector( - [(state) => state.favourites, (_, showId, seasonNumber, episodeNumber) => ({showId, seasonNumber, episodeNumber})], - (favourites, { showId, seasonNumber, episodeNumber }) => { if(!showId || !seasonNumber || !episodeNumber) { - return false; - } return favourites.some(fav => fav.showId === showId && fav.seasonNumber === seasonNumber && fav.episodeNumber === episodeNumber); -}) + [ + (state) => state.favourites, + (_, showId) => showId, + (_, __, seasonNumber) => seasonNumber, + (_, __, ___, episodeNumber) => episodeNumber + ], + (favourites, showId, seasonNumber, episodeNumber) => + favourites.some( + (episode) => + episode.showId === showId && + episode.seasonNumber === seasonNumber && + episode.episodeNumber === episodeNumber + ) +); const favouritesSlice = createSlice({ name: "favourites", From 0b37ea8d4509258473978802611aea1f6cbd7b2b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 22:41:23 +0200 Subject: [PATCH 177/323] Fix: Set initial state of listenedEpisodes to array if no episodes listend to yet --- src/components/Episode.jsx | 5 +++-- src/state/audioPlayerSlice.js | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 6693f95e4..0eb4d7af6 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -16,8 +16,9 @@ import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types' const Episode = ({ show, episode, selectedSeason }) => { - const isFavourite = useSelector(state => selectIsFavourite(state, show?.id, episode?.episode)); - const isListened = useSelector(state => selectIsListened(state, show?.id, episode.episode)); + const isFavourite = useSelector(state => selectIsFavourite(state, show.id, episode.episode)); + const isListened = useSelector(state => selectIsListened(state, show.id, episode.episode)); + console.log(isListened) const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 8473eff5d..5e61bee97 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -3,7 +3,7 @@ import { createSelector, createSlice } from "@reduxjs/toolkit"; const loadTimestamps = () => { try { const timestamps = localStorage.getItem("timestamps"); - return timestamps ? JSON.parse(timestamps) : {}; + return timestamps ? JSON.parse(timestamps) : []; } catch (error) { console.error("Error loading timestamps from storage", error) return {} From 36b584c1de8cf0b5a2ecc6923044ec255241f002 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 22:43:38 +0200 Subject: [PATCH 178/323] Fix: Set listened episodes initial state to array --- src/state/audioPlayerSlice.js | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 5e61bee97..1b0b66aef 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -3,7 +3,7 @@ import { createSelector, createSlice } from "@reduxjs/toolkit"; const loadTimestamps = () => { try { const timestamps = localStorage.getItem("timestamps"); - return timestamps ? JSON.parse(timestamps) : []; + return timestamps ? JSON.parse(timestamps) : {}; } catch (error) { console.error("Error loading timestamps from storage", error) return {} @@ -13,7 +13,7 @@ const loadTimestamps = () => { const loadListenedEpisodes = () => { try { const listenedEpisodes = localStorage.getItem("listenedEpisodes"); - return listenedEpisodes ? JSON.parse(listenedEpisodes) : {}; + return listenedEpisodes ? JSON.parse(listenedEpisodes) : []; } catch (error) { console.error("Error loading the listened episodes from storage", error) return {} From e58959d5bc6f42bac99bf318102e293e7a67bb71 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 22:45:18 +0200 Subject: [PATCH 179/323] Fix: remove console log in episode for isListened and replace with console log for isFavourite --- src/components/Episode.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 0eb4d7af6..40256e4aa 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -18,7 +18,7 @@ import PropTypes from 'prop-types' const Episode = ({ show, episode, selectedSeason }) => { const isFavourite = useSelector(state => selectIsFavourite(state, show.id, episode.episode)); const isListened = useSelector(state => selectIsListened(state, show.id, episode.episode)); - console.log(isListened) + console.log(isFavourite) const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); From 57a19b9b2f410f6bfbd70e7d36611a1c8fd1f81a Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 22:50:39 +0200 Subject: [PATCH 180/323] Fix: pass season number to islistened and isfavourite selectors --- src/components/Episode.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 40256e4aa..6d40bc22f 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -16,8 +16,8 @@ import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types' const Episode = ({ show, episode, selectedSeason }) => { - const isFavourite = useSelector(state => selectIsFavourite(state, show.id, episode.episode)); - const isListened = useSelector(state => selectIsListened(state, show.id, episode.episode)); + const isFavourite = useSelector(state => selectIsFavourite(state, show.id, selectedSeason.season, episode.episode)); + const isListened = useSelector(state => selectIsListened(state, show.id, selectedSeason.season, episode.episode)); console.log(isFavourite) const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); From 892ba54c48c2a5548456466ad4358a49898ea187 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 22:53:13 +0200 Subject: [PATCH 181/323] Fix: Ternary for favourite icon logic was wrong way around --- src/components/Episode.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 6d40bc22f..5a11932de 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -44,7 +44,7 @@ const Episode = ({ show, episode, selectedSeason }) => { return ( handleToggleFavourite(episode)}> - { isFavourite ? : } + { isFavourite ? : } Date: Sat, 8 Feb 2025 22:58:28 +0200 Subject: [PATCH 182/323] Feat: Favourites working now through redux --- src/components/Episode.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 5a11932de..bdc91a020 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -18,7 +18,6 @@ import PropTypes from 'prop-types' const Episode = ({ show, episode, selectedSeason }) => { const isFavourite = useSelector(state => selectIsFavourite(state, show.id, selectedSeason.season, episode.episode)); const isListened = useSelector(state => selectIsListened(state, show.id, selectedSeason.season, episode.episode)); - console.log(isFavourite) const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); From de7e869d5edf960220a5fbbb36aa6449ce2b816d Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 23:35:29 +0200 Subject: [PATCH 183/323] Fix: Add seasonNumber to toggleFavourite logic to fix bug where same episodes across seasons get deleted --- src/components/Episode.jsx | 12 ++++++++++++ src/state/favouritesSlice.js | 2 +- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index bdc91a020..f2e7aae23 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -21,6 +21,18 @@ const Episode = ({ show, episode, selectedSeason }) => { const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); + const episodeDetails = { + showId: show.id, + showTitle: show.title, + seasonTitle: selectedSeason.title, + seasonNumber: selectedSeason.season, + episodeTitle: episode.title, + episodeNumber: episode.episode, + updated: show.updated + } + + console.log(episodeDetails) + const handleToggleFavourite = (episode) => { dispatch(toggleFavourite({ showId: show.id, diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index f8f238341..852b976d2 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -31,7 +31,7 @@ const favouritesSlice = createSlice({ initialState: loadFavourites(), reducers: { toggleFavourite: (state, action) => { - const existingIndex = state.findIndex(fav => fav.showId === action.payload.showId && fav.episodeNumber === action.payload.episodeNumber) + const existingIndex = state.findIndex(fav => fav.showId === action.payload.showId && fav.seasonNumber === action.payload.seasonNumber && fav.episodeNumber === action.payload.episodeNumber) if (existingIndex === -1) { state.push(action.payload); From 0af143275c6aa22a4d16aa999dac6608c36538b9 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 23:37:23 +0200 Subject: [PATCH 184/323] Feat: Favourites adding and removing working --- src/components/PodcastDetailsModal.jsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 21063d325..81823354d 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -19,9 +19,6 @@ import { toggleFavourite } from '../state/favouritesSlice'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, episodeTimestamps }) => { - const dispatch = useDispatch() - const favourites = useSelector((state) => state.favourites) - const listenedEpisodes = useSelector((state) => state.audioPlayer.listenedEpisodes) const [ selectedSeason, setSelectedSeason ] = useState(null) const [imageLoading, setImageLoading] = useState(true) From bf5ec0074741fd2e22935a1d4e27e4de4c30434c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 23:42:16 +0200 Subject: [PATCH 185/323] Fix: Set handleToggleFavourite to take variable episodeDetails --- src/components/Episode.jsx | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index f2e7aae23..e4b25d435 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -31,18 +31,8 @@ const Episode = ({ show, episode, selectedSeason }) => { updated: show.updated } - console.log(episodeDetails) - - const handleToggleFavourite = (episode) => { - dispatch(toggleFavourite({ - showId: show.id, - showTitle: show.title, - seasonTitle: selectedSeason.title, - seasonNumber: selectedSeason.season, - episodeTitle: episode.title, - episodeNumber: episode.episode, - updated: show.updated - })); + const handleToggleFavourite = () => { + dispatch(toggleFavourite(episodeDetails)); }; const formatTime = (seconds) => { From ef476e0cf2960ac7cf7657bbc3290df4ad60de39 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 23:43:05 +0200 Subject: [PATCH 186/323] Fix: remove unused functions from PodcastDetailsModal --- src/components/PodcastDetailsModal.jsx | 15 --------------- 1 file changed, 15 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 81823354d..93eef9bd1 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -26,27 +26,12 @@ const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetc setImageLoading(true); }, [selectedSeason, show]); - const formatTime = (seconds) => { - const hours = Math.floor(seconds / 3600); - const minutes = Math.floor((seconds % 3600) / 60); - const remainingSeconds = seconds % 60; - return `${hours.toString().padStart(2, '0')}:${minutes.toString().padStart(2, '0')}:${remainingSeconds.toString().padStart(2, '0')}`; - }; - useEffect(() => { if (show && show.seasons && Array.isArray(show.seasons)) { setSelectedSeason(show.seasons[0]); } }, [show]); - // const isFavorite = (episode) => { - // return favoriteEpisodes.some(fav => - // fav.showId === show.id && - // fav.episodeTitle === episode.title && - // fav.seasonTitle === selectedSeason.title - // ); - // }; - // const isListened = (episode) => { // return listenedEpisodes.some(listened => // listened.showId === show.id && From 299d216a69e5a9a5e1bd3de41cdf6ee890aa3ba3 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 23:44:38 +0200 Subject: [PATCH 187/323] Fix: remove unused props from PodcastDetailsModal --- src/components/PodcastDetailsModal.jsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 93eef9bd1..5511c4f47 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -18,7 +18,7 @@ import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; -const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, toggleFavorite, favoriteEpisodes, episodeTimestamps }) => { +const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, episodeTimestamps }) => { const [ selectedSeason, setSelectedSeason ] = useState(null) const [imageLoading, setImageLoading] = useState(true) @@ -180,8 +180,6 @@ PodcastDetailsModal.propTypes = { onClose: PropTypes.func.isRequired, // onPlayEpisode: PropTypes.func.isRequired, loading: PropTypes.bool.isRequired, - // toggleFavorite: PropTypes.func.isRequired, - // favoriteEpisodes: PropTypes.array.isRequired, // listenedEpisodes: PropTypes.array.isRequired, // episodeTimestamps: PropTypes.object.isRequired, }; From cb7fe2e269aa63ee081f05472f2f52520569d988 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 23:54:12 +0200 Subject: [PATCH 188/323] Fix: Add prop types for loading, fetching, error in PodcastDetailsModal --- src/App.jsx | 3 ++- src/components/PodcastDetailsModal.jsx | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index fbcbe4d73..875a4aabf 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -228,9 +228,10 @@ function App() { /> )} {showFavorites && ( - diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 5511c4f47..d25fdb638 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -18,7 +18,7 @@ import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; -const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, episodeTimestamps }) => { +const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, episodeTimestamps }) => { const [ selectedSeason, setSelectedSeason ] = useState(null) const [imageLoading, setImageLoading] = useState(true) @@ -180,6 +180,8 @@ PodcastDetailsModal.propTypes = { onClose: PropTypes.func.isRequired, // onPlayEpisode: PropTypes.func.isRequired, loading: PropTypes.bool.isRequired, + fetching: PropTypes.bool.isRequired, + error: PropTypes.object // listenedEpisodes: PropTypes.array.isRequired, // episodeTimestamps: PropTypes.object.isRequired, }; From 0b83b0ebc6b04a8818a6188108174666b809b0cd Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 23:55:13 +0200 Subject: [PATCH 189/323] Fix: remove unused imports in PodcastDetailsModal --- src/components/PodcastDetailsModal.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index d25fdb638..d8c1f8919 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -15,7 +15,6 @@ import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; import Episode from './Episode'; import { useSelector, useDispatch } from 'react-redux' -import { toggleFavourite } from '../state/favouritesSlice'; const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, episodeTimestamps }) => { From f79ca11fb864151e8ba094cc0807208303e97c62 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sat, 8 Feb 2025 23:57:01 +0200 Subject: [PATCH 190/323] Fix: Reference to favourites component --- src/App.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 875a4aabf..c64e80c3f 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -228,7 +228,7 @@ function App() { /> )} {showFavorites && ( - Date: Sat, 8 Feb 2025 23:58:18 +0200 Subject: [PATCH 191/323] Fix: remove handleshowclick reference --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index c64e80c3f..fbcbe4d73 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -231,7 +231,6 @@ function App() { From 845fdde4483e28875aa48b81b5319b4e0e0be27a Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 00:16:08 +0200 Subject: [PATCH 192/323] Fix: Implement sort and search initial state for favourites --- src/pages/FavouritesPage.jsx | 5 +++-- src/state/favouritesSlice.js | 6 +++++- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 284501b54..b5a97b9d9 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -5,8 +5,9 @@ import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortB import PropTypes from 'prop-types'; import { useSelector } from 'react-redux'; -const FavoritesPage = ({ favoriteEpisodes, toggleFavorite, onBackToShows, searchQuery, sortOption }) => { - const favourites = useSelector((state) => state.favourites) +const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { + const favoriteEpisodes = useSelector((state) => state.favourites) + const [sortedFavorites, setSortedFavorites] = useState([]); useEffect(() => { diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 852b976d2..961cf2cc4 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -28,7 +28,11 @@ const selectIsFavourite = createSelector( const favouritesSlice = createSlice({ name: "favourites", - initialState: loadFavourites(), + initialState: { + episodes: loadFavourites(), + sortOption: 'A-Z', + searchTerm: '', + }, reducers: { toggleFavourite: (state, action) => { const existingIndex = state.findIndex(fav => fav.showId === action.payload.showId && fav.seasonNumber === action.payload.seasonNumber && fav.episodeNumber === action.payload.episodeNumber) From b2b314c6414b7e5244163fc3fb11eca1837a2b7f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 00:45:34 +0200 Subject: [PATCH 193/323] Fix: add reducers to manage favourites search and sort state --- src/state/favouritesSlice.js | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 961cf2cc4..b6cff21c6 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -43,6 +43,13 @@ const favouritesSlice = createSlice({ state.splice(existingIndex, 1); } }, + setFavouriteSortOption: (state, action) => { + state.sortOption = action.payload + }, + setFavouriteSearchTerm: (state, action) => { + state.searchTerm = action.payload + }, + } }) From 0a07e9514e033fc36830effd4e0095caab5a939d Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 00:46:47 +0200 Subject: [PATCH 194/323] Fix: export reducers from favouritesSlice --- src/state/favouritesSlice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index b6cff21c6..2a5409687 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -53,6 +53,6 @@ const favouritesSlice = createSlice({ } }) -export const { toggleFavourite } = favouritesSlice.actions; +export const { toggleFavourite, setFavouriteSortOption, setFavouriteSearchTerm } = favouritesSlice.actions; export { selectIsFavourite } export default favouritesSlice.reducer; \ No newline at end of file From d82cf5c9ffc1127737423842d08822375ab291b0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 00:51:29 +0200 Subject: [PATCH 195/323] Feat: Installed react router --- package-lock.json | 52 +++++++++++++++++++++++++++++++++++++++++++++++ package.json | 1 + 2 files changed, 53 insertions(+) diff --git a/package-lock.json b/package-lock.json index 1cdd89ca2..eed20cd4b 100644 --- a/package-lock.json +++ b/package-lock.json @@ -20,6 +20,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-redux": "^9.1.2", + "react-router": "^7.1.5", "redux": "^5.0.1", "typescript": "^5.7.2" }, @@ -1703,6 +1704,12 @@ "@babel/types": "^7.20.7" } }, + "node_modules/@types/cookie": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.6.0.tgz", + "integrity": "sha512-4Kh9a6B2bQciAhf7FSuMRRkUWecJgJu9nPnx3yzpsfXX/c50REIqpHY4C82bXP90qrLtXtkDxTZosYO3UpOwlA==", + "license": "MIT" + }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -2210,6 +2217,15 @@ "dev": true, "license": "MIT" }, + "node_modules/cookie": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-1.0.2.tgz", + "integrity": "sha512-9Kr/j4O16ISv8zBBhJoi4bXOYNTkFLOqSL3UDB0njXxCXNezjeyVrJyGOWtgfs/q2km1gwBcfH8q1yEGoMYunA==", + "license": "MIT", + "engines": { + "node": ">=18" + } + }, "node_modules/cosmiconfig": { "version": "7.1.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.1.0.tgz", @@ -4373,6 +4389,30 @@ "node": ">=0.10.0" } }, + "node_modules/react-router": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-7.1.5.tgz", + "integrity": "sha512-8BUF+hZEU4/z/JD201yK6S+UYhsf58bzYIDq2NS1iGpwxSXDu7F+DeGSkIXMFBuHZB21FSiCzEcUb18cQNdRkA==", + "license": "MIT", + "dependencies": { + "@types/cookie": "^0.6.0", + "cookie": "^1.0.1", + "set-cookie-parser": "^2.6.0", + "turbo-stream": "2.4.0" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + }, + "peerDependenciesMeta": { + "react-dom": { + "optional": true + } + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", @@ -4576,6 +4616,12 @@ "semver": "bin/semver.js" } }, + "node_modules/set-cookie-parser": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/set-cookie-parser/-/set-cookie-parser-2.7.1.tgz", + "integrity": "sha512-IOc8uWeOZgnb3ptbCURJWNjWUPcO3ZnTTdzsurqERrP6nPyv+paC55vJM0LpOlT2ne+Ix+9+CRG1MNLlyZ4GjQ==", + "license": "MIT" + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -4820,6 +4866,12 @@ "node": ">=4" } }, + "node_modules/turbo-stream": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/turbo-stream/-/turbo-stream-2.4.0.tgz", + "integrity": "sha512-FHncC10WpBd2eOmGwpmQsWLDoK4cqsA/UT/GqNoaKOQnT8uzhtCbg3EoUDMvqpOSAI0S26mr0rkjzbOO6S3v1g==", + "license": "ISC" + }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", diff --git a/package.json b/package.json index 541c542a5..6c768b436 100644 --- a/package.json +++ b/package.json @@ -22,6 +22,7 @@ "react": "^18.3.1", "react-dom": "^18.3.1", "react-redux": "^9.1.2", + "react-router": "^7.1.5", "redux": "^5.0.1", "typescript": "^5.7.2" }, From a7b68e22d13f245812d17aa8f45149da68b5672b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 01:49:08 +0200 Subject: [PATCH 196/323] Fix: install react-router-dom and modify navbar search and sort handlers to check if on favourites page --- package-lock.json | 17 +++++++++++++++++ package.json | 1 + src/components/NavBar.jsx | 21 ++++++++++++++++++--- 3 files changed, 36 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index eed20cd4b..5599e1027 100644 --- a/package-lock.json +++ b/package-lock.json @@ -21,6 +21,7 @@ "react-dom": "^18.3.1", "react-redux": "^9.1.2", "react-router": "^7.1.5", + "react-router-dom": "^7.1.5", "redux": "^5.0.1", "typescript": "^5.7.2" }, @@ -4413,6 +4414,22 @@ } } }, + "node_modules/react-router-dom": { + "version": "7.1.5", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-7.1.5.tgz", + "integrity": "sha512-/4f9+up0Qv92D3bB8iN5P1s3oHAepSGa9h5k6tpTFlixTTskJZwKGhJ6vRJ277tLD1zuaZTt95hyGWV1Z37csQ==", + "license": "MIT", + "dependencies": { + "react-router": "7.1.5" + }, + "engines": { + "node": ">=20.0.0" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, "node_modules/react-transition-group": { "version": "4.4.5", "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", diff --git a/package.json b/package.json index 6c768b436..9938a3184 100644 --- a/package.json +++ b/package.json @@ -23,6 +23,7 @@ "react-dom": "^18.3.1", "react-redux": "^9.1.2", "react-router": "^7.1.5", + "react-router-dom": "^7.1.5", "redux": "^5.0.1", "typescript": "^5.7.2" }, diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 16f7f942e..9e273177b 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -13,6 +13,8 @@ import Search from './Search' import StyledInputBase from './StyledInputBase' import { useDispatch, useSelector } from 'react-redux'; import { setSortOption, setFilterOption, setSearchTerm } from '../state/podcastSlice'; +import { setFavouriteSortOption, setFavouriteSearchTerm } from '../state/favouritesSlice'; +import { useLocation } from 'react-router-dom'; @@ -24,18 +26,31 @@ export default function NavBar({ onFavoritesClick, onResetClick }) { const [settingsAnchorEl, setSettingsAnchorEl] = useState(null); const dispatch = useDispatch(); + const location = useLocation() + + const isFavouritePage = location.pathname === "/favourites" const handleSort = (option) => { - dispatch(setSortOption(option)); - handleSortMenuClose() + if (isFavouritePage) { + dispatch(setFavouriteSortOption(option)) + handleSortMenuClose + } else { + dispatch(setSortOption(option)); + handleSortMenuClose() + } }; + const handleFilter = (option) => { dispatch(setFilterOption(option)) handleFilterMenuClose() }; const handleSearchChange = (term) => { - dispatch(setSearchTerm(term)) + if (isFavouritePage) { + dispatch(setFavouriteSearchTerm(term)) + } else { + dispatch(setSearchTerm(term)) + } }; const handleSortMenuOpen = (event) => { From 3b3d99b362ae7d688834e0e27712e2fa31614e48 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 01:56:38 +0200 Subject: [PATCH 197/323] Feat: Wrap application in BrowserRouter --- src/main.jsx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/src/main.jsx b/src/main.jsx index 3fda9883e..065fde2e7 100644 --- a/src/main.jsx +++ b/src/main.jsx @@ -11,6 +11,7 @@ import { lightTheme, darkTheme } from './theme'; import useMediaQuery from '@mui/material/useMediaQuery'; import { store } from './store/store.js' import { Provider } from 'react-redux' +import { BrowserRouter } from 'react-router-dom'; // Define Root function component such that inside we check if the user prefers dark mode, and use a ternary to return the resulting theme @@ -19,12 +20,15 @@ function Root() { const theme = prefersDarkMode ? darkTheme : lightTheme; return ( - - - - - - + + + + + + + + + ); } From 8bd8f225079f4c3012e226daaae1ae7978274595 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 14:18:55 +0200 Subject: [PATCH 198/323] Fix: Implement favourites navigation with react router dom --- src/App.jsx | 28 ++++++++++--------- src/components/NavBar.jsx | 26 +++++++++++------- src/pages/FavouritesPage.jsx | 52 +++++++++++++++++++----------------- 3 files changed, 59 insertions(+), 47 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index fbcbe4d73..0ab240333 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -3,6 +3,7 @@ import ErrorPage from './pages/ErrorPage'; import NavBar from './components/NavBar'; import Content from "./pages/Content"; import { useState, useEffect, useCallback } from 'react'; +import { Routes, Route } from 'react-router-dom'; import AudioPlayer from './components/AudioPlayer'; import FavouritesPage from './pages/FavouritesPage'; import { Box } from '@mui/material' @@ -222,19 +223,20 @@ function App() { onFavoritesClick={handleFavoritesClick} onResetClick={handleResetClick} /> - {!showFavorites && ( - - )} - {showFavorites && ( - - )} + + }> + + + } + > + + state.podcasts.genres) +export default function NavBar({ onResetClick }) { + const navigate = useNavigate(); + const dispatch = useDispatch(); + const location = useLocation(); const theme = useTheme(); + const genres = useSelector((state) => state.podcasts.genres); + const [sortAnchorEl, setSortAnchorEl] = useState(null); const [filterAnchorEl, setFilterAnchorEl] = useState(null); const [settingsAnchorEl, setSettingsAnchorEl] = useState(null); - const dispatch = useDispatch(); - const location = useLocation() - const isFavouritePage = location.pathname === "/favourites" + const toggleFavoritesPage = () => { + if (isFavouritePage) { + navigate("/"); + } else { + navigate("/favourites"); + } + }; + const handleSort = (option) => { if (isFavouritePage) { dispatch(setFavouriteSortOption(option)) - handleSortMenuClose } else { dispatch(setSortOption(option)); - handleSortMenuClose() } + handleSortMenuClose() }; const handleFilter = (option) => { @@ -140,7 +148,7 @@ export default function NavBar({ onFavoritesClick, onResetClick }) { ))} - + toggleFavoritesPage()}> diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index b5a97b9d9..cfd895685 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -4,38 +4,40 @@ import DeleteIcon from '@mui/icons-material/Delete'; import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "../utils/sortUtils"; import PropTypes from 'prop-types'; import { useSelector } from 'react-redux'; +import { useNavigate } from 'react-router-dom'; const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { + const navigate = useNavigate(); const favoriteEpisodes = useSelector((state) => state.favourites) const [sortedFavorites, setSortedFavorites] = useState([]); - useEffect(() => { - let filtered = favoriteEpisodes.filter((fav) => - fav.showTitle.toLowerCase().includes(searchQuery.toLowerCase()) || - fav.episodeTitle.toLowerCase().includes(searchQuery.toLowerCase()) - ); + // useEffect(() => { + // let filtered = favoriteEpisodes.filter((fav) => + // fav.showTitle.toLowerCase().includes(searchQuery.toLowerCase()) || + // fav.episodeTitle.toLowerCase().includes(searchQuery.toLowerCase()) + // ); - let sorted; - switch (sortOption) { - case 'A-Z': - sorted = sortByTitleAscending(filtered, 'showTitle'); - break; - case 'Z-A': - sorted = sortByTitleDescending(filtered, 'showTitle'); - break; - case 'newest': - sorted = sortByDateDescending(filtered, 'updated'); // Change to 'updated' - break; - case 'oldest': - sorted = sortByDateAscending(filtered, 'updated'); // Change to 'updated' - break; - default: - sorted = filtered; - } + // let sorted; + // switch (sortOption) { + // case 'A-Z': + // sorted = sortByTitleAscending(filtered, 'showTitle'); + // break; + // case 'Z-A': + // sorted = sortByTitleDescending(filtered, 'showTitle'); + // break; + // case 'newest': + // sorted = sortByDateDescending(filtered, 'updated'); // Change to 'updated' + // break; + // case 'oldest': + // sorted = sortByDateAscending(filtered, 'updated'); // Change to 'updated' + // break; + // default: + // sorted = filtered; + // } - setSortedFavorites(sorted); - }, [favoriteEpisodes, searchQuery, sortOption]); + // setSortedFavorites(sorted); + // }, [favoriteEpisodes, searchQuery, sortOption]); const handleRemoveFavorite = (episode) => { toggleFavorite(episode); @@ -48,7 +50,7 @@ const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { Your Favorite Episodes - From cbf1e5816f7980a7fdd018f53b48648c0c44ee9d Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 14:35:38 +0200 Subject: [PATCH 199/323] Fix: favourites not loading after changing initial state --- src/state/favouritesSlice.js | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 2a5409687..89df9d29b 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -12,7 +12,7 @@ const loadFavourites = () => { const selectIsFavourite = createSelector( [ - (state) => state.favourites, + (state) => state.favourites.episodes, (_, showId) => showId, (_, __, seasonNumber) => seasonNumber, (_, __, ___, episodeNumber) => episodeNumber @@ -35,12 +35,12 @@ const favouritesSlice = createSlice({ }, reducers: { toggleFavourite: (state, action) => { - const existingIndex = state.findIndex(fav => fav.showId === action.payload.showId && fav.seasonNumber === action.payload.seasonNumber && fav.episodeNumber === action.payload.episodeNumber) + const existingIndex = state.episodes.findIndex(fav => fav.showId === action.payload.showId && fav.seasonNumber === action.payload.seasonNumber && fav.episodeNumber === action.payload.episodeNumber) if (existingIndex === -1) { - state.push(action.payload); + state.episodes.push(action.payload); } else { - state.splice(existingIndex, 1); + state.episodes.splice(existingIndex, 1); } }, setFavouriteSortOption: (state, action) => { From 8e02c6cf2c794bbc7d2ae0f7fc17187c21bb3eb8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 14:44:24 +0200 Subject: [PATCH 200/323] Fix: Remove redundant sort settings and filter close handlers, replace with useState hanlders --- src/components/NavBar.jsx | 43 ++++++++------------------------------- 1 file changed, 9 insertions(+), 34 deletions(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index cea565dca..0e30bc0e1 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -17,7 +17,6 @@ import { setFavouriteSortOption, setFavouriteSearchTerm } from '../state/favouri import { useLocation, useNavigate } from 'react-router-dom'; - export default function NavBar({ onResetClick }) { const navigate = useNavigate(); const dispatch = useDispatch(); @@ -45,12 +44,12 @@ export default function NavBar({ onResetClick }) { } else { dispatch(setSortOption(option)); } - handleSortMenuClose() + setSortAnchorEl(null); }; const handleFilter = (option) => { dispatch(setFilterOption(option)) - handleFilterMenuClose() + setFilterAnchorEl(null) }; const handleSearchChange = (term) => { @@ -61,33 +60,9 @@ export default function NavBar({ onResetClick }) { } }; - const handleSortMenuOpen = (event) => { - setSortAnchorEl(event.currentTarget); - }; - - const handleSortMenuClose = () => { - setSortAnchorEl(null); - }; - - const handleFilterMenuOpen = (event) => { - setFilterAnchorEl(event.currentTarget); - }; - - const handleFilterMenuClose = () => { - setFilterAnchorEl(null); - }; - - const handleSettingsMenuOpen = (event) => { - setSettingsAnchorEl(event.currentTarget); - }; - - const handleSettingsMenuClose = () => { - setSettingsAnchorEl(null); - }; - const handleResetClick = () => { onResetClick(); - handleSettingsMenuClose(); + setSettingsAnchorEl(null); }; return ( @@ -128,19 +103,19 @@ export default function NavBar({ onResetClick }) { onChange={(e) => handleSearchChange(e.target.value)} /> - + setSortAnchorEl(e.currentTarget)}> - + handleSort('A-Z')}>Title A-Z handleSort('Z-A')}>Title Z-A handleSort('newest')}>Newest Added handleSort('oldest')}>Oldest Added - + setFilterAnchorEl(e.currentTarget)}> - + handleFilter(null)}>Show All {genres.map((genre) => ( handleFilter(genre)}> @@ -151,10 +126,10 @@ export default function NavBar({ onResetClick }) { toggleFavoritesPage()}> - + setSettingsAnchorEl(e.currentTarget)}> - + Reset Listening History From 6bb9dc8cb5048b23f092a66922cbd9e4fbf86dbc Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 14:52:30 +0200 Subject: [PATCH 201/323] Fix: Pass functions for OnClose menu items instead of calling functions immediately --- src/components/NavBar.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 0e30bc0e1..0c25636d5 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -106,7 +106,7 @@ export default function NavBar({ onResetClick }) { setSortAnchorEl(e.currentTarget)}> - + setSortAnchorEl(null)}> handleSort('A-Z')}>Title A-Z handleSort('Z-A')}>Title Z-A handleSort('newest')}>Newest Added @@ -115,7 +115,7 @@ export default function NavBar({ onResetClick }) { setFilterAnchorEl(e.currentTarget)}> - + setFilterAnchorEl(null)}> handleFilter(null)}>Show All {genres.map((genre) => ( handleFilter(genre)}> @@ -129,7 +129,7 @@ export default function NavBar({ onResetClick }) { setSettingsAnchorEl(e.currentTarget)}> - + setSettingsAnchorEl(null)}> Reset Listening History From 7cf14cbd06430ca7fd8c822acdaa7c90780684cd Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 15:10:01 +0200 Subject: [PATCH 202/323] Fix: UseSelector correctly references favourite episodes in state --- src/pages/FavouritesPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index cfd895685..281df8a05 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -8,7 +8,7 @@ import { useNavigate } from 'react-router-dom'; const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { const navigate = useNavigate(); - const favoriteEpisodes = useSelector((state) => state.favourites) + const favoriteEpisodes = useSelector((state) => state.favourites.episodes) const [sortedFavorites, setSortedFavorites] = useState([]); From 6c127dd1d7cb370157367952594d3ad66905f00e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 15:24:17 +0200 Subject: [PATCH 203/323] Fix: FavouriteSlice logic fetching incorrect key from localStorage --- src/state/favouritesSlice.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 89df9d29b..eb6d7d242 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -2,7 +2,7 @@ import { createSlice, createSelector } from "@reduxjs/toolkit"; const loadFavourites = () => { try { - const favourites = localStorage.getItem("favourites"); + const favourites = localStorage.getItem("favourites.episodes"); return favourites ? JSON.parse(favourites) : []; } catch (error) { console.error("Error loading favourites from storage", error) From 983e17b8cf6d48b2a714f0ed135649c4da0a4b03 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 15:54:16 +0200 Subject: [PATCH 204/323] Feat: Implement rough logic for searching and sorting favourites --- src/state/favouritesSlice.js | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index eb6d7d242..f33c2883e 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -1,4 +1,6 @@ import { createSlice, createSelector } from "@reduxjs/toolkit"; +import { applySorting } from "../utils/sortUtils"; +import { initializeFuzzySearch, performFuzzySearch } from '../utils/fuzzySearch'; const loadFavourites = () => { try { @@ -32,6 +34,8 @@ const favouritesSlice = createSlice({ episodes: loadFavourites(), sortOption: 'A-Z', searchTerm: '', + sortedFavourites: [], + searchedAndSortedFavourites: [], }, reducers: { toggleFavourite: (state, action) => { @@ -49,6 +53,27 @@ const favouritesSlice = createSlice({ setFavouriteSearchTerm: (state, action) => { state.searchTerm = action.payload }, + setSortOption(state, action) { + state.sortOption = action.payload; + const sortedPodcasts = applySorting( + state.episodes, + action.payload + ); + state.searchedAndSortedFavourites = sortedPodcasts + }, + setSearchTerm(state, action) { + state.searchTerm = action.payload; + let searchResults = state.episodes; + + if (state.searchTerm) { + const fuse = initializeFuzzySearch(searchResults); + searchResults = performFuzzySearch(fuse, state.searchTerm) + .map(result => result.item); + } + + searchResults = applySorting(searchResults, state.sortOption); + state.searchedAndSortedFavourites = searchResults; + }, } }) From 82a6d31808bcf00113195dbddfe9c9d4d139dcf6 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 15:58:43 +0200 Subject: [PATCH 205/323] Fix: Refactor and remove redundant favourites sorting state --- src/state/favouritesSlice.js | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index f33c2883e..a4a7e8f85 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -34,8 +34,7 @@ const favouritesSlice = createSlice({ episodes: loadFavourites(), sortOption: 'A-Z', searchTerm: '', - sortedFavourites: [], - searchedAndSortedFavourites: [], + searchedAndSortedFavourites: loadFavourites(), }, reducers: { toggleFavourite: (state, action) => { @@ -55,11 +54,11 @@ const favouritesSlice = createSlice({ }, setSortOption(state, action) { state.sortOption = action.payload; - const sortedPodcasts = applySorting( + const sortedFavourites = applySorting( state.episodes, action.payload ); - state.searchedAndSortedFavourites = sortedPodcasts + state.searchedAndSortedFavourites = sortedFavourites }, setSearchTerm(state, action) { state.searchTerm = action.payload; From 83b37223e31b527cd56b2cee56a48bf850787b9e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 16:19:03 +0200 Subject: [PATCH 206/323] Fix: Add date added to favourites and set favouritesPage to read favourite episodes from state --- src/components/Episode.jsx | 3 ++- src/pages/FavouritesPage.jsx | 7 ++++--- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index e4b25d435..92ff4b2ea 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -28,7 +28,8 @@ const Episode = ({ show, episode, selectedSeason }) => { seasonNumber: selectedSeason.season, episodeTitle: episode.title, episodeNumber: episode.episode, - updated: show.updated + updated: show.updated, + dateAdded: new Date() } const handleToggleFavourite = () => { diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 281df8a05..80821535b 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -8,7 +8,8 @@ import { useNavigate } from 'react-router-dom'; const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { const navigate = useNavigate(); - const favoriteEpisodes = useSelector((state) => state.favourites.episodes) + const favouriteEpisodes = useSelector((state) => state.favourites.episodes) + console.log(favouriteEpisodes) const [sortedFavorites, setSortedFavorites] = useState([]); @@ -56,7 +57,7 @@ const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { - {sortedFavorites.map((fav, index) => ( + {favouriteEpisodes.map((fav, index) => ( { secondary={`${fav.seasonTitle} - Episode ${fav.episodeNumber} - ${fav.episodeTitle}`} /> - Date: Sun, 9 Feb 2025 16:25:13 +0200 Subject: [PATCH 207/323] Fix: Add toLocaleString method to stringify and format dates properly --- src/components/Episode.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 92ff4b2ea..5f81cb5c5 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -29,7 +29,7 @@ const Episode = ({ show, episode, selectedSeason }) => { episodeTitle: episode.title, episodeNumber: episode.episode, updated: show.updated, - dateAdded: new Date() + dateAdded: new Date().toLocaleString() } const handleToggleFavourite = () => { From 32d923067f83c744398ba30b9a87c199bc9262e8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 16:28:46 +0200 Subject: [PATCH 208/323] Fix: Change key for episode items to be show.id + episode number, I am nervous I will have issues in the future otherwise --- src/components/Episode.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 5f81cb5c5..a5ca4ffc3 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -44,7 +44,7 @@ const Episode = ({ show, episode, selectedSeason }) => { }; return ( - + handleToggleFavourite(episode)}> { isFavourite ? : } From b6805a0ad913ba4d4f5d345724340b99a0b8b7e7 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 17:31:20 +0200 Subject: [PATCH 209/323] Fix: Apply adding and removing favourites logic to both favourites arrays in state --- src/pages/FavouritesPage.jsx | 5 +++-- src/state/favouritesSlice.js | 2 ++ 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 80821535b..b2d124e85 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -8,9 +8,10 @@ import { useNavigate } from 'react-router-dom'; const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { const navigate = useNavigate(); - const favouriteEpisodes = useSelector((state) => state.favourites.episodes) + const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites) + const favouriteState = useSelector((state) => state.favourites) console.log(favouriteEpisodes) - + console.log(favouriteState) const [sortedFavorites, setSortedFavorites] = useState([]); // useEffect(() => { diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index a4a7e8f85..693a7a293 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -41,9 +41,11 @@ const favouritesSlice = createSlice({ const existingIndex = state.episodes.findIndex(fav => fav.showId === action.payload.showId && fav.seasonNumber === action.payload.seasonNumber && fav.episodeNumber === action.payload.episodeNumber) if (existingIndex === -1) { + state.searchedAndSortedFavourites.push(action.payload); state.episodes.push(action.payload); } else { state.episodes.splice(existingIndex, 1); + state.searchedAndSortedFavourites.splice(existingIndex, 1); } }, setFavouriteSortOption: (state, action) => { From fe34ed69d9a304e876e6a031a45d0910c6abc5af Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 18:34:48 +0200 Subject: [PATCH 210/323] Feat: Implement sorting logic for favourite page --- src/components/Episode.jsx | 2 +- src/pages/FavouritesPage.jsx | 5 +---- src/state/favouritesSlice.js | 10 ++-------- 3 files changed, 4 insertions(+), 13 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index a5ca4ffc3..4a91bf66d 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -29,7 +29,7 @@ const Episode = ({ show, episode, selectedSeason }) => { episodeTitle: episode.title, episodeNumber: episode.episode, updated: show.updated, - dateAdded: new Date().toLocaleString() + savedAt: new Date().toLocaleString() } const handleToggleFavourite = () => { diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index b2d124e85..c9c177653 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -9,9 +9,6 @@ import { useNavigate } from 'react-router-dom'; const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { const navigate = useNavigate(); const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites) - const favouriteState = useSelector((state) => state.favourites) - console.log(favouriteEpisodes) - console.log(favouriteState) const [sortedFavorites, setSortedFavorites] = useState([]); // useEffect(() => { @@ -66,7 +63,7 @@ const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { secondary={`${fav.seasonTitle} - Episode ${fav.episodeNumber} - ${fav.episodeTitle}`} /> - { - state.sortOption = action.payload - }, - setFavouriteSearchTerm: (state, action) => { - state.searchTerm = action.payload - }, - setSortOption(state, action) { + setFavouriteSortOption(state, action) { state.sortOption = action.payload; const sortedFavourites = applySorting( state.episodes, @@ -62,7 +56,7 @@ const favouritesSlice = createSlice({ ); state.searchedAndSortedFavourites = sortedFavourites }, - setSearchTerm(state, action) { + setFavouriteSearchTerm(state, action) { state.searchTerm = action.payload; let searchResults = state.episodes; From 770ccdc707be54ceaa990434baa1a3b9ff4e6d3c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 18:35:41 +0200 Subject: [PATCH 211/323] Fix: Remove unused sorting imports to favourites as state manages calling sorting methods --- src/pages/FavouritesPage.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index c9c177653..0c300e533 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -1,7 +1,6 @@ import React, { useState, useEffect } from 'react'; import { Box, Typography, Button, IconButton, List, ListItem, ListItemText, ListItemSecondaryAction, Divider } from '@mui/material'; import DeleteIcon from '@mui/icons-material/Delete'; -import { sortByTitleAscending, sortByTitleDescending, sortByDateAscending, sortByDateDescending } from "../utils/sortUtils"; import PropTypes from 'prop-types'; import { useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; From 85dc637982d631c1adf7438661c865ca2d7f0495 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 18:36:22 +0200 Subject: [PATCH 212/323] Fix: Remove unused useEffect for sorting and searching --- src/pages/FavouritesPage.jsx | 27 --------------------------- 1 file changed, 27 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 0c300e533..37d734cc8 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -10,33 +10,6 @@ const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites) const [sortedFavorites, setSortedFavorites] = useState([]); - // useEffect(() => { - // let filtered = favoriteEpisodes.filter((fav) => - // fav.showTitle.toLowerCase().includes(searchQuery.toLowerCase()) || - // fav.episodeTitle.toLowerCase().includes(searchQuery.toLowerCase()) - // ); - - // let sorted; - // switch (sortOption) { - // case 'A-Z': - // sorted = sortByTitleAscending(filtered, 'showTitle'); - // break; - // case 'Z-A': - // sorted = sortByTitleDescending(filtered, 'showTitle'); - // break; - // case 'newest': - // sorted = sortByDateDescending(filtered, 'updated'); // Change to 'updated' - // break; - // case 'oldest': - // sorted = sortByDateAscending(filtered, 'updated'); // Change to 'updated' - // break; - // default: - // sorted = filtered; - // } - - // setSortedFavorites(sorted); - // }, [favoriteEpisodes, searchQuery, sortOption]); - const handleRemoveFavorite = (episode) => { toggleFavorite(episode); }; From b933ad5eb2455b9f560f365df33707c0a5c68b3a Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 19:06:09 +0200 Subject: [PATCH 213/323] Feat: Implement searching using redux - changed fuzzysearch to adapt keys depending on input --- src/state/favouritesSlice.js | 2 +- src/utils/fuzzySearch.js | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 128f03aa4..570d89579 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -65,7 +65,7 @@ const favouritesSlice = createSlice({ searchResults = performFuzzySearch(fuse, state.searchTerm) .map(result => result.item); } - + console.log("Here are the search results", searchResults) searchResults = applySorting(searchResults, state.sortOption); state.searchedAndSortedFavourites = searchResults; }, diff --git a/src/utils/fuzzySearch.js b/src/utils/fuzzySearch.js index eed6a1de1..ad13b6b43 100644 --- a/src/utils/fuzzySearch.js +++ b/src/utils/fuzzySearch.js @@ -1,14 +1,19 @@ import Fuse from 'fuse.js'; +const favouriteKeys = ['showTitle', 'seasonTitle', 'episodeTitle', 'episodeNumber'] +const podcastKeys = ['title', 'description'] + export const initializeFuzzySearch = (shows) => { if (!shows || shows.length === 0) { return null; } + const isPodcastsOrFavourites = shows[0]?.title ? true : false + const options = { - keys: ['title', 'description'], + keys: isPodcastsOrFavourites ? podcastKeys : favouriteKeys, includeScore: true, - threshold: 0.45 + threshold: 0.3 }; return new Fuse(shows, options); From 06ccc7715c91fd5d1a50bbcc0e98ab76b3925f28 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 19:12:36 +0200 Subject: [PATCH 214/323] Fix: Remove console.logs --- src/state/favouritesSlice.js | 1 - src/utils/fuzzySearch.js | 1 - 2 files changed, 2 deletions(-) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 570d89579..e2c8426d6 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -65,7 +65,6 @@ const favouritesSlice = createSlice({ searchResults = performFuzzySearch(fuse, state.searchTerm) .map(result => result.item); } - console.log("Here are the search results", searchResults) searchResults = applySorting(searchResults, state.sortOption); state.searchedAndSortedFavourites = searchResults; }, diff --git a/src/utils/fuzzySearch.js b/src/utils/fuzzySearch.js index ad13b6b43..0a7bdbd7e 100644 --- a/src/utils/fuzzySearch.js +++ b/src/utils/fuzzySearch.js @@ -21,7 +21,6 @@ export const initializeFuzzySearch = (shows) => { export const performFuzzySearch = (fuse, searchTerm) => { if (!fuse) { - console.log("NO FUSE!") return []; } return fuse.search(searchTerm); From ef4c364ddaaf84964b22c907c46b256322fe38f8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 19:13:31 +0200 Subject: [PATCH 215/323] Fix: Remove old unused sortedFavourites state --- src/pages/FavouritesPage.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 37d734cc8..36bfb4558 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -8,7 +8,6 @@ import { useNavigate } from 'react-router-dom'; const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { const navigate = useNavigate(); const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites) - const [sortedFavorites, setSortedFavorites] = useState([]); const handleRemoveFavorite = (episode) => { toggleFavorite(episode); @@ -60,7 +59,7 @@ const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { - {index < sortedFavorites.length - 1 && } + {index < favouriteEpisodes.length - 1 && } ))} From 0a56c2e436f2f76c71f308aa9d5e96e7c556bcda Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 19:21:16 +0200 Subject: [PATCH 216/323] FIx: delete button for favourites now working --- src/pages/FavouritesPage.jsx | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 36bfb4558..6b3e4a34b 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -2,16 +2,14 @@ import React, { useState, useEffect } from 'react'; import { Box, Typography, Button, IconButton, List, ListItem, ListItemText, ListItemSecondaryAction, Divider } from '@mui/material'; import DeleteIcon from '@mui/icons-material/Delete'; import PropTypes from 'prop-types'; -import { useSelector } from 'react-redux'; +import { useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; +import { toggleFavourite } from '../state/favouritesSlice'; const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { + const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites); + const dispatch = useDispatch(); const navigate = useNavigate(); - const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites) - - const handleRemoveFavorite = (episode) => { - toggleFavorite(episode); - }; return ( @@ -53,7 +51,7 @@ const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { textAlign: "end" }))} /> - handleRemoveFavorite(fav)}> + dispatch(toggleFavourite(fav))}> From d5f0a11ea7ba56adf3d64e16b2d788001e6041f0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:02:03 +0200 Subject: [PATCH 217/323] Fix: Remove unused props --- src/pages/FavouritesPage.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 6b3e4a34b..a2eeca23f 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -6,7 +6,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; import { toggleFavourite } from '../state/favouritesSlice'; -const FavoritesPage = ({ toggleFavorite, onBackToShows, searchQuery }) => { +const FavoritesPage = () => { const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites); const dispatch = useDispatch(); const navigate = useNavigate(); From 7f0272cea2f5f65d93f5ae59d91959e002941362 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:07:07 +0200 Subject: [PATCH 218/323] Fix: Remove unnecesary import of react fragment --- src/pages/FavouritesPage.jsx | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index a2eeca23f..c67135235 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -1,7 +1,5 @@ -import React, { useState, useEffect } from 'react'; import { Box, Typography, Button, IconButton, List, ListItem, ListItemText, ListItemSecondaryAction, Divider } from '@mui/material'; import DeleteIcon from '@mui/icons-material/Delete'; -import PropTypes from 'prop-types'; import { useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; import { toggleFavourite } from '../state/favouritesSlice'; @@ -25,8 +23,8 @@ const FavoritesPage = () => { {favouriteEpisodes.map((fav, index) => ( - - + <> + { {index < favouriteEpisodes.length - 1 && } - + ))} From 96a9a63a8c1b6ea4c042d3ac093e9a2dcc6f0ee7 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:07:42 +0200 Subject: [PATCH 219/323] Fix: Remove unused proptypes from FavouritesPage --- src/pages/FavouritesPage.jsx | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index c67135235..5b1dd6a5f 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -63,22 +63,4 @@ const FavoritesPage = () => { ); }; -// FavoritesPage.propTypes = { -// favoriteEpisodes: PropTypes.arrayOf( -// PropTypes.shape({ -// showId: PropTypes.string.isRequired, -// showTitle: PropTypes.string.isRequired, -// seasonTitle: PropTypes.string.isRequired, -// episodeTitle: PropTypes.string.isRequired, -// episodeNumber: PropTypes.number.isRequired, -// savedAt: PropTypes.string.isRequired, -// updated: PropTypes.string.isRequired, // Ensure updated is included -// }) -// ).isRequired, -// toggleFavorite: PropTypes.func.isRequired, -// onBackToShows: PropTypes.func.isRequired, -// searchQuery: PropTypes.string.isRequired, -// sortOption: PropTypes.oneOf(['A-Z', 'Z-A', 'newest', 'oldest']).isRequired, -// }; - export default FavoritesPage; From 8b663ad52c6fb4dfa3c3a89bea91bbaf99df331f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:09:43 +0200 Subject: [PATCH 220/323] Fix: Remove outdated and unused favourites state logic from app.jsx --- src/App.jsx | 44 -------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 0ab240333..6e2efd567 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -15,11 +15,6 @@ function App() { const [currentEpisode, setCurrentEpisode] = useState(null); // State used by skip handlers to store current episodes data const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes const [playingShow, setPlayingShow] = useState(null); // Sets the playing show equal to the detail show from the PodcastDetails Modal - const [favoriteEpisodes, setFavoriteEpisodes] = useState(() => { // Sets favorite episodes equal to the episodes in state, or an empty array if no episodes exist - const storedFavorites = localStorage.getItem('favoriteEpisodes'); - return storedFavorites ? JSON.parse(storedFavorites) : []; - }); - const [showFavorites, setShowFavorites] = useState(false); // State which triggers whether or not we open the favorites view const [listenedEpisodes, setListenedEpisodes] = useState(() => { // Checks for listened episodes in local storage and sets itself equal to that, or empty array const storedListenedEpisodes = localStorage.getItem('listenedEpisodes'); return storedListenedEpisodes ? JSON.parse(storedListenedEpisodes) : []; @@ -80,45 +75,6 @@ function App() { setShowFavorites(false); }; - const handleFavoritesClick = () => { - setShowFavorites(true); // Set to true when the favorites button is clicked - }; - - const toggleFavorite = useCallback((episode) => { - setFavoriteEpisodes(prev => { - const isAlreadyFavorite = prev.some(fav => - fav.showId === episode.showId && - fav.episodeTitle === episode.episodeTitle && - fav.seasonTitle === episode.seasonTitle - ); - - let updatedFavorites; - if (isAlreadyFavorite) { - updatedFavorites = prev.filter(fav => - !(fav.showId === episode.showId && - fav.episodeTitle === episode.episodeTitle && - fav.seasonTitle === episode.seasonTitle) - ); - } else { - const favoriteWithDate = { - ...episode, - savedAt: new Date().toISOString(), - }; - updatedFavorites = [...prev, favoriteWithDate]; - } - localStorage.setItem('favoriteEpisodes', JSON.stringify(updatedFavorites)); - return updatedFavorites; - }); - }, []); - - - useEffect(() => { - const storedFavorites = localStorage.getItem('favoriteEpisodes'); - if (storedFavorites) { - setFavoriteEpisodes(JSON.parse(storedFavorites)); - } - }, []); - useEffect(() => { const handleBeforeUnload = (event) => { if (isPlaying) { From 6fbcbe536bb1292fcc0bd91b576851d2a8b42305 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:10:26 +0200 Subject: [PATCH 221/323] Fix: Remove old state favourites props from app.jsx --- src/App.jsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 6e2efd567..aff9c4375 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -176,7 +176,6 @@ function App() { return ( <> @@ -184,8 +183,6 @@ function App() { From f7f607dc70860ac2a93805cae37851c7f940da32 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:12:10 +0200 Subject: [PATCH 222/323] Fix: Remove onfavouritesclick unused prop from navbar proptypes --- src/components/NavBar.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/NavBar.jsx b/src/components/NavBar.jsx index 0c25636d5..6da389785 100644 --- a/src/components/NavBar.jsx +++ b/src/components/NavBar.jsx @@ -138,6 +138,5 @@ export default function NavBar({ onResetClick }) { } NavBar.propTypes = { - onFavoritesClick: PropTypes.func.isRequired, onResetClick: PropTypes.func.isRequired, }; \ No newline at end of file From f273a843fac6782f3f81ca1d7ba1ed5887e569b2 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:17:23 +0200 Subject: [PATCH 223/323] Fix: Remove unused favouritesEpisodes from podcastslice initialState --- src/state/podcastSlice.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index c6de75e77..d9289fea7 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -16,7 +16,6 @@ const initialState = { selectedPodcastId: null, modalOpen: false, selectedPodcastData: null, - favouriteEpisodes: null, listenedEpisodes: null, } From 689a5812f00a7f615d0a7e4c4c75d7f689ce0094 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:19:57 +0200 Subject: [PATCH 224/323] Fix: Remove unused listenedEpisodes from podcastSlice initialState --- src/state/podcastSlice.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/state/podcastSlice.js b/src/state/podcastSlice.js index d9289fea7..a74937127 100644 --- a/src/state/podcastSlice.js +++ b/src/state/podcastSlice.js @@ -16,7 +16,6 @@ const initialState = { selectedPodcastId: null, modalOpen: false, selectedPodcastData: null, - listenedEpisodes: null, } const podcastSlice = createSlice({ From e00fee474093cabbb5d1c9f2ad6ea87072fc6851 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:22:51 +0200 Subject: [PATCH 225/323] Feat: Add playlist state to audoplayerSlice --- src/state/audioPlayerSlice.js | 1 + 1 file changed, 1 insertion(+) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 1b0b66aef..9fecc313a 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -41,6 +41,7 @@ const audioPlayerSlice = createSlice({ name: "audioPlayer", initialState: { currentEpisode: null, + playlist: [], isPlaying: false, playingShow: null, volume: 50, From b298671dec019b53dc8b793fee1a80ff254a436d Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:24:53 +0200 Subject: [PATCH 226/323] Feat: Add reducer to set playlist --- src/state/audioPlayerSlice.js | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 9fecc313a..dbe997f70 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -65,6 +65,9 @@ const audioPlayerSlice = createSlice({ setEpisodeAsListened: (state, action) => { const { show, episode } = action.payload state.listenedEpisodes[show] = episode + }, + setPlaylist: (state, action) => { + state.playlist = action.payload } } From 9c741643619b3d84a9c5aa68145d06beb3ac4e55 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 20:53:10 +0200 Subject: [PATCH 227/323] Feat: Define some rough redux state for audio player component --- src/components/AudioPlayer.jsx | 5 +++++ src/state/audioPlayerSlice.js | 12 ++++++++++++ 2 files changed, 17 insertions(+) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index f79d640f9..d220d0ca2 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -9,6 +9,7 @@ import VolumeDownIcon from '@mui/icons-material/VolumeDown'; import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; +import { useDispatch, useSelector } from 'react-redux'; const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { const [progress, setProgress] = useState(0); @@ -17,6 +18,10 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); const theme = useTheme(); + + + + const [duration, setDuration] = useState(0); const [currentTime, setCurrentTime] = useState(0); diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index dbe997f70..53b44939d 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -45,6 +45,9 @@ const audioPlayerSlice = createSlice({ isPlaying: false, playingShow: null, volume: 50, + isMuted: false, + duration:0, + currentTime:0, timestamps: loadTimestamps(), listenedEpisodes: loadListenedEpisodes() }, @@ -58,6 +61,9 @@ const audioPlayerSlice = createSlice({ setVolume: (state, action) => { state.volume = action.payload }, + setIsMuted: (state, action) => { + state.isMuted = action.payload + }, saveTimestamp: (state, action) => { const { episodeId, timestamp } = action.payload; state.timestamps[episodeId] = timestamp; @@ -68,6 +74,12 @@ const audioPlayerSlice = createSlice({ }, setPlaylist: (state, action) => { state.playlist = action.payload + }, + setCurrentTime: (state, action) => { + state.currentTime = action.payload + }, + setDuration: (state, action) => { + state.duration = action.payload } } From 257e00af55dfa19ccc27e1b6ac506010145ba7f9 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 21:11:28 +0200 Subject: [PATCH 228/323] Fix: Begin migrating audioplayer state to redux with volume and mute first --- src/components/AudioPlayer.jsx | 18 ++++++++++++------ src/state/audioPlayerSlice.js | 14 ++++++++++++-- 2 files changed, 24 insertions(+), 8 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index d220d0ca2..f8a78e466 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -10,11 +10,21 @@ import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; +import { setIsMuted, setVolume, setCurrentEpisode, setPlaying, setEpisodeAsListened, setProgress, setDuration, setCurrentTime, setIsLoaded } from '../state/audioPlayerSlice' const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { + const isMuted = useSelector((state) => state.audioPlayer.isMuted); + const volume = useSelector((state) => state.audioPlayer.volume); + const dispatch = useDispatch() + + const toggleMute = () => { + dispatch(setIsMuted(!isMuted)); + }; + + const [progress, setProgress] = useState(0); - const [volume, setVolume] = useState(1); - const [isMuted, setIsMuted] = useState(false); + // const [volume, setVolume] = useState(1); + // const [isMuted, setIsMuted] = useState(false); const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); const theme = useTheme(); @@ -120,10 +130,6 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio setIsMuted(newValue === 0); }; - const toggleMute = () => { - setIsMuted(!isMuted); - }; - const handleEpisodeEnd = () => { if (episode && playingShow) { onEpisodeComplete({ diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 53b44939d..af9cf2109 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -36,7 +36,6 @@ const selectIsListened = createSelector( ) ); - const audioPlayerSlice = createSlice({ name: "audioPlayer", initialState: { @@ -85,6 +84,17 @@ const audioPlayerSlice = createSlice({ }) -export const { setCurrentEpisode, setPlaying, setVolume, saveTimestamp, setEpisodeAsListened } = audioPlayerSlice.actions; +export const { + setCurrentEpisode, + setPlaying, + setVolume, + saveTimestamp, + setEpisodeAsListened, + setCurrentTime, + setDuration, + setIsMuted, + setIsPlaying, + setPlaylist +} = audioPlayerSlice.actions; export { selectIsListened } export default audioPlayerSlice.reducer; \ No newline at end of file From a2134a5099710fc2b57ed929bbb4611d18f2ee5b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 21:13:10 +0200 Subject: [PATCH 229/323] Fix: set initial volume within range 0 - 1 --- src/components/AudioPlayer.jsx | 2 +- src/state/audioPlayerSlice.js | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index f8a78e466..3f7a04c89 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -10,7 +10,7 @@ import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { setIsMuted, setVolume, setCurrentEpisode, setPlaying, setEpisodeAsListened, setProgress, setDuration, setCurrentTime, setIsLoaded } from '../state/audioPlayerSlice' +import { setIsMuted, setVolume, setCurrentEpisode, setPlaying, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { const isMuted = useSelector((state) => state.audioPlayer.isMuted); diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index af9cf2109..b9457b23e 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -43,7 +43,7 @@ const audioPlayerSlice = createSlice({ playlist: [], isPlaying: false, playingShow: null, - volume: 50, + volume: 0.5, isMuted: false, duration:0, currentTime:0, From 8e0910d6c4577aaa9df606869bb861e85fe73f5b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 21:23:39 +0200 Subject: [PATCH 230/323] Fix: Migrate volume and muted back to react useState for superior responsiveness --- src/components/AudioPlayer.jsx | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 3f7a04c89..bcf4608c0 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -13,14 +13,19 @@ import { useDispatch, useSelector } from 'react-redux'; import { setIsMuted, setVolume, setCurrentEpisode, setPlaying, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { - const isMuted = useSelector((state) => state.audioPlayer.isMuted); - const volume = useSelector((state) => state.audioPlayer.volume); + const [isMuted, setIsMuted] = useState(false) + const [volume, setVolume] = useState(0.5) const dispatch = useDispatch() const toggleMute = () => { - dispatch(setIsMuted(!isMuted)); + setIsMuted(!isMuted); }; + const handleVolumeChange = (event, newValue) => { + setVolume(newValue); + setIsMuted(newValue === 0); + }; + const [progress, setProgress] = useState(0); // const [volume, setVolume] = useState(1); @@ -125,11 +130,6 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio setProgress(newValue); }; - const handleVolumeChange = (event, newValue) => { - setVolume(newValue); - setIsMuted(newValue === 0); - }; - const handleEpisodeEnd = () => { if (episode && playingShow) { onEpisodeComplete({ From e484a56c4fee08ebb942078818600ddb2a5065a5 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 21:24:15 +0200 Subject: [PATCH 231/323] Fix: remove volume and ismuted state from audioPlayerSlice --- src/state/audioPlayerSlice.js | 8 -------- 1 file changed, 8 deletions(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index b9457b23e..652244bac 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -43,8 +43,6 @@ const audioPlayerSlice = createSlice({ playlist: [], isPlaying: false, playingShow: null, - volume: 0.5, - isMuted: false, duration:0, currentTime:0, timestamps: loadTimestamps(), @@ -57,12 +55,6 @@ const audioPlayerSlice = createSlice({ setIsPlaying: (state, action) => { state.isPlaying = action.payload }, - setVolume: (state, action) => { - state.volume = action.payload - }, - setIsMuted: (state, action) => { - state.isMuted = action.payload - }, saveTimestamp: (state, action) => { const { episodeId, timestamp } = action.payload; state.timestamps[episodeId] = timestamp; From bf25307fc193fd706215a8bc78da023cc209aaca Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 21:48:16 +0200 Subject: [PATCH 232/323] Fix: Migrate some of the playback functionality to redux --- src/components/AudioPlayer.jsx | 4 +--- src/components/Episode.jsx | 22 ++++++++++++++++++++-- src/state/audioPlayerSlice.js | 11 +++++++---- 3 files changed, 28 insertions(+), 9 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index bcf4608c0..401dd723a 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -10,7 +10,7 @@ import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { setIsMuted, setVolume, setCurrentEpisode, setPlaying, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' +import { setCurrentEpisode, setPlaying, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { const [isMuted, setIsMuted] = useState(false) @@ -28,8 +28,6 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio const [progress, setProgress] = useState(0); - // const [volume, setVolume] = useState(1); - // const [isMuted, setIsMuted] = useState(false); const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); const theme = useTheme(); diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 4a91bf66d..9a2541400 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -8,7 +8,7 @@ import { import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; -import { saveTimestamp, setEpisodeAsListened, selectIsListened } from '../state/audioPlayerSlice'; +import { saveTimestamp, setEpisodeAsListened, selectIsListened, setCurrentEpisode, setIsPlaying, setPlayingShow } from '../state/audioPlayerSlice'; import { selectIsFavourite } from "../state/favouritesSlice"; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; @@ -18,9 +18,26 @@ import PropTypes from 'prop-types' const Episode = ({ show, episode, selectedSeason }) => { const isFavourite = useSelector(state => selectIsFavourite(state, show.id, selectedSeason.season, episode.episode)); const isListened = useSelector(state => selectIsListened(state, show.id, selectedSeason.season, episode.episode)); + const playingShow = useSelector((state) => state.podcasts.selectedPodcastData); const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); + const handlePlayEpisode = (episodeDetails) => { + dispatch(setCurrentEpisode(episodeDetails)); + dispatch(setIsPlaying(true)) + dispatch(setPlayingShow(playingShow)) + } + + // const handlePlayEpisode = (episode) => { + // const episodeWithSeason = { + // ...episode, + // season: episode.season || 1 + // }; + // setCurrentEpisode(episodeWithSeason); + // setPlayingShow(detailedShow); + // setIsPlaying(true); + // }; + const episodeDetails = { showId: show.id, showTitle: show.title, @@ -28,6 +45,7 @@ const Episode = ({ show, episode, selectedSeason }) => { seasonNumber: selectedSeason.season, episodeTitle: episode.title, episodeNumber: episode.episode, + file: episode.file, updated: show.updated, savedAt: new Date().toLocaleString() } @@ -63,7 +81,7 @@ const Episode = ({ show, episode, selectedSeason }) => { /> {isListened && ()} - onPlayEpisode(episode)}> + handlePlayEpisode(episode)}> diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 652244bac..dcbf05a6a 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -71,22 +71,25 @@ const audioPlayerSlice = createSlice({ }, setDuration: (state, action) => { state.duration = action.payload + }, + setPlayingShow: (state, action) => { + state.playingShow = action.payload } } }) export const { - setCurrentEpisode, - setPlaying, + setCurrentEpisode, setVolume, saveTimestamp, setEpisodeAsListened, setCurrentTime, setDuration, setIsMuted, - setIsPlaying, - setPlaylist + setIsPlaying, + setPlayingShow, + setPlaylist, } = audioPlayerSlice.actions; export { selectIsListened } export default audioPlayerSlice.reducer; \ No newline at end of file From bf378ae8ac9ff31c6d1076eb73606ebd6c35c00f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 21:49:47 +0200 Subject: [PATCH 233/323] Fix: remove unused old logic for conditionally rendering favourites page --- src/App.jsx | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index aff9c4375..0f7ae9b68 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -69,11 +69,7 @@ function App() { setListenedEpisodes([]); localStorage.removeItem('episodeTimestamps'); setIsResetDialogOpen(false); - }; - - const handleBackToShows = () => { - setShowFavorites(false); - }; + }; useEffect(() => { const handleBeforeUnload = (event) => { @@ -183,7 +179,6 @@ function App() { } From c5a068ea5ecf97b31e2d91a024827eb773c27b39 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 21:58:01 +0200 Subject: [PATCH 234/323] Fix: Move functions for creating flatmaps of episodes for playlists to episodeUtils file --- src/App.jsx | 43 ++++++++------------------------------- src/utils/episodeUtils.js | 23 +++++++++++++++++++++ 2 files changed, 32 insertions(+), 34 deletions(-) create mode 100644 src/utils/episodeUtils.js diff --git a/src/App.jsx b/src/App.jsx index 0f7ae9b68..84abdd0a4 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -86,31 +86,6 @@ function App() { }; }, [isPlaying]); - - const getAllEpisodes = (show) => { - if (!show || !Array.isArray(show.seasons)) { - console.error('Invalid show structure:', show); - return []; - } - return show.seasons.flatMap((season, seasonIndex) => { - if (Array.isArray(season.episodes)) { - return season.episodes.map(episode => ({ - ...episode, - season: seasonIndex + 1 // Add season number to each episode - })); - } - console.error('Invalid season structure:', season); - return []; - }); - }; - - const findEpisodeIndex = (allEpisodes, currentEpisode) => { - return allEpisodes.findIndex(e => - e.episode === currentEpisode.episode && - (e.season === currentEpisode.season || e.season === undefined) - ); - }; - const handleSkipNext = () => { if (detailedShow && currentEpisode) { const allEpisodes = getAllEpisodes(detailedShow); @@ -147,15 +122,15 @@ function App() { } }; - const handlePlayEpisode = (episode) => { - const episodeWithSeason = { - ...episode, - season: episode.season || 1 - }; - setCurrentEpisode(episodeWithSeason); - setPlayingShow(detailedShow); - setIsPlaying(true); - }; + // const handlePlayEpisode = (episode) => { + // const episodeWithSeason = { + // ...episode, + // season: episode.season || 1 + // }; + // setCurrentEpisode(episodeWithSeason); + // setPlayingShow(detailedShow); + // setIsPlaying(true); + // }; const handleEpisodeComplete = (episodeData) => { markEpisodeAsListened(episodeData); diff --git a/src/utils/episodeUtils.js b/src/utils/episodeUtils.js new file mode 100644 index 000000000..1cce229ca --- /dev/null +++ b/src/utils/episodeUtils.js @@ -0,0 +1,23 @@ +export const getAllEpisodes = (show) => { + if (!show || !Array.isArray(show.seasons)) { + console.error('Invalid show structure:', show); + return []; + } + return show.seasons.flatMap((season, seasonIndex) => { + if (Array.isArray(season.episodes)) { + return season.episodes.map(episode => ({ + ...episode, + season: seasonIndex + 1 // Add season number to each episode + })); + } + console.error('Invalid season structure:', season); + return []; + }); +}; + +export const findEpisodeIndex = (allEpisodes, currentEpisode) => { + return allEpisodes.findIndex(e => + e.episode === currentEpisode.episode && + (e.season === currentEpisode.season || e.season === undefined) + ); +}; From 4c5c371be3f2c656f36e5da3346ef963a368537d Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 22:16:47 +0200 Subject: [PATCH 235/323] Feat: Implement Thunks for skipping episodes forwards and backwards --- src/state/audioPlayerSlice.js | 38 +++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index dcbf05a6a..d3998637e 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -1,4 +1,5 @@ import { createSelector, createSlice } from "@reduxjs/toolkit"; +import { getAllEpisodes, findEpisodeIndex } from "../utils/episodeUtils"; const loadTimestamps = () => { try { @@ -79,6 +80,43 @@ const audioPlayerSlice = createSlice({ }) +export const skipToNextEpisode = () => (dispatch, getState) => { + const { playingShow, currentEpisode } = getState().audioPlayer; + + if (playingShow && currentEpisode) { + const allEpisodes = getAllEpisodes(playingShow); + let currentIndex = findEpisodeIndex(currentEpisode); + + if (currentIndex === -1) { + currentIndex = 0; + } + + if (currentIndex < allEpisodes.length - 1) { + const nextEpisode = allEpisodes[currentIndex + 1]; + dispatch(setCurrentEpisode(nextEpisode)); + dispatch(setIsPlaying(true)); + } + } +}; + +export const skipToPreviousEpisode = () => (dispatch, getState) => { + const { playingShow, currentEpisode } = getState().audioPlayer + if (playingShow && currentEpisode) { + const allEpisodes = getAllEpisodes(playingShow); + let currentIndex = findEpisodeIndex(currentEpisode); + + if (currentIndex === -1) { + currentIndex = 0; + } + + if (currentIndex > 0) { + const previousEpisode = allEpisodes[currentIndex - 1]; + dispatch(setCurrentEpisode(previousEpisode)); + dispatch(setIsPlaying(true)); + } + } +}; + export const { setCurrentEpisode, setVolume, From 055583f1d0cbd3fd5668ec55d370fa7e76bf5733 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 22:19:02 +0200 Subject: [PATCH 236/323] Fix: Remove unused onplayepisode prop from PodcastDetailsModal --- src/App.jsx | 60 +++++++++++++------------- src/components/PodcastDetailsModal.jsx | 2 +- 2 files changed, 31 insertions(+), 31 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 84abdd0a4..08522d7a1 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -86,41 +86,41 @@ function App() { }; }, [isPlaying]); - const handleSkipNext = () => { - if (detailedShow && currentEpisode) { - const allEpisodes = getAllEpisodes(detailedShow); - let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); + // const handleSkipNext = () => { + // if (detailedShow && currentEpisode) { + // const allEpisodes = getAllEpisodes(detailedShow); + // let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - // If currentIndex is still -1, assume we're at the first episode - if (currentIndex === -1) { - currentIndex = 0; - } + // // If currentIndex is still -1, assume we're at the first episode + // if (currentIndex === -1) { + // currentIndex = 0; + // } - if (currentIndex < allEpisodes.length - 1) { - const nextEpisode = allEpisodes[currentIndex + 1]; - setCurrentEpisode(nextEpisode); - setIsPlaying(true); - } - } - }; + // if (currentIndex < allEpisodes.length - 1) { + // const nextEpisode = allEpisodes[currentIndex + 1]; + // setCurrentEpisode(nextEpisode); + // setIsPlaying(true); + // } + // } + // }; - const handleSkipPrevious = () => { - if (detailedShow && currentEpisode) { - const allEpisodes = getAllEpisodes(detailedShow); - let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); + // const handleSkipPrevious = () => { + // if (detailedShow && currentEpisode) { + // const allEpisodes = getAllEpisodes(detailedShow); + // let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - // If currentIndex is still -1, assume we're at the first episode - if (currentIndex === -1) { - currentIndex = 0; - } + // // If currentIndex is still -1, assume we're at the first episode + // if (currentIndex === -1) { + // currentIndex = 0; + // } - if (currentIndex > 0) { - const previousEpisode = allEpisodes[currentIndex - 1]; - setCurrentEpisode(previousEpisode); - setIsPlaying(true); - } - } - }; + // if (currentIndex > 0) { + // const previousEpisode = allEpisodes[currentIndex - 1]; + // setCurrentEpisode(previousEpisode); + // setIsPlaying(true); + // } + // } + // }; // const handlePlayEpisode = (episode) => { // const episodeWithSeason = { diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index d8c1f8919..e894f306d 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -17,7 +17,7 @@ import Episode from './Episode'; import { useSelector, useDispatch } from 'react-redux' -const PodcastDetailsModal = ({ show, open, onClose, onPlayEpisode, loading, fetching, error, episodeTimestamps }) => { +const PodcastDetailsModal = ({ show, open, onClose, loading, fetching, error, episodeTimestamps }) => { const [ selectedSeason, setSelectedSeason ] = useState(null) const [imageLoading, setImageLoading] = useState(true) From cafeee5765cfb57a8ba4330492234a61004583cc Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 22:22:01 +0200 Subject: [PATCH 237/323] Fix: misspelled import of setIsPlaying in AudioPlayer.jsx --- src/components/AudioPlayer.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 401dd723a..ae201ac9c 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -10,7 +10,7 @@ import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { setCurrentEpisode, setPlaying, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' +import { setCurrentEpisode, setIsPlaying, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { const [isMuted, setIsMuted] = useState(false) From 93d6a9146df4651563bc51b4139e287dcfc9fdee Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 22:25:45 +0200 Subject: [PATCH 238/323] Fix: Migrate isPlaying and play state to redux --- src/components/AudioPlayer.jsx | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index ae201ac9c..ba66a04af 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -10,9 +10,10 @@ import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { setCurrentEpisode, setIsPlaying, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' +import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' -const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { +const AudioPlayer = ({ episode, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { + const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) const [isMuted, setIsMuted] = useState(false) const [volume, setVolume] = useState(0.5) const dispatch = useDispatch() @@ -194,7 +195,7 @@ const AudioPlayer = ({ episode, isPlaying, onPlayPause, onSkipNext, onSkipPrevio }}> - onPlayPause(!isPlaying)} disabled={!isLoaded} sx={{ + dispatch(setIsPlaying(!isPlaying))} disabled={!isLoaded} sx={{ padding: '12px', width: '72px', height: '72px', From 50be54e780a2c4b9781bfbbfee2c411f9d964319 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 22:29:20 +0200 Subject: [PATCH 239/323] Fix: Migrate Skip logic to use skip thunks in audioPlayerSlice --- src/components/AudioPlayer.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index ba66a04af..59953241f 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -12,7 +12,7 @@ import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' -const AudioPlayer = ({ episode, onSkipNext, onSkipPrevious, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { +const AudioPlayer = ({ episode, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) const [isMuted, setIsMuted] = useState(false) const [volume, setVolume] = useState(0.5) @@ -186,7 +186,7 @@ const AudioPlayer = ({ episode, onSkipNext, onSkipPrevious, playingShow, onEpiso )} {/* Spacer */} - dispatch(skipToPreviousEpisode())} sx={{ mt: '12px', padding: '8px', width: '48px', @@ -203,7 +203,7 @@ const AudioPlayer = ({ episode, onSkipNext, onSkipPrevious, playingShow, onEpiso }}> {isPlaying ? : } - dispatch(skipToNextEpisode())} sx={{ mt: '12px', padding: '8px', width: '48px', From d0c83b23fe9874c1173618dd1513766d6acd63a8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 22:30:45 +0200 Subject: [PATCH 240/323] Fix: Remove unused props for play/pause, skip next and skip previous from audioPlayer component --- src/App.jsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 08522d7a1..0e92bc7a8 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -163,9 +163,6 @@ function App() { setIsPlaying(playState)} - onSkipNext={handleSkipNext} - onSkipPrevious={handleSkipPrevious} playingShow={playingShow} onEpisodeComplete={handleEpisodeComplete} updateEpisodeTimestamp={updateEpisodeTimestamp} From 23105681e4295f5399250d2cccb9c1aba9463b4e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 22:31:53 +0200 Subject: [PATCH 241/323] Fix: Remove prop types for isplaying, play/pause, and skip forward and skip back from AudioPlayer.jsx --- src/components/AudioPlayer.jsx | 4 ---- 1 file changed, 4 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 59953241f..186c01e23 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -248,10 +248,6 @@ AudioPlayer.propTypes = { episode: PropTypes.number.isRequired, file: PropTypes.string.isRequired, }), - isPlaying: PropTypes.bool.isRequired, - onPlayPause: PropTypes.func.isRequired, - onSkipNext: PropTypes.func.isRequired, - onSkipPrevious: PropTypes.func.isRequired, playingShow: PropTypes.shape({ id: PropTypes.string.isRequired, title: PropTypes.string.isRequired, From a7c6f63eee6eb36daa34c5def24295dda85b6e09 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 22:42:18 +0200 Subject: [PATCH 242/323] Fix: Remove old play logic from episode.jsx and reorder state variables in AudioPlayer.jsx --- src/components/AudioPlayer.jsx | 16 ++++++---------- src/components/Episode.jsx | 12 +----------- 2 files changed, 7 insertions(+), 21 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 186c01e23..18db23655 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -16,6 +16,11 @@ const AudioPlayer = ({ episode, playingShow, onEpisodeComplete, updateEpisodeTim const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) const [isMuted, setIsMuted] = useState(false) const [volume, setVolume] = useState(0.5) + const [progress, setProgress] = useState(0); + const [isLoaded, setIsLoaded] = useState(false); + const audioRef = useRef(null); + const theme = useTheme(); + const dispatch = useDispatch() const toggleMute = () => { @@ -26,16 +31,7 @@ const AudioPlayer = ({ episode, playingShow, onEpisodeComplete, updateEpisodeTim setVolume(newValue); setIsMuted(newValue === 0); }; - - - const [progress, setProgress] = useState(0); - const [isLoaded, setIsLoaded] = useState(false); - const audioRef = useRef(null); - const theme = useTheme(); - - - - + const [duration, setDuration] = useState(0); const [currentTime, setCurrentTime] = useState(0); diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 9a2541400..f9bd5c3ba 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -28,16 +28,6 @@ const Episode = ({ show, episode, selectedSeason }) => { dispatch(setPlayingShow(playingShow)) } - // const handlePlayEpisode = (episode) => { - // const episodeWithSeason = { - // ...episode, - // season: episode.season || 1 - // }; - // setCurrentEpisode(episodeWithSeason); - // setPlayingShow(detailedShow); - // setIsPlaying(true); - // }; - const episodeDetails = { showId: show.id, showTitle: show.title, @@ -81,7 +71,7 @@ const Episode = ({ show, episode, selectedSeason }) => { /> {isListened && ()} - handlePlayEpisode(episode)}> + handlePlayEpisode(episodeDetails)}> From 0a7ecf4d3490b221fe52e6664f7631e951f204f9 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 22:57:58 +0200 Subject: [PATCH 243/323] Fix: Seperate redux state and ui/local state --- src/components/AudioPlayer.jsx | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 18db23655..c2dc7a0d7 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -12,8 +12,7 @@ import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' -const AudioPlayer = ({ episode, playingShow, onEpisodeComplete, updateEpisodeTimestamp }) => { - const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) +const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => { const [isMuted, setIsMuted] = useState(false) const [volume, setVolume] = useState(0.5) const [progress, setProgress] = useState(0); @@ -21,7 +20,13 @@ const AudioPlayer = ({ episode, playingShow, onEpisodeComplete, updateEpisodeTim const audioRef = useRef(null); const theme = useTheme(); + // Redux const dispatch = useDispatch() + const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) + const currentEpisode = useSelector((state) => state.audioPlayer.currentEpisode) + const playingShow = useSelector((state) => state.audioPlayer.playingShow); + const currentTime = useSelector((state) => state.audioPlayer.currentTime); + const duration = useSelector((state) => state.audioPlayer.duration); const toggleMute = () => { setIsMuted(!isMuted); @@ -31,9 +36,6 @@ const AudioPlayer = ({ episode, playingShow, onEpisodeComplete, updateEpisodeTim setVolume(newValue); setIsMuted(newValue === 0); }; - - const [duration, setDuration] = useState(0); - const [currentTime, setCurrentTime] = useState(0); useEffect(() => { const audio = audioRef.current; From 6edb334e5198c88e54b47907bc55a45739d4c770 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 23:17:16 +0200 Subject: [PATCH 244/323] Feat: Migrate volume to its own component --- src/components/AudioPlayer.jsx | 39 ++-------------------------- src/components/Volume.jsx | 47 ++++++++++++++++++++++++++++++++++ 2 files changed, 49 insertions(+), 37 deletions(-) create mode 100644 src/components/Volume.jsx diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index c2dc7a0d7..c11de2b30 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -4,17 +4,13 @@ import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import PauseIcon from '@mui/icons-material/Pause'; import SkipNextIcon from '@mui/icons-material/SkipNext'; import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; -import VolumeUpIcon from '@mui/icons-material/VolumeUp'; -import VolumeDownIcon from '@mui/icons-material/VolumeDown'; -import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' +import Volume from './Volume'; const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => { - const [isMuted, setIsMuted] = useState(false) - const [volume, setVolume] = useState(0.5) const [progress, setProgress] = useState(0); const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); @@ -28,15 +24,6 @@ const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => const currentTime = useSelector((state) => state.audioPlayer.currentTime); const duration = useSelector((state) => state.audioPlayer.duration); - const toggleMute = () => { - setIsMuted(!isMuted); - }; - - const handleVolumeChange = (event, newValue) => { - setVolume(newValue); - setIsMuted(newValue === 0); - }; - useEffect(() => { const audio = audioRef.current; const updateTime = () => setCurrentTime(audio.currentTime); @@ -211,29 +198,7 @@ const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => - {/* Volume Controls */} - - - {isMuted ? : volume > 0.5 ? : } - - - + ); diff --git a/src/components/Volume.jsx b/src/components/Volume.jsx new file mode 100644 index 000000000..638e807d8 --- /dev/null +++ b/src/components/Volume.jsx @@ -0,0 +1,47 @@ +import VolumeUpIcon from '@mui/icons-material/VolumeUp'; +import VolumeDownIcon from '@mui/icons-material/VolumeDown'; +import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; +import { useState } from 'react'; +import { Box, IconButton, Slider } from '@mui/material'; +import { useTheme } from '@mui/material/styles'; + +const Volume = () => { + const [isMuted, setIsMuted] = useState(false) + const [volume, setVolume] = useState(0.5) + const theme = useTheme(); + + const toggleMute = () => { + setIsMuted(!isMuted); + }; + + const handleVolumeChange = (event, newValue) => { + setVolume(newValue); + setIsMuted(newValue === 0); + }; + + return ( + + {isMuted ? : volume > 0.5 ? : } + + + + ) +} + +export default Volume \ No newline at end of file From 961f51e6e42d65579514fbb4ab7bdb8ff344a7e6 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 23:31:44 +0200 Subject: [PATCH 245/323] Fix: Remove useEffect for volume and mute, I am handling the state directly in my handlers rather --- src/components/AudioPlayer.jsx | 10 ++-------- src/components/Volume.jsx | 13 +++++++++++-- 2 files changed, 13 insertions(+), 10 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index c11de2b30..c4bc16a3a 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -8,7 +8,7 @@ import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' -import Volume from './Volume'; +import Volume from './Volume' const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => { const [progress, setProgress] = useState(0); @@ -92,12 +92,6 @@ const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => } }, [episode]); - useEffect(() => { - if (audioRef.current) { - audioRef.current.volume = isMuted ? 0 : volume; - } - }, [volume, isMuted]); - const handleTimeUpdate = () => { if (audioRef.current) { const currentProgress = (audioRef.current.currentTime / audioRef.current.duration) * 100 || 0; @@ -198,7 +192,7 @@ const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => - + ); diff --git a/src/components/Volume.jsx b/src/components/Volume.jsx index 638e807d8..8b25a14c5 100644 --- a/src/components/Volume.jsx +++ b/src/components/Volume.jsx @@ -1,22 +1,25 @@ import VolumeUpIcon from '@mui/icons-material/VolumeUp'; import VolumeDownIcon from '@mui/icons-material/VolumeDown'; import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; -import { useState } from 'react'; +import { useState, useEffect } from 'react'; import { Box, IconButton, Slider } from '@mui/material'; import { useTheme } from '@mui/material/styles'; +import PropTypes from 'prop-types' -const Volume = () => { +const Volume = ({ audioRef }) => { const [isMuted, setIsMuted] = useState(false) const [volume, setVolume] = useState(0.5) const theme = useTheme(); const toggleMute = () => { setIsMuted(!isMuted); + audioRef.current.volume = isMuted ? volume : 0; }; const handleVolumeChange = (event, newValue) => { setVolume(newValue); setIsMuted(newValue === 0); + audioRef.current.volume = newValue; }; return ( @@ -44,4 +47,10 @@ const Volume = () => { ) } +Volume.propTypes = { + audioRef: PropTypes.shape({ + current: PropTypes.instanceOf(HTMLAudioElement) + }).isRequired +}; + export default Volume \ No newline at end of file From 3d1bcecc36d68e9b77e5567d9589607ab8b7156f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 23:32:40 +0200 Subject: [PATCH 246/323] Fix: Remove useEffect import from volume.jsx --- src/components/Volume.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/Volume.jsx b/src/components/Volume.jsx index 8b25a14c5..4c76818ae 100644 --- a/src/components/Volume.jsx +++ b/src/components/Volume.jsx @@ -1,7 +1,7 @@ import VolumeUpIcon from '@mui/icons-material/VolumeUp'; import VolumeDownIcon from '@mui/icons-material/VolumeDown'; import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; -import { useState, useEffect } from 'react'; +import { useState } from 'react'; import { Box, IconButton, Slider } from '@mui/material'; import { useTheme } from '@mui/material/styles'; import PropTypes from 'prop-types' From 557fe29d886bb6b3d73cef05663c1e3bcc81e9d8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Sun, 9 Feb 2025 23:47:20 +0200 Subject: [PATCH 247/323] Feat: Implement useEffects to manage state of playback --- src/components/AudioPlayer.jsx | 60 ++++++++++++++++++++++++++-------- 1 file changed, 46 insertions(+), 14 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index c4bc16a3a..17d230d44 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -7,7 +7,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime } from '../state/audioPlayerSlice' +import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp } from '../state/audioPlayerSlice' import Volume from './Volume' const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => { @@ -77,20 +77,47 @@ const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => } }, [isPlaying, isLoaded]); - // Handle episode change + // Effect to handle episode changes useEffect(() => { - if (episode && audioRef.current) { + if (currentEpisode && audioRef.current) { setIsLoaded(false); audioRef.current.pause(); audioRef.current.currentTime = 0; - audioRef.current.src = episode.file; + audioRef.current.src = currentEpisode.file; - // Wait for audio to be loaded before attempting to play audioRef.current.addEventListener('loadeddata', () => { setIsLoaded(true); + // If isPlaying is true, start playing the new episode + if (isPlaying) { + audioRef.current.play().catch(error => + console.error("Playback failed", error) + ); + } }, { once: true }); } - }, [episode]); + }, [currentEpisode, isPlaying]); + + // Effect to update timestamp in Redux + useEffect(() => { + const audio = audioRef.current; + if (!audio) return; + + const handleTimeUpdate = () => { + if (playingShow && currentEpisode) { + const currentTime = Math.floor(audio.currentTime); + dispatch(setCurrentTime(currentTime)); + // Update timestamp in Redux/localStorage + dispatch(saveTimestamp({ + episodeId: `${playingShow.id}-${currentEpisode.title}`, + timestamp: currentTime + })); + } + }; + + audio.addEventListener('timeupdate', handleTimeUpdate); + return () => audio.removeEventListener('timeupdate', handleTimeUpdate); + }, [playingShow, currentEpisode, dispatch]); + const handleTimeUpdate = () => { if (audioRef.current) { @@ -108,17 +135,22 @@ const AudioPlayer = ({ episode, onEpisodeComplete, updateEpisodeTimestamp }) => setProgress(newValue); }; + // Handle episode completion const handleEpisodeEnd = () => { - if (episode && playingShow) { - onEpisodeComplete({ - showId: playingShow.id, - showTitle: playingShow.title, - episodeTitle: episode.title, - listenedAt: new Date().toISOString() - }); + if (currentEpisode && playingShow) { + dispatch(setEpisodeAsListened({ + show: playingShow.id, + episode: { + showId: playingShow.id, + showTitle: playingShow.title, + episodeTitle: episode.title, + listenedAt: new Date().toISOString() + } + })); + dispatch(skipToNextEpisode()); } - onSkipNext(); }; + return ( Date: Tue, 11 Feb 2025 17:53:47 +0200 Subject: [PATCH 248/323] Fix: Remove currentEpisode react State from app.jsx --- src/App.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/App.jsx b/src/App.jsx index 0e92bc7a8..3761a8566 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -12,7 +12,6 @@ import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' function App() { const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards - const [currentEpisode, setCurrentEpisode] = useState(null); // State used by skip handlers to store current episodes data const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes const [playingShow, setPlayingShow] = useState(null); // Sets the playing show equal to the detail show from the PodcastDetails Modal const [listenedEpisodes, setListenedEpisodes] = useState(() => { // Checks for listened episodes in local storage and sets itself equal to that, or empty array From 34648334b1d692ff2161e937e62c8d09d94038c0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 17:55:12 +0200 Subject: [PATCH 249/323] Fix: Remove episode prop based on old removed react state from audioplayer.jsx --- src/App.jsx | 1 - src/components/AudioPlayer.jsx | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 3761a8566..d43e8be2c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -160,7 +160,6 @@ function App() { { +const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { const [progress, setProgress] = useState(0); const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); From b05de3f331f7059e022f0beebdf6c54f09bd8794 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 17:57:39 +0200 Subject: [PATCH 250/323] Fix: Change now playing jsx to reference currenteEpisode instead of episode --- src/components/AudioPlayer.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 262e21472..3e9402084 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -190,9 +190,9 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { - {episode && ( + {currentEpisode && ( - Now Playing: {episode.title} + Now Playing: {currentEpisode.title} )} {/* Spacer */} From 36a66187b6b286bb608910112f99599425b401fb Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 18:00:10 +0200 Subject: [PATCH 251/323] Fix: Dependency array to handle time in audioplayer jsx to correctly reference currentEpisode --- src/components/AudioPlayer.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 3e9402084..1531c708b 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -51,8 +51,8 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { if (!audio) return; const handleTimeUpdate = () => { - if (playingShow && episode) { - updateEpisodeTimestamp(playingShow.id, episode.title, Math.floor(audio.currentTime)); + if (playingShow && currentEpisode) { + updateEpisodeTimestamp(playingShow.id, currentEpisode.title, Math.floor(audio.currentTime)); } }; @@ -61,7 +61,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { return () => { audio.removeEventListener('timeupdate', handleTimeUpdate); }; - }, [playingShow, episode, updateEpisodeTimestamp]); + }, [playingShow, currentEpisode, updateEpisodeTimestamp]); // Handle play/pause useEffect(() => { From 48771d014374d068c648952eb7cd38dd58c36523 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 18:01:23 +0200 Subject: [PATCH 252/323] Fix: correctly reference currentEpisode.title in setEpisodeAsListened function call --- src/components/AudioPlayer.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 1531c708b..b8344e3d9 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -143,7 +143,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { episode: { showId: playingShow.id, showTitle: playingShow.title, - episodeTitle: episode.title, + episodeTitle: currentEpisode.title, listenedAt: new Date().toISOString() } })); From c2f188d52cd38f0bebeab9ba9af00cfba0c49a37 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 18:07:14 +0200 Subject: [PATCH 253/323] Fix: Correctly reference keys in currentEpisode Object --- src/components/AudioPlayer.jsx | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index b8344e3d9..fd7677d99 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -52,7 +52,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { const handleTimeUpdate = () => { if (playingShow && currentEpisode) { - updateEpisodeTimestamp(playingShow.id, currentEpisode.title, Math.floor(audio.currentTime)); + updateEpisodeTimestamp(playingShow.id, currentEpisode.episodeTitle, Math.floor(audio.currentTime)); } }; @@ -108,7 +108,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { dispatch(setCurrentTime(currentTime)); // Update timestamp in Redux/localStorage dispatch(saveTimestamp({ - episodeId: `${playingShow.id}-${currentEpisode.title}`, + episodeId: `${playingShow.id}-${currentEpisode.episodeTitle}`, timestamp: currentTime })); } @@ -138,12 +138,13 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { // Handle episode completion const handleEpisodeEnd = () => { if (currentEpisode && playingShow) { + console.log("This is playing show", playingShow) dispatch(setEpisodeAsListened({ show: playingShow.id, episode: { showId: playingShow.id, showTitle: playingShow.title, - episodeTitle: currentEpisode.title, + episodeTitle: currentEpisode.episodeTitle, listenedAt: new Date().toISOString() } })); @@ -192,7 +193,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { {currentEpisode && ( - Now Playing: {currentEpisode.title} + Now Playing: {currentEpisode.episodeTitle} )} {/* Spacer */} From 285e1b7bf5529fadb598092aba7d8008a545447a Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 19:04:41 +0200 Subject: [PATCH 254/323] Fix: correctly display duration by adding dispatch to play useEffect --- src/components/AudioPlayer.jsx | 31 ++++++++++++++++--------------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index fd7677d99..a7c9c5bf7 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -24,21 +24,21 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { const currentTime = useSelector((state) => state.audioPlayer.currentTime); const duration = useSelector((state) => state.audioPlayer.duration); - useEffect(() => { - const audio = audioRef.current; - const updateTime = () => setCurrentTime(audio.currentTime); - const updateDuration = () => setDuration(audio.duration); + // useEffect(() => { + // const audio = audioRef.current; + // const updateTime = () => setCurrentTime(audio.currentTime); + // const updateDuration = () => setDuration(audio.duration); - audio.addEventListener('timeupdate', updateTime); - audio.addEventListener('loadedmetadata', updateDuration); - audio.addEventListener('durationchange', updateDuration); + // audio.addEventListener('timeupdate', updateTime); + // audio.addEventListener('loadedmetadata', updateDuration); + // audio.addEventListener('durationchange', updateDuration); - return () => { - audio.removeEventListener('timeupdate', updateTime); - audio.removeEventListener('loadedmetadata', updateDuration); - audio.removeEventListener('durationchange', updateDuration); - }; - }, []); + // return () => { + // audio.removeEventListener('timeupdate', updateTime); + // audio.removeEventListener('loadedmetadata', updateDuration); + // audio.removeEventListener('durationchange', updateDuration); + // }; + // }, []); const formatTime = (time) => { const minutes = Math.floor(time / 60); @@ -49,7 +49,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { useEffect(() => { const audio = audioRef.current; if (!audio) return; - + const handleTimeUpdate = () => { if (playingShow && currentEpisode) { updateEpisodeTimestamp(playingShow.id, currentEpisode.episodeTitle, Math.floor(audio.currentTime)); @@ -67,6 +67,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { useEffect(() => { if (audioRef.current && isLoaded) { if (isPlaying) { + dispatch(setDuration(audioRef.current.duration)) const playPromise = audioRef.current.play(); if (playPromise !== undefined) { playPromise.catch(error => console.error("Playback failed", error)); @@ -75,7 +76,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { audioRef.current.pause(); } } - }, [isPlaying, isLoaded]); + }, [isPlaying, isLoaded, dispatch]); // Effect to handle episode changes useEffect(() => { From a9159c3fc71aa3e78644028e458ee3d5683a4e21 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 19:28:48 +0200 Subject: [PATCH 255/323] Fix: Debugging why skip isnt working, findEpisodeIndex being called without passing allEpisodes --- src/state/audioPlayerSlice.js | 2 +- src/utils/episodeUtils.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index d3998637e..bf2139289 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -85,7 +85,7 @@ export const skipToNextEpisode = () => (dispatch, getState) => { if (playingShow && currentEpisode) { const allEpisodes = getAllEpisodes(playingShow); - let currentIndex = findEpisodeIndex(currentEpisode); + let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); if (currentIndex === -1) { currentIndex = 0; diff --git a/src/utils/episodeUtils.js b/src/utils/episodeUtils.js index 1cce229ca..497f76630 100644 --- a/src/utils/episodeUtils.js +++ b/src/utils/episodeUtils.js @@ -16,6 +16,7 @@ export const getAllEpisodes = (show) => { }; export const findEpisodeIndex = (allEpisodes, currentEpisode) => { + console.log("All episodes is the following:", allEpisodes) return allEpisodes.findIndex(e => e.episode === currentEpisode.episode && (e.season === currentEpisode.season || e.season === undefined) From 84c06559eee789cb20431f7b65e4675e6887fc18 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 19:37:51 +0200 Subject: [PATCH 256/323] Fix: Skip forward and back working after adding allepisodes as argument in FindEpisodeIndex --- src/state/audioPlayerSlice.js | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index bf2139289..9f9345b4e 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -86,14 +86,17 @@ export const skipToNextEpisode = () => (dispatch, getState) => { if (playingShow && currentEpisode) { const allEpisodes = getAllEpisodes(playingShow); let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - + console.log("current index is", currentIndex) if (currentIndex === -1) { currentIndex = 0; } if (currentIndex < allEpisodes.length - 1) { + console.log("Just checkign that this evaluates to true") const nextEpisode = allEpisodes[currentIndex + 1]; + console.log(nextEpisode) dispatch(setCurrentEpisode(nextEpisode)); + console.log(getState().audioPlayer.currentEpisode) dispatch(setIsPlaying(true)); } } @@ -103,7 +106,7 @@ export const skipToPreviousEpisode = () => (dispatch, getState) => { const { playingShow, currentEpisode } = getState().audioPlayer if (playingShow && currentEpisode) { const allEpisodes = getAllEpisodes(playingShow); - let currentIndex = findEpisodeIndex(currentEpisode); + let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); if (currentIndex === -1) { currentIndex = 0; From 2c1e50902491ddbd00deb92b55c8fdb8310f2f1b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 20:18:05 +0200 Subject: [PATCH 257/323] Fix: Modify episode utils so all episode objects have the same structure --- src/state/audioPlayerSlice.js | 1 + src/utils/episodeUtils.js | 9 +++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 9f9345b4e..f6e78886a 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -85,6 +85,7 @@ export const skipToNextEpisode = () => (dispatch, getState) => { if (playingShow && currentEpisode) { const allEpisodes = getAllEpisodes(playingShow); + console.log("all episodes looks like this", allEpisodes) let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); console.log("current index is", currentIndex) if (currentIndex === -1) { diff --git a/src/utils/episodeUtils.js b/src/utils/episodeUtils.js index 497f76630..efc8b2bf6 100644 --- a/src/utils/episodeUtils.js +++ b/src/utils/episodeUtils.js @@ -3,11 +3,16 @@ export const getAllEpisodes = (show) => { console.error('Invalid show structure:', show); return []; } - return show.seasons.flatMap((season, seasonIndex) => { + console.log(show) + return show.seasons.flatMap((season) => { if (Array.isArray(season.episodes)) { return season.episodes.map(episode => ({ ...episode, - season: seasonIndex + 1 // Add season number to each episode + seasonTitle: season.title, + seasonImage: season.image, + season: season.season, + showId: show.id, + showTitle: show.title })); } console.error('Invalid season structure:', season); From a3806d7b7da5136f1c046febc5897cf2cca2900b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 21:16:43 +0200 Subject: [PATCH 258/323] Fix: modify skip logic and add generatePlaylist thunk --- src/components/AudioPlayer.jsx | 11 ++++++--- src/components/Episode.jsx | 2 +- src/state/audioPlayerSlice.js | 41 ++++++++++++++++++++++------------ 3 files changed, 36 insertions(+), 18 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index a7c9c5bf7..6e2d86bac 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -7,7 +7,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp } from '../state/audioPlayerSlice' +import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp, generatePlaylist } from '../state/audioPlayerSlice' import Volume from './Volume' const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { @@ -46,6 +46,11 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; }; + const handlePlay = () => { + dispatch(setIsPlaying(!isPlaying)) + dispatch(generatePlaylist()) + } + useEffect(() => { const audio = audioRef.current; if (!audio) return; @@ -194,7 +199,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { {currentEpisode && ( - Now Playing: {currentEpisode.episodeTitle} + Now Playing: {currentEpisode.title} )} {/* Spacer */} @@ -208,7 +213,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { }}> - dispatch(setIsPlaying(!isPlaying))} disabled={!isLoaded} sx={{ + handlePlay()} disabled={!isLoaded} sx={{ padding: '12px', width: '72px', height: '72px', diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index f9bd5c3ba..571925f43 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -33,7 +33,7 @@ const Episode = ({ show, episode, selectedSeason }) => { showTitle: show.title, seasonTitle: selectedSeason.title, seasonNumber: selectedSeason.season, - episodeTitle: episode.title, + title: episode.title, episodeNumber: episode.episode, file: episode.file, updated: show.updated, diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index f6e78886a..e112dc864 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -41,6 +41,7 @@ const audioPlayerSlice = createSlice({ name: "audioPlayer", initialState: { currentEpisode: null, + currentIndex: 0, playlist: [], isPlaying: false, playingShow: null, @@ -75,12 +76,15 @@ const audioPlayerSlice = createSlice({ }, setPlayingShow: (state, action) => { state.playingShow = action.payload + }, + setCurrentIndex: (state, action) => { + state.currentIndex = action.payload } } }) -export const skipToNextEpisode = () => (dispatch, getState) => { +export const generatePlaylist = () => (dispatch, getState) => { const { playingShow, currentEpisode } = getState().audioPlayer; if (playingShow && currentEpisode) { @@ -92,31 +96,39 @@ export const skipToNextEpisode = () => (dispatch, getState) => { currentIndex = 0; } - if (currentIndex < allEpisodes.length - 1) { + dispatch(setPlaylist(allEpisodes)) + dispatch(setCurrentIndex(currentIndex)) + + } + +} + +export const skipToNextEpisode = () => (dispatch, getState) => { + const { playingShow, currentEpisode, playlist, currentIndex } = getState().audioPlayer; + + if (playingShow && currentEpisode && playlist) { + if (currentIndex < playlist.length - 1) { console.log("Just checkign that this evaluates to true") - const nextEpisode = allEpisodes[currentIndex + 1]; + const nextEpisode = playlist[currentIndex + 1]; console.log(nextEpisode) dispatch(setCurrentEpisode(nextEpisode)); - console.log(getState().audioPlayer.currentEpisode) dispatch(setIsPlaying(true)); + dispatch(setCurrentIndex(currentIndex + 1)) } } }; export const skipToPreviousEpisode = () => (dispatch, getState) => { - const { playingShow, currentEpisode } = getState().audioPlayer - if (playingShow && currentEpisode) { - const allEpisodes = getAllEpisodes(playingShow); - let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - - if (currentIndex === -1) { - currentIndex = 0; - } + const { playingShow, currentEpisode, playlist, currentIndex } = getState().audioPlayer; + if (playingShow && currentEpisode && playlist) { if (currentIndex > 0) { - const previousEpisode = allEpisodes[currentIndex - 1]; - dispatch(setCurrentEpisode(previousEpisode)); + console.log("Just checkign that this evaluates to true") + const nextEpisode = playlist[currentIndex - 1]; + console.log(nextEpisode) + dispatch(setCurrentEpisode(nextEpisode)); dispatch(setIsPlaying(true)); + dispatch(setCurrentIndex(currentIndex - 1)) } } }; @@ -132,6 +144,7 @@ export const { setIsPlaying, setPlayingShow, setPlaylist, + setCurrentIndex } = audioPlayerSlice.actions; export { selectIsListened } export default audioPlayerSlice.reducer; \ No newline at end of file From b4e451376098b96213475e8b0e5170aad87312b6 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 21:18:01 +0200 Subject: [PATCH 259/323] FIx: Update name of play/pause handler function --- src/components/AudioPlayer.jsx | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 6e2d86bac..6c0eeefca 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -46,7 +46,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; }; - const handlePlay = () => { + const handlePlayPause = () => { dispatch(setIsPlaying(!isPlaying)) dispatch(generatePlaylist()) } @@ -213,7 +213,7 @@ const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { }}> - handlePlay()} disabled={!isLoaded} sx={{ + handlePlayPause()} disabled={!isLoaded} sx={{ padding: '12px', width: '72px', height: '72px', From 295fb0ea40e1c88bea39deba9f07b69ff2a9ae10 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 21:43:01 +0200 Subject: [PATCH 260/323] Fix: Remove old unused prop onEpisodeComplete from AudioPlayer --- src/components/AudioPlayer.jsx | 2 +- src/state/audioPlayerSlice.js | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 6c0eeefca..c73b8df5b 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -10,7 +10,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp, generatePlaylist } from '../state/audioPlayerSlice' import Volume from './Volume' -const AudioPlayer = ({ onEpisodeComplete, updateEpisodeTimestamp }) => { +const AudioPlayer = ({ updateEpisodeTimestamp }) => { const [progress, setProgress] = useState(0); const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index e112dc864..12f69c361 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -98,6 +98,7 @@ export const generatePlaylist = () => (dispatch, getState) => { dispatch(setPlaylist(allEpisodes)) dispatch(setCurrentIndex(currentIndex)) + console.log(currentIndex) } From 29e3f9e24d4fef04234348552d1952d3402cfb97 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 21:56:23 +0200 Subject: [PATCH 261/323] Fix: Add check to see if playlist exists or not on play/pause to prevent unnecesarily running generatePlaylist thunk --- src/components/AudioPlayer.jsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index c73b8df5b..169e1e0bc 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -21,7 +21,8 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) const currentEpisode = useSelector((state) => state.audioPlayer.currentEpisode) const playingShow = useSelector((state) => state.audioPlayer.playingShow); - const currentTime = useSelector((state) => state.audioPlayer.currentTime); + const playlistExists = useSelector((state) => state.audioPlayer.playlist) + // const currentTime = useSelector((state) => state.audioPlayer.currentTime); const duration = useSelector((state) => state.audioPlayer.duration); // useEffect(() => { @@ -48,7 +49,9 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { const handlePlayPause = () => { dispatch(setIsPlaying(!isPlaying)) - dispatch(generatePlaylist()) + if (!playlistExists) { + dispatch(generatePlaylist()) + } } useEffect(() => { @@ -129,6 +132,7 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { if (audioRef.current) { const currentProgress = (audioRef.current.currentTime / audioRef.current.duration) * 100 || 0; setProgress(currentProgress); + console.log("current progress state is", currentProgress) } }; @@ -137,6 +141,7 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { const time = (newValue / 100) * audioRef.current.duration; audioRef.current.currentTime = time; setCurrentTime(time); + console.log("current time state is", currentTime) } setProgress(newValue); }; From 24c3fb45424061f785b2772152bffc5e4cf721ac Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 11 Feb 2025 22:07:36 +0200 Subject: [PATCH 262/323] Fix: Restore currentTime selector and references --- src/components/AudioPlayer.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 169e1e0bc..2f54bc5e2 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -22,7 +22,7 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { const currentEpisode = useSelector((state) => state.audioPlayer.currentEpisode) const playingShow = useSelector((state) => state.audioPlayer.playingShow); const playlistExists = useSelector((state) => state.audioPlayer.playlist) - // const currentTime = useSelector((state) => state.audioPlayer.currentTime); + const currentTime = useSelector((state) => state.audioPlayer.currentTime); const duration = useSelector((state) => state.audioPlayer.duration); // useEffect(() => { From f0fe9121bcb8089a69c1cf25bd09559696871725 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 13:54:50 +0200 Subject: [PATCH 263/323] Fix: Migrate slider to its own component --- src/components/AudioPlayer.jsx | 68 +++++++++------------------------- src/components/AudioSlider.jsx | 50 +++++++++++++++++++++++++ 2 files changed, 68 insertions(+), 50 deletions(-) create mode 100644 src/components/AudioSlider.jsx diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 2f54bc5e2..e4217a382 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -9,9 +9,10 @@ import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp, generatePlaylist } from '../state/audioPlayerSlice' import Volume from './Volume' +import AudioSlider from './AudioSlider'; const AudioPlayer = ({ updateEpisodeTimestamp }) => { - const [progress, setProgress] = useState(0); + const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); const theme = useTheme(); @@ -22,8 +23,8 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { const currentEpisode = useSelector((state) => state.audioPlayer.currentEpisode) const playingShow = useSelector((state) => state.audioPlayer.playingShow); const playlistExists = useSelector((state) => state.audioPlayer.playlist) - const currentTime = useSelector((state) => state.audioPlayer.currentTime); - const duration = useSelector((state) => state.audioPlayer.duration); + + // useEffect(() => { // const audio = audioRef.current; @@ -41,12 +42,6 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { // }; // }, []); - const formatTime = (time) => { - const minutes = Math.floor(time / 60); - const seconds = Math.floor(time % 60); - return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; - }; - const handlePlayPause = () => { dispatch(setIsPlaying(!isPlaying)) if (!playlistExists) { @@ -54,22 +49,22 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { } } - useEffect(() => { - const audio = audioRef.current; - if (!audio) return; + // useEffect(() => { + // const audio = audioRef.current; + // if (!audio) return; - const handleTimeUpdate = () => { - if (playingShow && currentEpisode) { - updateEpisodeTimestamp(playingShow.id, currentEpisode.episodeTitle, Math.floor(audio.currentTime)); - } - }; + // const handleTimeUpdate = () const currentTime = useSelector((state) => state.audioPlayer.currentTime); => { + // if (playingShow && currentEpisode) { + // updateEpisodeTimestamp(playingShow.id, currentEpisode.episodeTitle, Math.floor(audio.currentTime)); + // } + // }; - audio.addEventListener('timeupdate', handleTimeUpdate); + // audio.addEventListener('timeupdate', handleTimeUpdate); - return () => { - audio.removeEventListener('timeupdate', handleTimeUpdate); - }; - }, [playingShow, currentEpisode, updateEpisodeTimestamp]); + // return () => { + // audio.removeEventListener('timeupdate', handleTimeUpdate); + // }; + // }, [playingShow, currentEpisode, updateEpisodeTimestamp]); // Handle play/pause useEffect(() => { @@ -136,15 +131,6 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { } }; - const handleProgressChange = (event, newValue) => { - if (audioRef.current) { - const time = (newValue / 100) * audioRef.current.duration; - audioRef.current.currentTime = time; - setCurrentTime(time); - console.log("current time state is", currentTime) - } - setProgress(newValue); - }; // Handle episode completion const handleEpisodeEnd = () => { @@ -181,25 +167,7 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { onTimeUpdate={handleTimeUpdate} onEnded={handleEpisodeEnd} /> - - - {formatTime(currentTime)} - - - - {formatTime(duration)} - - - + {currentEpisode && ( diff --git a/src/components/AudioSlider.jsx b/src/components/AudioSlider.jsx new file mode 100644 index 000000000..6bcb61934 --- /dev/null +++ b/src/components/AudioSlider.jsx @@ -0,0 +1,50 @@ +import { Box, Slider, Typography } from '@mui/material'; +import { useState } from 'react'; +import { useDispatch, useSelector } from 'react-redux'; +import { useTheme } from '@mui/material/styles'; + +const AudioSlider = () => { + const theme = useTheme(); + const [progress, setProgress] = useState(0); + const duration = useSelector((state) => state.audioPlayer.duration); + const currentTime = useSelector((state) => state.audioPlayer.currentTime); + + const formatTime = (time) => { + const minutes = Math.floor(time / 60); + const seconds = Math.floor(time % 60); + return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; + }; + + const handleProgressChange = (event, newValue) => { + if (audioRef.current) { + const time = (newValue / 100) * audioRef.current.duration; + audioRef.current.currentTime = time; + setCurrentTime(time); + console.log("current time state is", currentTime) + } + setProgress(newValue); + }; + + return ( + + + {formatTime(currentTime)} + + + + {formatTime(duration)} + + + ) +} + +export default AudioSlider \ No newline at end of file From 219feee1abf6ed2a33cf834c6014d384e06d5a04 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 18:45:47 +0200 Subject: [PATCH 264/323] Fix: begin expanding logic for audio slider --- src/components/AudioPlayer.jsx | 2 +- src/components/AudioSlider.jsx | 9 +++++---- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index e4217a382..6569a68fb 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -167,7 +167,7 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { onTimeUpdate={handleTimeUpdate} onEnded={handleEpisodeEnd} /> - + {currentEpisode && ( diff --git a/src/components/AudioSlider.jsx b/src/components/AudioSlider.jsx index 6bcb61934..e539eeeed 100644 --- a/src/components/AudioSlider.jsx +++ b/src/components/AudioSlider.jsx @@ -5,6 +5,7 @@ import { useTheme } from '@mui/material/styles'; const AudioSlider = () => { const theme = useTheme(); + const dispatch = useDispatch() const [progress, setProgress] = useState(0); const duration = useSelector((state) => state.audioPlayer.duration); const currentTime = useSelector((state) => state.audioPlayer.currentTime); @@ -16,10 +17,10 @@ const AudioSlider = () => { }; const handleProgressChange = (event, newValue) => { - if (audioRef.current) { - const time = (newValue / 100) * audioRef.current.duration; - audioRef.current.currentTime = time; - setCurrentTime(time); + if (audio.current) { + const time = (newValue / 100) * audio.current.duration; + audio.current.currentTime = time; + dispatch(setCurrentTime(time)); console.log("current time state is", currentTime) } setProgress(newValue); From c981de45c95a2d499da70b5b9e78e0a930a2ae8f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 19:30:37 +0200 Subject: [PATCH 265/323] Feat: Implement audio service file to manage audio element --- src/services/AudioService.js | 14 ++++++++++++++ 1 file changed, 14 insertions(+) create mode 100644 src/services/AudioService.js diff --git a/src/services/AudioService.js b/src/services/AudioService.js new file mode 100644 index 000000000..00511440f --- /dev/null +++ b/src/services/AudioService.js @@ -0,0 +1,14 @@ +class AudioService { + constructor() { + const audioElement = new Audio(); + this.play = () => audioElement.play(); + this.pause = () => audioElement.pause(); + this.setSource = (src) => audioElement.src = src; + this.setVolume = (volume) => audioElement.volume = volume; + this.duration = () => audioElement.duration; + this.currentTime = () => audioElement.currentTime; + + } +} + +export const audioService = new AudioService(); \ No newline at end of file From aec5775dca1c421d9d4e46cf53cf673ecc7047fd Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 20:45:34 +0200 Subject: [PATCH 266/323] Fix: Add event listeners to audio service --- src/services/AudioService.js | 11 +++++++++-- src/state/audioPlayerSlice.js | 1 + 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/services/AudioService.js b/src/services/AudioService.js index 00511440f..ee5d6a316 100644 --- a/src/services/AudioService.js +++ b/src/services/AudioService.js @@ -1,13 +1,20 @@ class AudioService { constructor() { const audioElement = new Audio(); + this.audio = audioElement; + this.play = () => audioElement.play(); this.pause = () => audioElement.pause(); this.setSource = (src) => audioElement.src = src; this.setVolume = (volume) => audioElement.volume = volume; - this.duration = () => audioElement.duration; - this.currentTime = () => audioElement.currentTime; + this.getDuration = () => audioElement.duration; + this.getCurrentTime = () => audioElement.currentTime; + this.setCurrentTime = (time) => audioElement.currentTime = time; + // Event listeners + this.onTimeUpdate = (callback) => audioElement.addEventListener('timeupdate', callback); + this.onEnded = (callback) => audioElement.addEventListener('ended', callback); + this.onLoadedData = (callback) => audioElement.addEventListener('loadeddata', callback); } } diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 12f69c361..571753eb8 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -1,5 +1,6 @@ import { createSelector, createSlice } from "@reduxjs/toolkit"; import { getAllEpisodes, findEpisodeIndex } from "../utils/episodeUtils"; +import { audioService } from "../services/AudioService"; const loadTimestamps = () => { try { From 32b5053d470fedc589b2b0b859123e0ec2e17881 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 20:48:05 +0200 Subject: [PATCH 267/323] Fix: Remove MUI Slider import from audioPlayer.jsx --- src/components/AudioPlayer.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 6569a68fb..17f596427 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -1,5 +1,5 @@ import { useState, useEffect, useRef } from 'react'; -import { Box, IconButton, Slider, Typography } from '@mui/material'; +import { Box, IconButton, Typography } from '@mui/material'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import PauseIcon from '@mui/icons-material/Pause'; import SkipNextIcon from '@mui/icons-material/SkipNext'; From 98d68d3505f65f75ee17e5c29760b6f52d27ca14 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 20:52:50 +0200 Subject: [PATCH 268/323] Fix: Add thunks to manage play/pause and seeking --- src/state/audioPlayerSlice.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 571753eb8..11c9511be 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -85,6 +85,33 @@ const audioPlayerSlice = createSlice({ }) +export const togglePlayPause = () => (dispatch, getState) => { + const { isPlaying } = getState().audioPlayer; + + if (isPlaying) { + audioService.pause(); + } else { + audioService.play(); + } + dispatch(setIsPlaying(!isPlaying)); +}; + +export const playEpisode = (episode) => async (dispatch) => { + try { + audioService.setSource(episode.file); + await audioService.play(); + dispatch(setCurrentEpisode(episode)); + dispatch(setIsPlaying(true)); + } catch (error) { + console.error('Failed to play episode:', error); + } +}; + +export const seekTo = (time) => (dispatch) => { + audioService.setCurrentTime(time); + dispatch(setCurrentTime(time)); +}; + export const generatePlaylist = () => (dispatch, getState) => { const { playingShow, currentEpisode } = getState().audioPlayer; From 0c4c9a48009e0b1315f4bc9b8671e33e08485ce4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 21:15:20 +0200 Subject: [PATCH 269/323] Fix: Migrate to new play/pause handler and remove old useEffects --- src/components/AudioPlayer.jsx | 46 ++-------------------------------- 1 file changed, 2 insertions(+), 44 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 17f596427..7f9f4717b 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -7,7 +7,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp, generatePlaylist } from '../state/audioPlayerSlice' +import { togglePlayPause, setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp, generatePlaylist } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; @@ -24,48 +24,6 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { const playingShow = useSelector((state) => state.audioPlayer.playingShow); const playlistExists = useSelector((state) => state.audioPlayer.playlist) - - - // useEffect(() => { - // const audio = audioRef.current; - // const updateTime = () => setCurrentTime(audio.currentTime); - // const updateDuration = () => setDuration(audio.duration); - - // audio.addEventListener('timeupdate', updateTime); - // audio.addEventListener('loadedmetadata', updateDuration); - // audio.addEventListener('durationchange', updateDuration); - - // return () => { - // audio.removeEventListener('timeupdate', updateTime); - // audio.removeEventListener('loadedmetadata', updateDuration); - // audio.removeEventListener('durationchange', updateDuration); - // }; - // }, []); - - const handlePlayPause = () => { - dispatch(setIsPlaying(!isPlaying)) - if (!playlistExists) { - dispatch(generatePlaylist()) - } - } - - // useEffect(() => { - // const audio = audioRef.current; - // if (!audio) return; - - // const handleTimeUpdate = () const currentTime = useSelector((state) => state.audioPlayer.currentTime); => { - // if (playingShow && currentEpisode) { - // updateEpisodeTimestamp(playingShow.id, currentEpisode.episodeTitle, Math.floor(audio.currentTime)); - // } - // }; - - // audio.addEventListener('timeupdate', handleTimeUpdate); - - // return () => { - // audio.removeEventListener('timeupdate', handleTimeUpdate); - // }; - // }, [playingShow, currentEpisode, updateEpisodeTimestamp]); - // Handle play/pause useEffect(() => { if (audioRef.current && isLoaded) { @@ -186,7 +144,7 @@ const AudioPlayer = ({ updateEpisodeTimestamp }) => { }}> - handlePlayPause()} disabled={!isLoaded} sx={{ + dispatch(togglePlayPause())} disabled={!isLoaded} sx={{ padding: '12px', width: '72px', height: '72px', From b1009d6ebbd3da4ed372494428d7105f4e9af79f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 21:18:07 +0200 Subject: [PATCH 270/323] Fix: Migrate AudioSlider to new hanlders and state in redux --- src/components/AudioSlider.jsx | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) diff --git a/src/components/AudioSlider.jsx b/src/components/AudioSlider.jsx index e539eeeed..79adfcc99 100644 --- a/src/components/AudioSlider.jsx +++ b/src/components/AudioSlider.jsx @@ -1,31 +1,27 @@ import { Box, Slider, Typography } from '@mui/material'; -import { useState } from 'react'; import { useDispatch, useSelector } from 'react-redux'; import { useTheme } from '@mui/material/styles'; +import { seekTo } from '../state/audioPlayerSlice'; const AudioSlider = () => { const theme = useTheme(); - const dispatch = useDispatch() - const [progress, setProgress] = useState(0); + const dispatch = useDispatch(); const duration = useSelector((state) => state.audioPlayer.duration); const currentTime = useSelector((state) => state.audioPlayer.currentTime); + const handleProgressChange = (_, newValue) => { + const time = (newValue / 100) * duration; + dispatch(seekTo(time)); + }; + + const progress = duration ? (currentTime / duration) * 100 : 0; + const formatTime = (time) => { const minutes = Math.floor(time / 60); const seconds = Math.floor(time % 60); return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; }; - const handleProgressChange = (event, newValue) => { - if (audio.current) { - const time = (newValue / 100) * audio.current.duration; - audio.current.currentTime = time; - dispatch(setCurrentTime(time)); - console.log("current time state is", currentTime) - } - setProgress(newValue); - }; - return ( From 54bb59263f67a46ab1e4fcd2bf15548b6a9e8995 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 21:19:35 +0200 Subject: [PATCH 271/323] Fix: Remove unused prop from AudioPlayer --- src/components/AudioPlayer.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 7f9f4717b..1a1acbd61 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -11,8 +11,7 @@ import { togglePlayPause, setCurrentEpisode, setIsPlaying, skipToNextEpisode, sk import Volume from './Volume' import AudioSlider from './AudioSlider'; -const AudioPlayer = ({ updateEpisodeTimestamp }) => { - +const AudioPlayer = () => { const [isLoaded, setIsLoaded] = useState(false); const audioRef = useRef(null); const theme = useTheme(); From d4cc12e1ccdf8d2ba6ce133808d9be97ccf0a9b8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 21:20:33 +0200 Subject: [PATCH 272/323] Fix: Remove unused imports and variables from AudioPlayer --- src/components/AudioPlayer.jsx | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 1a1acbd61..e4c66eba8 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -7,7 +7,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { togglePlayPause, setCurrentEpisode, setIsPlaying, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp, generatePlaylist } from '../state/audioPlayerSlice' +import { togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp, generatePlaylist } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; @@ -21,7 +21,6 @@ const AudioPlayer = () => { const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) const currentEpisode = useSelector((state) => state.audioPlayer.currentEpisode) const playingShow = useSelector((state) => state.audioPlayer.playingShow); - const playlistExists = useSelector((state) => state.audioPlayer.playlist) // Handle play/pause useEffect(() => { From 5a629ebd2eeb388217632a36c1cace4a0750bfd9 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 21:21:03 +0200 Subject: [PATCH 273/323] Fix: Remove unused generatePlaylist import from AudioPlayer --- src/components/AudioPlayer.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index e4c66eba8..42087ff18 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -7,7 +7,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp, generatePlaylist } from '../state/audioPlayerSlice' +import { togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; From 67f13cf21145ab3d277b026384063c29a13a69d3 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 12 Feb 2025 21:31:25 +0200 Subject: [PATCH 274/323] Fix: Set play button to be disabled when there is no currentEpisode --- src/components/AudioPlayer.jsx | 108 +++++---------------------------- 1 file changed, 14 insertions(+), 94 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 42087ff18..8963e86b0 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -7,104 +7,29 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setEpisodeAsListened, setDuration, setCurrentTime, saveTimestamp } from '../state/audioPlayerSlice' +import { togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; +import { audioService } from '../services/AudioService'; const AudioPlayer = () => { - const [isLoaded, setIsLoaded] = useState(false); - const audioRef = useRef(null); const theme = useTheme(); // Redux const dispatch = useDispatch() const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) const currentEpisode = useSelector((state) => state.audioPlayer.currentEpisode) - const playingShow = useSelector((state) => state.audioPlayer.playingShow); - // Handle play/pause useEffect(() => { - if (audioRef.current && isLoaded) { - if (isPlaying) { - dispatch(setDuration(audioRef.current.duration)) - const playPromise = audioRef.current.play(); - if (playPromise !== undefined) { - playPromise.catch(error => console.error("Playback failed", error)); - } - } else { - audioRef.current.pause(); - } - } - }, [isPlaying, isLoaded, dispatch]); - - // Effect to handle episode changes - useEffect(() => { - if (currentEpisode && audioRef.current) { - setIsLoaded(false); - audioRef.current.pause(); - audioRef.current.currentTime = 0; - audioRef.current.src = currentEpisode.file; - - audioRef.current.addEventListener('loadeddata', () => { - setIsLoaded(true); - // If isPlaying is true, start playing the new episode - if (isPlaying) { - audioRef.current.play().catch(error => - console.error("Playback failed", error) - ); - } - }, { once: true }); - } - }, [currentEpisode, isPlaying]); - - // Effect to update timestamp in Redux - useEffect(() => { - const audio = audioRef.current; - if (!audio) return; - - const handleTimeUpdate = () => { - if (playingShow && currentEpisode) { - const currentTime = Math.floor(audio.currentTime); - dispatch(setCurrentTime(currentTime)); - // Update timestamp in Redux/localStorage - dispatch(saveTimestamp({ - episodeId: `${playingShow.id}-${currentEpisode.episodeTitle}`, - timestamp: currentTime - })); - } - }; - - audio.addEventListener('timeupdate', handleTimeUpdate); - return () => audio.removeEventListener('timeupdate', handleTimeUpdate); - }, [playingShow, currentEpisode, dispatch]); - - - const handleTimeUpdate = () => { - if (audioRef.current) { - const currentProgress = (audioRef.current.currentTime / audioRef.current.duration) * 100 || 0; - setProgress(currentProgress); - console.log("current progress state is", currentProgress) - } - }; - - - // Handle episode completion - const handleEpisodeEnd = () => { - if (currentEpisode && playingShow) { - console.log("This is playing show", playingShow) - dispatch(setEpisodeAsListened({ - show: playingShow.id, - episode: { - showId: playingShow.id, - showTitle: playingShow.title, - episodeTitle: currentEpisode.episodeTitle, - listenedAt: new Date().toISOString() - } - })); - dispatch(skipToNextEpisode()); - } - }; - + // Set up one-time event listeners + audioService.onTimeUpdate(() => { + dispatch(setCurrentTime(audioService.getCurrentTime())); + }); + + audioService.onEnded(() => { + dispatch(skipToNextEpisode()); + }); + }, [dispatch]); return ( { alignItems: 'center', padding: '0.5rem', }}> - - dispatch(togglePlayPause())} disabled={!isLoaded} sx={{ + dispatch(togglePlayPause())} disabled={!currentEpisode} sx={{ padding: '12px', width: '72px', height: '72px', @@ -160,7 +80,7 @@ const AudioPlayer = () => { - + ); From 1f69424ebd0422747454ba1c529f959c8c19878e Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 13 Feb 2025 11:36:37 +0200 Subject: [PATCH 275/323] Fix: modify playlist logic to be false when empty --- src/components/AudioPlayer.jsx | 23 ++++++++++++++++++++--- src/state/audioPlayerSlice.js | 14 +++++--------- 2 files changed, 25 insertions(+), 12 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 8963e86b0..c4aa807ab 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -7,7 +7,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime } from '../state/audioPlayerSlice' +import { playEpisode, generatePlaylist, togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; import { audioService } from '../services/AudioService'; @@ -29,7 +29,24 @@ const AudioPlayer = () => { audioService.onEnded(() => { dispatch(skipToNextEpisode()); }); - }, [dispatch]); + }, [dispatch]); + + const handlePlayPause = () => { + console.log("currentEpisode is:", currentEpisode) + // If no episode is playing yet but we have a currentEpisode selected + if (!isPlaying && currentEpisode) { + dispatch(playEpisode(currentEpisode)); + } + // If we're already playing or paused + else { + dispatch(togglePlayPause()); + } + + // Generate playlist if needed + // if (!playlistExists) { + // dispatch(generatePlaylist()); + // } + } return ( { }}> - dispatch(togglePlayPause())} disabled={!currentEpisode} sx={{ + handlePlayPause()} disabled={!currentEpisode} sx={{ padding: '12px', width: '72px', height: '72px', diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 11c9511be..207c24acd 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -43,7 +43,7 @@ const audioPlayerSlice = createSlice({ initialState: { currentEpisode: null, currentIndex: 0, - playlist: [], + playlist: null, isPlaying: false, playingShow: null, duration:0, @@ -99,9 +99,10 @@ export const togglePlayPause = () => (dispatch, getState) => { export const playEpisode = (episode) => async (dispatch) => { try { audioService.setSource(episode.file); - await audioService.play(); + audioService.play(); dispatch(setCurrentEpisode(episode)); dispatch(setIsPlaying(true)); + dispatch(generatePlaylist()) } catch (error) { console.error('Failed to play episode:', error); } @@ -117,19 +118,14 @@ export const generatePlaylist = () => (dispatch, getState) => { if (playingShow && currentEpisode) { const allEpisodes = getAllEpisodes(playingShow); - console.log("all episodes looks like this", allEpisodes) let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - console.log("current index is", currentIndex) if (currentIndex === -1) { currentIndex = 0; } dispatch(setPlaylist(allEpisodes)) dispatch(setCurrentIndex(currentIndex)) - console.log(currentIndex) - } - } export const skipToNextEpisode = () => (dispatch, getState) => { @@ -140,7 +136,7 @@ export const skipToNextEpisode = () => (dispatch, getState) => { console.log("Just checkign that this evaluates to true") const nextEpisode = playlist[currentIndex + 1]; console.log(nextEpisode) - dispatch(setCurrentEpisode(nextEpisode)); + dispatch(playEpisode(nextEpisode)); dispatch(setIsPlaying(true)); dispatch(setCurrentIndex(currentIndex + 1)) } @@ -155,7 +151,7 @@ export const skipToPreviousEpisode = () => (dispatch, getState) => { console.log("Just checkign that this evaluates to true") const nextEpisode = playlist[currentIndex - 1]; console.log(nextEpisode) - dispatch(setCurrentEpisode(nextEpisode)); + dispatch(playEpisode(nextEpisode)); dispatch(setIsPlaying(true)); dispatch(setCurrentIndex(currentIndex - 1)) } From 5d9db0c22bc87d60034e8cfbe0e408101d3563f0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 13 Feb 2025 11:40:50 +0200 Subject: [PATCH 276/323] Fix: episode logic now top play episodes correctly when play episode button clicked, as well as generate playlist for that episodes respective show --- src/components/Episode.jsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 571925f43..0fb933574 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -8,7 +8,7 @@ import { import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; -import { saveTimestamp, setEpisodeAsListened, selectIsListened, setCurrentEpisode, setIsPlaying, setPlayingShow } from '../state/audioPlayerSlice'; +import { saveTimestamp, setEpisodeAsListened, selectIsListened, setCurrentEpisode, setIsPlaying, setPlayingShow, generatePlaylist, playEpisode } from '../state/audioPlayerSlice'; import { selectIsFavourite } from "../state/favouritesSlice"; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; @@ -23,9 +23,9 @@ const Episode = ({ show, episode, selectedSeason }) => { const dispatch = useDispatch(); const handlePlayEpisode = (episodeDetails) => { - dispatch(setCurrentEpisode(episodeDetails)); - dispatch(setIsPlaying(true)) + dispatch(playEpisode(episodeDetails)) dispatch(setPlayingShow(playingShow)) + dispatch(generatePlaylist()) } const episodeDetails = { From 2e41b4e954983b6e0ebac05321927bc213f67cb6 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 13 Feb 2025 18:58:34 +0200 Subject: [PATCH 277/323] Fix: Set event listener within audio service and migrate seeking logic to react useState to run tests on performance --- src/components/AudioPlayer.jsx | 13 ------------- src/components/AudioSlider.jsx | 23 ++++++++++++++++++++--- src/components/Volume.jsx | 2 +- src/services/AudioService.js | 19 ++++++++++++++----- src/state/audioPlayerSlice.js | 8 +++++--- 5 files changed, 40 insertions(+), 25 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index c4aa807ab..edec615a2 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -1,4 +1,3 @@ -import { useState, useEffect, useRef } from 'react'; import { Box, IconButton, Typography } from '@mui/material'; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import PauseIcon from '@mui/icons-material/Pause'; @@ -10,7 +9,6 @@ import { useDispatch, useSelector } from 'react-redux'; import { playEpisode, generatePlaylist, togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; -import { audioService } from '../services/AudioService'; const AudioPlayer = () => { const theme = useTheme(); @@ -20,17 +18,6 @@ const AudioPlayer = () => { const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) const currentEpisode = useSelector((state) => state.audioPlayer.currentEpisode) - useEffect(() => { - // Set up one-time event listeners - audioService.onTimeUpdate(() => { - dispatch(setCurrentTime(audioService.getCurrentTime())); - }); - - audioService.onEnded(() => { - dispatch(skipToNextEpisode()); - }); - }, [dispatch]); - const handlePlayPause = () => { console.log("currentEpisode is:", currentEpisode) // If no episode is playing yet but we have a currentEpisode selected diff --git a/src/components/AudioSlider.jsx b/src/components/AudioSlider.jsx index 79adfcc99..4152121bb 100644 --- a/src/components/AudioSlider.jsx +++ b/src/components/AudioSlider.jsx @@ -1,17 +1,22 @@ import { Box, Slider, Typography } from '@mui/material'; import { useDispatch, useSelector } from 'react-redux'; import { useTheme } from '@mui/material/styles'; -import { seekTo } from '../state/audioPlayerSlice'; +// import { seekTo } from '../state/audioPlayerSlice'; +import { audioService } from '../services/AudioService'; +import { useEffect, useState } from 'react'; +// import { setCurrentTime } from '../state/audioPlayerSlice'; const AudioSlider = () => { const theme = useTheme(); const dispatch = useDispatch(); const duration = useSelector((state) => state.audioPlayer.duration); - const currentTime = useSelector((state) => state.audioPlayer.currentTime); + // const currentTime = useSelector((state) => state.audioPlayer.currentTime); + const [currentTime, setCurrentTime] = useState(0) + const handleProgressChange = (_, newValue) => { const time = (newValue / 100) * duration; - dispatch(seekTo(time)); + seekTo(time); }; const progress = duration ? (currentTime / duration) * 100 : 0; @@ -22,6 +27,18 @@ const AudioSlider = () => { return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; }; + useEffect(() => { + audioService.onTimeUpdate((time) => { + dispatch(setCurrentTime(time)); + }); + }, [dispatch]); + + const seekTo = (time) => { + audioService.setCurrentTime(time); + setCurrentTime(time); + }; + + return ( diff --git a/src/components/Volume.jsx b/src/components/Volume.jsx index 4c76818ae..222136a21 100644 --- a/src/components/Volume.jsx +++ b/src/components/Volume.jsx @@ -50,7 +50,7 @@ const Volume = ({ audioRef }) => { Volume.propTypes = { audioRef: PropTypes.shape({ current: PropTypes.instanceOf(HTMLAudioElement) - }).isRequired + }) }; export default Volume \ No newline at end of file diff --git a/src/services/AudioService.js b/src/services/AudioService.js index ee5d6a316..f0bf2b022 100644 --- a/src/services/AudioService.js +++ b/src/services/AudioService.js @@ -5,16 +5,25 @@ class AudioService { this.play = () => audioElement.play(); this.pause = () => audioElement.pause(); - this.setSource = (src) => audioElement.src = src; this.setVolume = (volume) => audioElement.volume = volume; this.getDuration = () => audioElement.duration; this.getCurrentTime = () => audioElement.currentTime; this.setCurrentTime = (time) => audioElement.currentTime = time; - // Event listeners - this.onTimeUpdate = (callback) => audioElement.addEventListener('timeupdate', callback); - this.onEnded = (callback) => audioElement.addEventListener('ended', callback); - this.onLoadedData = (callback) => audioElement.addEventListener('loadeddata', callback); + this.setSource = (src) => { + audioElement.src = src; + return new Promise((resolve) => { + audioElement.addEventListener('loadedmetadata', () => { + resolve(audioElement.duration); + }, { once: true }); + }); + }; + + this.onTimeUpdate = (callback) => { + audioElement.addEventListener('timeupdate', () => { + callback(audioElement.currentTime); + }); + }; } } diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 207c24acd..d6d157d23 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -98,11 +98,13 @@ export const togglePlayPause = () => (dispatch, getState) => { export const playEpisode = (episode) => async (dispatch) => { try { - audioService.setSource(episode.file); - audioService.play(); + const duration = await audioService.setSource(episode.file); + await audioService.play(); dispatch(setCurrentEpisode(episode)); dispatch(setIsPlaying(true)); - dispatch(generatePlaylist()) + dispatch(generatePlaylist()); + dispatch(setDuration(duration)); + console.log("Duration set to:", duration); } catch (error) { console.error('Failed to play episode:', error); } From ea61fa5fe397a5bbc77ebe12877fc919e67128a4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 12:47:49 +0200 Subject: [PATCH 278/323] Fix: Refactor volume component and state logic, fix bugs where slider and mute were not triggering and updating state correctly --- src/components/Volume.jsx | 27 ++++++++++++++++++--------- src/services/AudioService.js | 4 +++- 2 files changed, 21 insertions(+), 10 deletions(-) diff --git a/src/components/Volume.jsx b/src/components/Volume.jsx index 222136a21..a273038b5 100644 --- a/src/components/Volume.jsx +++ b/src/components/Volume.jsx @@ -5,21 +5,30 @@ import { useState } from 'react'; import { Box, IconButton, Slider } from '@mui/material'; import { useTheme } from '@mui/material/styles'; import PropTypes from 'prop-types' +import { audioService } from '../services/AudioService'; -const Volume = ({ audioRef }) => { - const [isMuted, setIsMuted] = useState(false) - const [volume, setVolume] = useState(0.5) +const Volume = () => { + const [isMuted, setIsMuted] = useState(false); + const [volume, setVolume] = useState(0.5); const theme = useTheme(); + const changeVolume = (volume) => { + audioService.setVolume(volume); + setVolume(volume); + } + const toggleMute = () => { - setIsMuted(!isMuted); - audioRef.current.volume = isMuted ? volume : 0; + setIsMuted((prevIsMuted) => { + const newIsMuted = !prevIsMuted; + const newVolume = newIsMuted? 0 : 0.5; + changeVolume(newVolume); + return newIsMuted; + }); }; - const handleVolumeChange = (event, newValue) => { - setVolume(newValue); + const handleVolumeChange = (_, newValue) => { + changeVolume(newValue); setIsMuted(newValue === 0); - audioRef.current.volume = newValue; }; return ( @@ -32,7 +41,7 @@ const Volume = ({ audioRef }) => { {isMuted ? : volume > 0.5 ? : } audioElement.play(); this.pause = () => audioElement.pause(); this.setVolume = (volume) => audioElement.volume = volume; + this.getVolume = () => audioElement.volume; + this.muted = () => audioElement.muted; this.getDuration = () => audioElement.duration; this.getCurrentTime = () => audioElement.currentTime; this.setCurrentTime = (time) => audioElement.currentTime = time; @@ -18,7 +20,7 @@ class AudioService { }, { once: true }); }); }; - + this.onTimeUpdate = (callback) => { audioElement.addEventListener('timeupdate', () => { callback(audioElement.currentTime); From 645d84701b9663bdb6dc50cc0ca2800caea62f8d Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 12:56:01 +0200 Subject: [PATCH 279/323] Fix: Remove unused generatePlaylist import from audioPlayer.jsx --- src/components/AudioPlayer.jsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index edec615a2..d819fe24a 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -6,7 +6,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { playEpisode, generatePlaylist, togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime } from '../state/audioPlayerSlice' +import { playEpisode, togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; From 9ba38b1e63661a628b2186faae3f87d87d2e992f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 13:03:11 +0200 Subject: [PATCH 280/323] Fix: Remove useEffect dispatchign current time to redux --- src/components/AudioSlider.jsx | 6 ------ 1 file changed, 6 deletions(-) diff --git a/src/components/AudioSlider.jsx b/src/components/AudioSlider.jsx index 4152121bb..94a712f49 100644 --- a/src/components/AudioSlider.jsx +++ b/src/components/AudioSlider.jsx @@ -27,12 +27,6 @@ const AudioSlider = () => { return `${minutes}:${seconds < 10 ? '0' : ''}${seconds}`; }; - useEffect(() => { - audioService.onTimeUpdate((time) => { - dispatch(setCurrentTime(time)); - }); - }, [dispatch]); - const seekTo = (time) => { audioService.setCurrentTime(time); setCurrentTime(time); From c26e628d45de407354527ba5be75673710044617 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 22:01:02 +0200 Subject: [PATCH 281/323] Fix: Implement useEffect with eventListeners from audioService to get duration and to update time elapsed of episode --- src/components/AudioSlider.jsx | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/src/components/AudioSlider.jsx b/src/components/AudioSlider.jsx index 94a712f49..3585d1cc4 100644 --- a/src/components/AudioSlider.jsx +++ b/src/components/AudioSlider.jsx @@ -9,10 +9,24 @@ import { useEffect, useState } from 'react'; const AudioSlider = () => { const theme = useTheme(); const dispatch = useDispatch(); - const duration = useSelector((state) => state.audioPlayer.duration); - // const currentTime = useSelector((state) => state.audioPlayer.currentTime); - const [currentTime, setCurrentTime] = useState(0) + const [duration, setDuration] = useState(0); + const [currentTime, setCurrentTime] = useState(0); + const episodeIndex = useSelector((state) => state.audioPlayer.currentIndex) + useEffect(() => { + const handleMetadataLoaded = () => { + setDuration(audioService.getDuration()) + } + + audioService.audio.addEventListener("loadedmetadata", handleMetadataLoaded) + + audioService.onTimeUpdate(setCurrentTime) + + return () => { + audioService.audio.removeEventListener("loadedmetadata", handleMetadataLoaded) + audioService.onTimeUpdate(() => {}) + } + }, [episodeIndex]) const handleProgressChange = (_, newValue) => { const time = (newValue / 100) * duration; From dc85ad434a87f580d4c484302ff1434b7a90af73 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 22:09:52 +0200 Subject: [PATCH 282/323] Fix: Add and implement unsubscribe callback in audioService for onTimeUpdate --- src/components/AudioSlider.jsx | 4 ++-- src/services/AudioService.js | 11 ++++++++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/components/AudioSlider.jsx b/src/components/AudioSlider.jsx index 3585d1cc4..ab7741c47 100644 --- a/src/components/AudioSlider.jsx +++ b/src/components/AudioSlider.jsx @@ -20,11 +20,11 @@ const AudioSlider = () => { audioService.audio.addEventListener("loadedmetadata", handleMetadataLoaded) - audioService.onTimeUpdate(setCurrentTime) + const unsubscribe = audioService.onTimeUpdate(setCurrentTime) return () => { audioService.audio.removeEventListener("loadedmetadata", handleMetadataLoaded) - audioService.onTimeUpdate(() => {}) + unsubscribe() } }, [episodeIndex]) diff --git a/src/services/AudioService.js b/src/services/AudioService.js index 5620e33ac..0316c161b 100644 --- a/src/services/AudioService.js +++ b/src/services/AudioService.js @@ -22,9 +22,14 @@ class AudioService { }; this.onTimeUpdate = (callback) => { - audioElement.addEventListener('timeupdate', () => { - callback(audioElement.currentTime); - }); + const listener = () => { + callback(this.audio.currentTime) + } + audioElement.addEventListener('timeupdate', listener) + + return () => { + this.audio.removeEventListener("timeupdate", listener) + } }; } } From e637d93c3cb0fef05ce7ccb4f86a08704ef13943 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 22:16:13 +0200 Subject: [PATCH 283/323] Fix: Remove generatePlaylist from handlePlayEPisode in episode component, it is already called within audioPlayerSlice playEpisode --- src/components/Episode.jsx | 1 - 1 file changed, 1 deletion(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 0fb933574..5ab1de72f 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -25,7 +25,6 @@ const Episode = ({ show, episode, selectedSeason }) => { const handlePlayEpisode = (episodeDetails) => { dispatch(playEpisode(episodeDetails)) dispatch(setPlayingShow(playingShow)) - dispatch(generatePlaylist()) } const episodeDetails = { From cc6523502697f267da6c3009b4bed51ef4eba103 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 22:37:42 +0200 Subject: [PATCH 284/323] Fix: AudioPlayer.jsx now plays and pauses by using methods exposed my AudioService, allowing seeking and pauses followed by playing to continue the playback without restarting --- src/components/AudioPlayer.jsx | 31 ++++++++++++------------------- src/state/audioPlayerSlice.js | 1 + 2 files changed, 13 insertions(+), 19 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index d819fe24a..095d75c85 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -6,34 +6,27 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { playEpisode, togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime } from '../state/audioPlayerSlice' +import { playEpisode, togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime, setIsPlaying } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; +import { audioService } from '../services/AudioService'; const AudioPlayer = () => { const theme = useTheme(); - - // Redux - const dispatch = useDispatch() - const isPlaying = useSelector((state) => state.audioPlayer.isPlaying) - const currentEpisode = useSelector((state) => state.audioPlayer.currentEpisode) + const dispatch = useDispatch(); + const isPlaying = useSelector((state) => state.audioPlayer.isPlaying); + const currentEpisode = useSelector((state) => state.audioPlayer.currentEpisode); const handlePlayPause = () => { - console.log("currentEpisode is:", currentEpisode) - // If no episode is playing yet but we have a currentEpisode selected - if (!isPlaying && currentEpisode) { - dispatch(playEpisode(currentEpisode)); - } - // If we're already playing or paused + if (isPlaying) { + audioService.pause(); + dispatch(setIsPlaying(false)); + } else { - dispatch(togglePlayPause()); + audioService.play(); + dispatch(setIsPlaying(true)); } - - // Generate playlist if needed - // if (!playlistExists) { - // dispatch(generatePlaylist()); - // } - } + }; return ( (dispatch, getState) => { dispatch(setPlaylist(allEpisodes)) dispatch(setCurrentIndex(currentIndex)) + console.log("Current index is:", currentIndex) } } From e80284f74bf55ce5ff33c4a80f34103285588119 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 23:06:12 +0200 Subject: [PATCH 285/323] Fix: Skipping back and forth due to wrong index issues as a result of changing the key name for episode object in Episode.jsx --- src/components/Episode.jsx | 2 +- src/pages/FavouritesPage.jsx | 2 +- src/state/audioPlayerSlice.js | 7 ++++--- src/state/favouritesSlice.js | 8 ++++---- src/utils/episodeUtils.js | 1 + src/utils/fuzzySearch.js | 2 +- 6 files changed, 12 insertions(+), 10 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 5ab1de72f..7b51b871a 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -33,7 +33,7 @@ const Episode = ({ show, episode, selectedSeason }) => { seasonTitle: selectedSeason.title, seasonNumber: selectedSeason.season, title: episode.title, - episodeNumber: episode.episode, + episode: episode.episode, file: episode.file, updated: show.updated, savedAt: new Date().toLocaleString() diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 5b1dd6a5f..20be74021 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -27,7 +27,7 @@ const FavoritesPage = () => { state.audioPlayer.listenedEpisodes, (_, showId) => showId, (_, __, seasonNumber) => seasonNumber, - (_, __, ___, episodeNumber) => episodeNumber + (_, __, ___, episode) => episode ], - (listenedEpisodes, showId, seasonNumber, episodeNumber) => + (listenedEpisodes, showId, seasonNumber, episode) => listenedEpisodes.some( (episode) => episode.showId === showId && episode.seasonNumber === seasonNumber && - episode.episodeNumber === episodeNumber + episode.episode === episode ) ); @@ -122,6 +122,7 @@ export const generatePlaylist = () => (dispatch, getState) => { const allEpisodes = getAllEpisodes(playingShow); let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); if (currentIndex === -1) { + console.log("current index was equal to -1 and triggered the if statement", currentIndex) currentIndex = 0; } diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index e2c8426d6..d63639e47 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -17,14 +17,14 @@ const selectIsFavourite = createSelector( (state) => state.favourites.episodes, (_, showId) => showId, (_, __, seasonNumber) => seasonNumber, - (_, __, ___, episodeNumber) => episodeNumber + (_, __, ___, episode) => episode ], - (favourites, showId, seasonNumber, episodeNumber) => + (favourites, showId, seasonNumber, episode) => favourites.some( (episode) => episode.showId === showId && episode.seasonNumber === seasonNumber && - episode.episodeNumber === episodeNumber + episode.episode === episode ) ); @@ -38,7 +38,7 @@ const favouritesSlice = createSlice({ }, reducers: { toggleFavourite: (state, action) => { - const existingIndex = state.episodes.findIndex(fav => fav.showId === action.payload.showId && fav.seasonNumber === action.payload.seasonNumber && fav.episodeNumber === action.payload.episodeNumber) + const existingIndex = state.episodes.findIndex(fav => fav.showId === action.payload.showId && fav.seasonNumber === action.payload.seasonNumber && fav.episode === action.payload.episode) if (existingIndex === -1) { state.searchedAndSortedFavourites.push(action.payload); diff --git a/src/utils/episodeUtils.js b/src/utils/episodeUtils.js index efc8b2bf6..ee9f620b5 100644 --- a/src/utils/episodeUtils.js +++ b/src/utils/episodeUtils.js @@ -22,6 +22,7 @@ export const getAllEpisodes = (show) => { export const findEpisodeIndex = (allEpisodes, currentEpisode) => { console.log("All episodes is the following:", allEpisodes) + console.log("Current Episode passed in as args:", currentEpisode) return allEpisodes.findIndex(e => e.episode === currentEpisode.episode && (e.season === currentEpisode.season || e.season === undefined) diff --git a/src/utils/fuzzySearch.js b/src/utils/fuzzySearch.js index 0a7bdbd7e..354b48cd3 100644 --- a/src/utils/fuzzySearch.js +++ b/src/utils/fuzzySearch.js @@ -1,6 +1,6 @@ import Fuse from 'fuse.js'; -const favouriteKeys = ['showTitle', 'seasonTitle', 'episodeTitle', 'episodeNumber'] +const favouriteKeys = ['showTitle', 'seasonTitle', 'episodeTitle', 'episode'] const podcastKeys = ['title', 'description'] export const initializeFuzzySearch = (shows) => { From c733f3d16ba44568cdf58010b988d7a7732e3186 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 23:08:19 +0200 Subject: [PATCH 286/323] Fix: Replace seasonNumber with season to correctly reference all episode objects so skip works --- src/components/Episode.jsx | 2 +- src/state/audioPlayerSlice.js | 6 +++--- src/state/favouritesSlice.js | 8 ++++---- 3 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 7b51b871a..6def3dcc4 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -31,7 +31,7 @@ const Episode = ({ show, episode, selectedSeason }) => { showId: show.id, showTitle: show.title, seasonTitle: selectedSeason.title, - seasonNumber: selectedSeason.season, + season: selectedSeason.season, title: episode.title, episode: episode.episode, file: episode.file, diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 13db9e24c..e5d0ed769 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -26,14 +26,14 @@ const selectIsListened = createSelector( [ (state) => state.audioPlayer.listenedEpisodes, (_, showId) => showId, - (_, __, seasonNumber) => seasonNumber, + (_, __, season) => season, (_, __, ___, episode) => episode ], - (listenedEpisodes, showId, seasonNumber, episode) => + (listenedEpisodes, showId, season, episode) => listenedEpisodes.some( (episode) => episode.showId === showId && - episode.seasonNumber === seasonNumber && + episode.season === season && episode.episode === episode ) ); diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index d63639e47..bf4312113 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -16,14 +16,14 @@ const selectIsFavourite = createSelector( [ (state) => state.favourites.episodes, (_, showId) => showId, - (_, __, seasonNumber) => seasonNumber, + (_, __, season) => season, (_, __, ___, episode) => episode ], - (favourites, showId, seasonNumber, episode) => + (favourites, showId, season, episode) => favourites.some( (episode) => episode.showId === showId && - episode.seasonNumber === seasonNumber && + episode.season === season && episode.episode === episode ) ); @@ -38,7 +38,7 @@ const favouritesSlice = createSlice({ }, reducers: { toggleFavourite: (state, action) => { - const existingIndex = state.episodes.findIndex(fav => fav.showId === action.payload.showId && fav.seasonNumber === action.payload.seasonNumber && fav.episode === action.payload.episode) + const existingIndex = state.episodes.findIndex(fav => fav.showId === action.payload.showId && fav.season === action.payload.season && fav.episode === action.payload.episode) if (existingIndex === -1) { state.searchedAndSortedFavourites.push(action.payload); From 356b2d7b2b54f2fa0fa78db4ccb46d84a08b8eab Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 23:41:44 +0200 Subject: [PATCH 287/323] Fix: update metatags --- index.html | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/index.html b/index.html index d17bf44c4..5173c3ece 100644 --- a/index.html +++ b/index.html @@ -16,17 +16,17 @@ - + - + - + - + From 6a050cec5509cbc1e999eb80088201df6d18cd87 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Tue, 18 Feb 2025 23:44:49 +0200 Subject: [PATCH 288/323] Fix: Image references on meta tags --- index.html | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/index.html b/index.html index 5173c3ece..c59a14129 100644 --- a/index.html +++ b/index.html @@ -19,14 +19,14 @@ - + - + From b3474264c940087e80753a4bb9f6a0fc12d50df4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Wed, 19 Feb 2025 00:20:51 +0200 Subject: [PATCH 289/323] Fix: Replace ListItemSecondaryAction with ListItem and secondaryAction prop --- src/pages/FavouritesPage.jsx | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 20be74021..c9592e240 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -1,8 +1,9 @@ -import { Box, Typography, Button, IconButton, List, ListItem, ListItemText, ListItemSecondaryAction, Divider } from '@mui/material'; +import { Box, Typography, Button, IconButton, List, ListItem, ListItemText, Divider } from '@mui/material'; import DeleteIcon from '@mui/icons-material/Delete'; import { useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; import { toggleFavourite } from '../state/favouritesSlice'; +import React from 'react'; const FavoritesPage = () => { const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites); @@ -23,8 +24,12 @@ const FavoritesPage = () => { {favouriteEpisodes.map((fav, index) => ( - <> - + + dispatch(toggleFavourite(fav))}> + + + }> { hour12: false, textAlign: "end" }))} /> - - dispatch(toggleFavourite(fav))}> - - - {index < favouriteEpisodes.length - 1 && } - + ))} From 5d11b96bda150eabe563d8ff1f1ac3f09073bdf2 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 20 Feb 2025 14:15:26 +0200 Subject: [PATCH 290/323] Fix: date and times not working properly in favourites and passing date objects through redux --- src/components/Episode.jsx | 4 +++- src/pages/FavouritesPage.jsx | 4 +++- src/utils/dateAndTime.js | 4 ++++ src/utils/fuzzySearch.js | 2 +- 4 files changed, 11 insertions(+), 3 deletions(-) create mode 100644 src/utils/dateAndTime.js diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 6def3dcc4..edf78cc69 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -14,6 +14,7 @@ import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types' +import { dateAndTime } from '../utils/dateAndTime'; const Episode = ({ show, episode, selectedSeason }) => { const isFavourite = useSelector(state => selectIsFavourite(state, show.id, selectedSeason.season, episode.episode)); @@ -36,10 +37,11 @@ const Episode = ({ show, episode, selectedSeason }) => { episode: episode.episode, file: episode.file, updated: show.updated, - savedAt: new Date().toLocaleString() + savedAt: dateAndTime() } const handleToggleFavourite = () => { + console.log("Episode details are", episodeDetails.savedAt) dispatch(toggleFavourite(episodeDetails)); }; diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index c9592e240..89f7304e4 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -7,8 +7,10 @@ import React from 'react'; const FavoritesPage = () => { const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites); + console.log("favourite episodes are:", favouriteEpisodes) const dispatch = useDispatch(); const navigate = useNavigate(); + console.log("favourite episodes from useSelector are:", favouriteEpisodes) return ( @@ -32,7 +34,7 @@ const FavoritesPage = () => { }> { From cc334a451ed3108820c514574789c2541c4fe959 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 20 Feb 2025 14:31:56 +0200 Subject: [PATCH 291/323] Fix: Make a utils function that generates unique episode id's --- src/pages/FavouritesPage.jsx | 3 ++- src/utils/episodeIdGenerator.js | 4 ++++ 2 files changed, 6 insertions(+), 1 deletion(-) create mode 100644 src/utils/episodeIdGenerator.js diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 89f7304e4..32039cd37 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -4,6 +4,7 @@ import { useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; import { toggleFavourite } from '../state/favouritesSlice'; import React from 'react'; +import { generateEpisodeId } from '../utils/episodeIdGenerator'; const FavoritesPage = () => { const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites); @@ -26,7 +27,7 @@ const FavoritesPage = () => { {favouriteEpisodes.map((fav, index) => ( - + dispatch(toggleFavourite(fav))}> diff --git a/src/utils/episodeIdGenerator.js b/src/utils/episodeIdGenerator.js new file mode 100644 index 000000000..7a82dc37b --- /dev/null +++ b/src/utils/episodeIdGenerator.js @@ -0,0 +1,4 @@ +export function generateEpisodeId(episode) { + const episodeId = `${Number(episode.showId)}0${episode.season}0${episode.episode}` + return Number(episodeId) +} \ No newline at end of file From 2b049f4149abc1ddbd824afa74ebb61a34f66610 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 20 Feb 2025 21:33:41 +0200 Subject: [PATCH 292/323] Fix: Move generateEpisodeId function to episode to bugfix favourites --- src/components/Episode.jsx | 2 ++ src/pages/FavouritesPage.jsx | 5 ++--- src/state/favouritesSlice.js | 5 ++++- src/utils/episodeIdGenerator.js | 4 ++-- 4 files changed, 10 insertions(+), 6 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index edf78cc69..cca016e6c 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -15,6 +15,7 @@ import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types' import { dateAndTime } from '../utils/dateAndTime'; +import { generateEpisodeId } from '../utils/episodeIdGenerator'; const Episode = ({ show, episode, selectedSeason }) => { const isFavourite = useSelector(state => selectIsFavourite(state, show.id, selectedSeason.season, episode.episode)); @@ -29,6 +30,7 @@ const Episode = ({ show, episode, selectedSeason }) => { } const episodeDetails = { + episodeId: generateEpisodeId(show, selectedSeason, episode), showId: show.id, showTitle: show.title, seasonTitle: selectedSeason.title, diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 32039cd37..708af0a6d 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -8,10 +8,9 @@ import { generateEpisodeId } from '../utils/episodeIdGenerator'; const FavoritesPage = () => { const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites); - console.log("favourite episodes are:", favouriteEpisodes) const dispatch = useDispatch(); const navigate = useNavigate(); - console.log("favourite episodes from useSelector are:", favouriteEpisodes) + console.log("Favourite episodes is this after rerender:", favouriteEpisodes) return ( @@ -27,7 +26,7 @@ const FavoritesPage = () => { {favouriteEpisodes.map((fav, index) => ( - + dispatch(toggleFavourite(fav))}> diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index bf4312113..9ea53db91 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -38,12 +38,15 @@ const favouritesSlice = createSlice({ }, reducers: { toggleFavourite: (state, action) => { + console.log("Here is the episode passed to toggle:", action.payload) const existingIndex = state.episodes.findIndex(fav => fav.showId === action.payload.showId && fav.season === action.payload.season && fav.episode === action.payload.episode) - + console.log("Checking existing index:", existingIndex) if (existingIndex === -1) { + console.log("Spoiler alert: its -1") state.searchedAndSortedFavourites.push(action.payload); state.episodes.push(action.payload); } else { + console.log("its not -1, jk this console log will never print") state.episodes.splice(existingIndex, 1); state.searchedAndSortedFavourites.splice(existingIndex, 1); } diff --git a/src/utils/episodeIdGenerator.js b/src/utils/episodeIdGenerator.js index 7a82dc37b..0478f178d 100644 --- a/src/utils/episodeIdGenerator.js +++ b/src/utils/episodeIdGenerator.js @@ -1,4 +1,4 @@ -export function generateEpisodeId(episode) { - const episodeId = `${Number(episode.showId)}0${episode.season}0${episode.episode}` +export function generateEpisodeId(show, selectedSeason, episode) { + const episodeId = `${Number(show.id)}0${selectedSeason.season}0${episode.episode}` return Number(episodeId) } \ No newline at end of file From 132b70c0b987f79beb183a23f18769758de51c7b Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 20 Feb 2025 21:55:01 +0200 Subject: [PATCH 293/323] Fix: Bug where state arrays were out of sync after a sort and incorrect favourite episodes would be deleted due to splice function in reducer --- src/pages/FavouritesPage.jsx | 7 +++---- src/state/favouritesSlice.js | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 708af0a6d..48300afe4 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -2,13 +2,12 @@ import { Box, Typography, Button, IconButton, List, ListItem, ListItemText, Divi import DeleteIcon from '@mui/icons-material/Delete'; import { useDispatch, useSelector } from 'react-redux'; import { useNavigate } from 'react-router-dom'; -import { toggleFavourite } from '../state/favouritesSlice'; +import { toggleFavourite, selectSearchedAndSortedFavourites } from '../state/favouritesSlice'; import React from 'react'; -import { generateEpisodeId } from '../utils/episodeIdGenerator'; const FavoritesPage = () => { - const favouriteEpisodes = useSelector((state) => state.favourites.searchedAndSortedFavourites); - const dispatch = useDispatch(); + const dispatch = useDispatch() + const favouriteEpisodes = useSelector(selectSearchedAndSortedFavourites) const navigate = useNavigate(); console.log("Favourite episodes is this after rerender:", favouriteEpisodes) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 9ea53db91..f1a235d51 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -28,6 +28,23 @@ const selectIsFavourite = createSelector( ) ); +const selectSearchedAndSortedFavourites = createSelector( + [ + (state) => state.favourites.episodes, + (state) => state.favourites.sortOption, + (state) => state.favourites.searchTerm + ], + (episodes, sortOption, searchTerm) => { + let results = [...episodes] + if (searchTerm) { + const fuse = initializeFuzzySearch(results); + results = performFuzzySearch(fuse, searchTerm) + .map(result => result.item); + } + return applySorting(results, sortOption) + } +); + const favouritesSlice = createSlice({ name: "favourites", initialState: { @@ -76,5 +93,5 @@ const favouritesSlice = createSlice({ }) export const { toggleFavourite, setFavouriteSortOption, setFavouriteSearchTerm } = favouritesSlice.actions; -export { selectIsFavourite } +export { selectIsFavourite, selectSearchedAndSortedFavourites } export default favouritesSlice.reducer; \ No newline at end of file From 14578444b3ff9e6622b2d49b6f53a6519459d76f Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 20 Feb 2025 22:05:19 +0200 Subject: [PATCH 294/323] Fix: Refactor favourite slice to simplify favourite and sort reducers after implementing selector --- src/state/favouritesSlice.js | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index f1a235d51..8b19da208 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -21,10 +21,10 @@ const selectIsFavourite = createSelector( ], (favourites, showId, season, episode) => favourites.some( - (episode) => - episode.showId === showId && - episode.season === season && - episode.episode === episode + (fav) => + fav.showId === showId && + fav.season === season && + fav.episode === episode ) ); @@ -60,38 +60,22 @@ const favouritesSlice = createSlice({ console.log("Checking existing index:", existingIndex) if (existingIndex === -1) { console.log("Spoiler alert: its -1") - state.searchedAndSortedFavourites.push(action.payload); state.episodes.push(action.payload); } else { console.log("its not -1, jk this console log will never print") state.episodes.splice(existingIndex, 1); - state.searchedAndSortedFavourites.splice(existingIndex, 1); } }, setFavouriteSortOption(state, action) { state.sortOption = action.payload; - const sortedFavourites = applySorting( - state.episodes, - action.payload - ); - state.searchedAndSortedFavourites = sortedFavourites }, setFavouriteSearchTerm(state, action) { state.searchTerm = action.payload; - let searchResults = state.episodes; - - if (state.searchTerm) { - const fuse = initializeFuzzySearch(searchResults); - searchResults = performFuzzySearch(fuse, state.searchTerm) - .map(result => result.item); - } - searchResults = applySorting(searchResults, state.sortOption); - state.searchedAndSortedFavourites = searchResults; }, } -}) +}); export const { toggleFavourite, setFavouriteSortOption, setFavouriteSearchTerm } = favouritesSlice.actions; -export { selectIsFavourite, selectSearchedAndSortedFavourites } +export { selectIsFavourite, selectSearchedAndSortedFavourites }; export default favouritesSlice.reducer; \ No newline at end of file From c6820bd784853de103ec0fb068fa8cd0ca92e0b4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 20 Feb 2025 23:23:57 +0200 Subject: [PATCH 295/323] Fix: Sorting only working off updated key for favourites, and refactored switch cases to be more concise --- src/utils/sortUtils.js | 57 ++++++++++++++---------------------------- 1 file changed, 19 insertions(+), 38 deletions(-) diff --git a/src/utils/sortUtils.js b/src/utils/sortUtils.js index f74f5c28a..ed1f5fc82 100644 --- a/src/utils/sortUtils.js +++ b/src/utils/sortUtils.js @@ -1,47 +1,28 @@ -// Functions to handle sorting for shows and favorite episodes - -export const sortByTitleAscending = (data, titleKey = 'title') => { - return [...data].sort((a, b) => { - const titleA = a[titleKey] || a.showTitle || ''; - const titleB = b[titleKey] || b.showTitle || ''; - return titleA.localeCompare(titleB); - }); -}; - -export const sortByTitleDescending = (data, titleKey = 'title') => { - return [...data].sort((a, b) => { - const titleA = a[titleKey] || a.showTitle || ''; - const titleB = b[titleKey] || b.showTitle || ''; - return titleB.localeCompare(titleA); - }); -}; - -export const sortByDateAscending = (data, dateKey = 'updated') => { - return [...data].sort((a, b) => { - const dateA = new Date(a[dateKey] || a.savedAt || 0); - const dateB = new Date(b[dateKey] || b.savedAt || 0); - return dateA - dateB; - }); -}; - -export const sortByDateDescending = (data, dateKey = 'updated') => { - return [...data].sort((a, b) => { - const dateA = new Date(a[dateKey] || a.savedAt || 0); - const dateB = new Date(b[dateKey] || b.savedAt || 0); - return dateB - dateA; - }); -}; - export const applySorting = (podcasts, sortOption) => { + if (podcasts[0]?.episodeId) { + switch (sortOption) { + case 'A-Z': + return [...podcasts].sort((a, b) => a.showTitle.localeCompare(b.showTitle)); + case 'Z-A': + return [...podcasts].sort((a, b) => b.showTitle.localeCompare(a.showTitle)); + case 'newest': + return [...podcasts].sort((a, b) => new Date(b.savedAt) - new Date(a.savedAt)); + case 'oldest': + return [...podcasts].sort((a, b) => new Date(a.savedAt) - new Date(b.savedAt)); + default: + return podcasts; + } + } + switch (sortOption) { case 'A-Z': - return sortByTitleAscending(podcasts); + return [...podcasts].sort((a, b) => a.title.localeCompare(b.title)); case 'Z-A': - return sortByTitleDescending(podcasts); + return [...podcasts].sort((a, b) => b.title.localeCompare(a.title)); case 'newest': - return sortByDateDescending(podcasts); + return [...podcasts].sort((a, b) => new Date(b.updated) - new Date(a.updated)); case 'oldest': - return sortByDateAscending(podcasts); + return [...podcasts].sort((a, b) => new Date(a.updated) - new Date(b.updated)); default: return podcasts; } From 35a39de4156238eba8d244dfbcad7f6adc9c8d9d Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 20 Feb 2025 23:41:00 +0200 Subject: [PATCH 296/323] Fix: Move useEffect that checks if user wants to leave page to audioPlayer component --- src/App.jsx | 14 -------------- src/components/AudioPlayer.jsx | 16 ++++++++++++++++ 2 files changed, 16 insertions(+), 14 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index d43e8be2c..91544f675 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -70,20 +70,6 @@ function App() { setIsResetDialogOpen(false); }; - useEffect(() => { - const handleBeforeUnload = (event) => { - if (isPlaying) { - event.preventDefault(); - event.returnValue = ''; // This is required for some browsers - } - }; - - window.addEventListener('beforeunload', handleBeforeUnload); - - return () => { - window.removeEventListener('beforeunload', handleBeforeUnload); - }; - }, [isPlaying]); // const handleSkipNext = () => { // if (detailedShow && currentEpisode) { diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 095d75c85..243b3723d 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -10,6 +10,7 @@ import { playEpisode, togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, import Volume from './Volume' import AudioSlider from './AudioSlider'; import { audioService } from '../services/AudioService'; +import { useEffect } from 'react'; const AudioPlayer = () => { const theme = useTheme(); @@ -28,6 +29,21 @@ const AudioPlayer = () => { } }; + useEffect(() => { + const handleBeforeUnload = (event) => { + if (isPlaying) { + event.preventDefault(); + event.returnValue = ''; // This is required for some browsers + } + }; + + window.addEventListener('beforeunload', handleBeforeUnload); + + return () => { + window.removeEventListener('beforeunload', handleBeforeUnload); + }; + }, [isPlaying]); + return ( Date: Fri, 21 Feb 2025 00:13:06 +0200 Subject: [PATCH 297/323] Feat: Implementn automatic skip to next episode when an episode ends --- src/services/AudioService.js | 10 +++++++++- src/state/audioPlayerSlice.js | 8 ++++++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/services/AudioService.js b/src/services/AudioService.js index 0316c161b..58565ddac 100644 --- a/src/services/AudioService.js +++ b/src/services/AudioService.js @@ -28,9 +28,17 @@ class AudioService { audioElement.addEventListener('timeupdate', listener) return () => { - this.audio.removeEventListener("timeupdate", listener) + this.audio.removeEventListener('timeupdate', listener) } }; + + this.onEnded = (callback) => { + const listener = () => callback(); + audioElement.addEventListener('ended', listener); + return () => { + audioElement.removeEventListener('ended', listener) + } + } } } diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index e5d0ed769..51c269fd5 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -105,6 +105,14 @@ export const playEpisode = (episode) => async (dispatch) => { dispatch(generatePlaylist()); dispatch(setDuration(duration)); console.log("Duration set to:", duration); + + if (audioService.endedListener) { + audioService.endedListener(); + } + + audioService.endedListener = audioService.onEnded(() => { + dispatch(skipToNextEpisode()); + }); } catch (error) { console.error('Failed to play episode:', error); } From 49810c4ea9389ca0cff1aa09787a238d3121ba17 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 21 Feb 2025 00:13:45 +0200 Subject: [PATCH 298/323] Fix: semicolon in audioplayer slice --- src/state/audioPlayerSlice.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 51c269fd5..d6b416ac0 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -108,11 +108,12 @@ export const playEpisode = (episode) => async (dispatch) => { if (audioService.endedListener) { audioService.endedListener(); - } + }; audioService.endedListener = audioService.onEnded(() => { dispatch(skipToNextEpisode()); }); + } catch (error) { console.error('Failed to play episode:', error); } From b84218e256fa0602862ede4e3850be5fa72f7de1 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 21 Feb 2025 13:01:47 +0200 Subject: [PATCH 299/323] Fix: Adjust margin for content grid so show cards are fully visible at the bottom of the page --- src/pages/Content.jsx | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index d012d30b3..57378d1c9 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -37,8 +37,10 @@ function Content() { /> {sortedPodcasts.map((podcast) => ( From 33a5ebec97d052afd66405f88db1fc5fe32a0fd8 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 21 Feb 2025 19:56:27 +0200 Subject: [PATCH 300/323] Feat: Listened episodes are being saved to local storage through redux --- src/state/audioPlayerSlice.js | 28 +++++++++++++++++++++------- 1 file changed, 21 insertions(+), 7 deletions(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index d6b416ac0..45fb47254 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -62,10 +62,6 @@ const audioPlayerSlice = createSlice({ const { episodeId, timestamp } = action.payload; state.timestamps[episodeId] = timestamp; }, - setEpisodeAsListened: (state, action) => { - const { show, episode } = action.payload - state.listenedEpisodes[show] = episode - }, setPlaylist: (state, action) => { state.playlist = action.payload }, @@ -80,6 +76,9 @@ const audioPlayerSlice = createSlice({ }, setCurrentIndex: (state, action) => { state.currentIndex = action.payload + }, + setEpisodeListened: (state, action) => { + state.listenedEpisodes = action.payload } } @@ -111,7 +110,8 @@ export const playEpisode = (episode) => async (dispatch) => { }; audioService.endedListener = audioService.onEnded(() => { - dispatch(skipToNextEpisode()); + dispatch(setEpisodeAsListened(episode)) + dispatch(skipToNextEpisode()) }); } catch (error) { @@ -171,18 +171,32 @@ export const skipToPreviousEpisode = () => (dispatch, getState) => { } }; +export const setEpisodeAsListened = (newEpisode) => (dispatch, getState) => { + console.log("This is what the actions payload is:", newEpisode) + const { listenedEpisodes } = getState().audioPlayer; + const isInArray = listenedEpisodes.some(episode => + episode.title === newEpisode.title && + episode.showId === newEpisode.showId && + episode.season === newEpisode.season) + if (!isInArray) { + const listenedEpisodesArray = [...listenedEpisodes, newEpisode] + dispatch(setEpisodeListened(listenedEpisodesArray)) + } + console.log("listenedEpisodes are:", listenedEpisodes) +}; + export const { setCurrentEpisode, setVolume, saveTimestamp, - setEpisodeAsListened, setCurrentTime, setDuration, setIsMuted, setIsPlaying, setPlayingShow, setPlaylist, - setCurrentIndex + setCurrentIndex, + setEpisodeListened } = audioPlayerSlice.actions; export { selectIsListened } export default audioPlayerSlice.reducer; \ No newline at end of file From 46755c38e7a5c91555c55175cd29e288d4f8dde4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 21 Feb 2025 20:28:30 +0200 Subject: [PATCH 301/323] Feat: Episodes are now marked when they are listened to --- src/components/Episode.jsx | 7 ++++++- src/state/audioPlayerSlice.js | 28 ++++++++-------------------- 2 files changed, 14 insertions(+), 21 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index cca016e6c..17ee9f50c 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -19,7 +19,12 @@ import { generateEpisodeId } from '../utils/episodeIdGenerator'; const Episode = ({ show, episode, selectedSeason }) => { const isFavourite = useSelector(state => selectIsFavourite(state, show.id, selectedSeason.season, episode.episode)); - const isListened = useSelector(state => selectIsListened(state, show.id, selectedSeason.season, episode.episode)); + const isListened = useSelector(state => selectIsListened(state, { + showId: show.id, + season: selectedSeason.season, + episode: episode.episode + })); + console.log("is listened selector is:", isListened) const playingShow = useSelector((state) => state.podcasts.selectedPodcastData); const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 45fb47254..dfcd3919d 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -22,19 +22,15 @@ const loadListenedEpisodes = () => { } } -const selectIsListened = createSelector( - [ - (state) => state.audioPlayer.listenedEpisodes, - (_, showId) => showId, - (_, __, season) => season, - (_, __, ___, episode) => episode - ], - (listenedEpisodes, showId, season, episode) => +export const selectIsListened = createSelector( + [(state) => state.audioPlayer.listenedEpisodes, + (_, props) => props], + (listenedEpisodes, props) => listenedEpisodes.some( - (episode) => - episode.showId === showId && - episode.season === season && - episode.episode === episode + (oldEpisode) => + oldEpisode.showId === props.showId && + oldEpisode.season === props.season && + oldEpisode.episode === props.episode ) ); @@ -103,7 +99,6 @@ export const playEpisode = (episode) => async (dispatch) => { dispatch(setIsPlaying(true)); dispatch(generatePlaylist()); dispatch(setDuration(duration)); - console.log("Duration set to:", duration); if (audioService.endedListener) { audioService.endedListener(); @@ -131,13 +126,11 @@ export const generatePlaylist = () => (dispatch, getState) => { const allEpisodes = getAllEpisodes(playingShow); let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); if (currentIndex === -1) { - console.log("current index was equal to -1 and triggered the if statement", currentIndex) currentIndex = 0; } dispatch(setPlaylist(allEpisodes)) dispatch(setCurrentIndex(currentIndex)) - console.log("Current index is:", currentIndex) } } @@ -146,9 +139,7 @@ export const skipToNextEpisode = () => (dispatch, getState) => { if (playingShow && currentEpisode && playlist) { if (currentIndex < playlist.length - 1) { - console.log("Just checkign that this evaluates to true") const nextEpisode = playlist[currentIndex + 1]; - console.log(nextEpisode) dispatch(playEpisode(nextEpisode)); dispatch(setIsPlaying(true)); dispatch(setCurrentIndex(currentIndex + 1)) @@ -161,9 +152,7 @@ export const skipToPreviousEpisode = () => (dispatch, getState) => { if (playingShow && currentEpisode && playlist) { if (currentIndex > 0) { - console.log("Just checkign that this evaluates to true") const nextEpisode = playlist[currentIndex - 1]; - console.log(nextEpisode) dispatch(playEpisode(nextEpisode)); dispatch(setIsPlaying(true)); dispatch(setCurrentIndex(currentIndex - 1)) @@ -198,5 +187,4 @@ export const { setCurrentIndex, setEpisodeListened } = audioPlayerSlice.actions; -export { selectIsListened } export default audioPlayerSlice.reducer; \ No newline at end of file From 535b477d37a49cdfd545e35ad47b4362325cfd14 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 21 Feb 2025 21:09:11 +0200 Subject: [PATCH 302/323] Fix: Listened episodes persist in local storage now --- src/App.jsx | 86 ++++++++++++------------ src/middleware/localStorageMiddleware.js | 2 +- 2 files changed, 44 insertions(+), 44 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 91544f675..354e44e2d 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -12,49 +12,49 @@ import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' function App() { const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards - const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes - const [playingShow, setPlayingShow] = useState(null); // Sets the playing show equal to the detail show from the PodcastDetails Modal - const [listenedEpisodes, setListenedEpisodes] = useState(() => { // Checks for listened episodes in local storage and sets itself equal to that, or empty array - const storedListenedEpisodes = localStorage.getItem('listenedEpisodes'); - return storedListenedEpisodes ? JSON.parse(storedListenedEpisodes) : []; - }); + // const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes + // const [playingShow, setPlayingShow] = useState(null); // Sets the playing show equal to the detail show from the PodcastDetails Modal + // const [listenedEpisodes, setListenedEpisodes] = useState(() => { // Checks for listened episodes in local storage and sets itself equal to that, or empty array + // const storedListenedEpisodes = localStorage.getItem('listenedEpisodes'); + // return storedListenedEpisodes ? JSON.parse(storedListenedEpisodes) : []; + // }); const [isResetDialogOpen, setIsResetDialogOpen] = useState(false); // State to control whether listening reset dialog is open or closed - const [episodeTimestamps, setEpisodeTimestamps] = useState(() => { // State which manages tracking of timestamps of episodes played - const storedTimestamps = localStorage.getItem('episodeTimestamps'); - return storedTimestamps ? JSON.parse(storedTimestamps) : {}; - }); + // const [episodeTimestamps, setEpisodeTimestamps] = useState(() => { // State which manages tracking of timestamps of episodes played + // const storedTimestamps = localStorage.getItem('episodeTimestamps'); + // return storedTimestamps ? JSON.parse(storedTimestamps) : {}; + // }); - const updateEpisodeTimestamp = useCallback((showId, episodeTitle, timestamp) => { - setEpisodeTimestamps(prev => { - const newTimestamps = { - ...prev, - [showId]: { - ...prev[showId], - [episodeTitle]: timestamp - } - }; - localStorage.setItem('episodeTimestamps', JSON.stringify(newTimestamps)); - return newTimestamps; - }); - }, []); + // const updateEpisodeTimestamp = useCallback((showId, episodeTitle, timestamp) => { + // setEpisodeTimestamps(prev => { + // const newTimestamps = { + // ...prev, + // [showId]: { + // ...prev[showId], + // [episodeTitle]: timestamp + // } + // }; + // localStorage.setItem('episodeTimestamps', JSON.stringify(newTimestamps)); + // return newTimestamps; + // }); + // }, []); - const markEpisodeAsListened = useCallback((episode) => { - setListenedEpisodes(prev => { - // Check if this episode is already marked as listened - const isAlreadyListened = prev.some( - listened => listened.showId === episode.showId && - listened.episodeTitle === episode.episodeTitle - ); + // const markEpisodeAsListened = useCallback((episode) => { + // setListenedEpisodes(prev => { + // // Check if this episode is already marked as listened + // const isAlreadyListened = prev.some( + // listened => listened.showId === episode.showId && + // listened.episodeTitle === episode.episodeTitle + // ); - if (isAlreadyListened) { - return prev; - } + // if (isAlreadyListened) { + // return prev; + // } - const newListenedEpisodes = [...prev, episode]; - localStorage.setItem('listenedEpisodes', JSON.stringify(newListenedEpisodes)); - return newListenedEpisodes; - }); - }, []); + // const newListenedEpisodes = [...prev, episode]; + // localStorage.setItem('listenedEpisodes', JSON.stringify(newListenedEpisodes)); + // return newListenedEpisodes; + // }); + // }, []); const handleResetClick = () => { setIsResetDialogOpen(true); @@ -135,21 +135,21 @@ function App() { onResetClick={handleResetClick} /> - }> + }> } > next => action => { localStorage.setItem("timestamps", JSON.stringify(state.audioPlayer.timestamps)) } - if (action.type.startsWith("audioPlayer/listenedEpisodes")) { + if (action.type === "audioPlayer/setEpisodeListened") { const state = store.getState(); localStorage.setItem("listenedEpisodes", JSON.stringify(state.audioPlayer.listenedEpisodes)) } From 5e7eac90445d3beffeaa440b8b7dda800eea3a77 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 21 Feb 2025 22:16:19 +0200 Subject: [PATCH 303/323] Fix: Refacor the episode jsx so the play button and islistened marker are aligned --- src/components/Episode.jsx | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 17ee9f50c..5a0bc78e5 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -3,7 +3,8 @@ import { ListItem, ListItemText, ListItemSecondaryAction, - IconButton + IconButton, + Box } from '@mui/material'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import { useSelector, useDispatch } from 'react-redux' @@ -60,7 +61,18 @@ const Episode = ({ show, episode, selectedSeason }) => { }; return ( - + + {isListened && } + handlePlayEpisode(episodeDetails)}> + + + + } + > handleToggleFavourite(episode)}> { isFavourite ? : } @@ -77,12 +89,6 @@ const Episode = ({ show, episode, selectedSeason }) => { } /> - - {isListened && ()} - handlePlayEpisode(episodeDetails)}> - - - ) } From 170d22dbbc5ac4764346574fe22b2c161554f5c7 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 21 Feb 2025 22:44:34 +0200 Subject: [PATCH 304/323] Feat: Beginning to implement saving of timestamps through redux --- src/state/audioPlayerSlice.js | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index dfcd3919d..4e1365442 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -5,7 +5,7 @@ import { audioService } from "../services/AudioService"; const loadTimestamps = () => { try { const timestamps = localStorage.getItem("timestamps"); - return timestamps ? JSON.parse(timestamps) : {}; + return timestamps ? JSON.parse(timestamps) : []; } catch (error) { console.error("Error loading timestamps from storage", error) return {} @@ -174,6 +174,15 @@ export const setEpisodeAsListened = (newEpisode) => (dispatch, getState) => { console.log("listenedEpisodes are:", listenedEpisodes) }; +export const saveEpisodesTimestamp = (episode) => (dispatch, getState) => { + const elapsedTime = audioService.getCurrentTime() + if (elapsedTime > 5) { + const episodeDetails = {...episode, timestamp: elapsedTime} + const timestamps = getState().audioPlayer.timestamps + timestamps.push(episodeDetails) + } +} + export const { setCurrentEpisode, setVolume, From b856b3b6e91cb9500f87384f4c7da6fd46c835ae Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Fri, 21 Feb 2025 22:50:28 +0200 Subject: [PATCH 305/323] Fix: Remove unused toggle play redux thunk --- src/components/AudioPlayer.jsx | 2 +- src/state/audioPlayerSlice.js | 11 ----------- 2 files changed, 1 insertion(+), 12 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 243b3723d..4eee9ae9a 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -6,7 +6,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { playEpisode, togglePlayPause, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime, setIsPlaying } from '../state/audioPlayerSlice' +import { playEpisode, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime, setIsPlaying } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; import { audioService } from '../services/AudioService'; diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 4e1365442..4bb1153d8 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -80,17 +80,6 @@ const audioPlayerSlice = createSlice({ }) -export const togglePlayPause = () => (dispatch, getState) => { - const { isPlaying } = getState().audioPlayer; - - if (isPlaying) { - audioService.pause(); - } else { - audioService.play(); - } - dispatch(setIsPlaying(!isPlaying)); -}; - export const playEpisode = (episode) => async (dispatch) => { try { const duration = await audioService.setSource(episode.file); From 2f5741ffecc91fb88b070e1c6720baeb1728ddd0 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 13:54:57 +0200 Subject: [PATCH 306/323] Fix: Add episode ID to each episode in a generated playlist --- src/components/AudioSlider.jsx | 2 +- src/state/audioPlayerSlice.js | 2 ++ src/utils/episodeUtils.js | 3 +++ 3 files changed, 6 insertions(+), 1 deletion(-) diff --git a/src/components/AudioSlider.jsx b/src/components/AudioSlider.jsx index ab7741c47..b102ed9b6 100644 --- a/src/components/AudioSlider.jsx +++ b/src/components/AudioSlider.jsx @@ -11,7 +11,7 @@ const AudioSlider = () => { const dispatch = useDispatch(); const [duration, setDuration] = useState(0); const [currentTime, setCurrentTime] = useState(0); - const episodeIndex = useSelector((state) => state.audioPlayer.currentIndex) + const episodeIndex = useSelector((state) => state.audioPlayer.currentIndex) useEffect(() => { const handleMetadataLoaded = () => { diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 4bb1153d8..6e6094f49 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -120,6 +120,7 @@ export const generatePlaylist = () => (dispatch, getState) => { dispatch(setPlaylist(allEpisodes)) dispatch(setCurrentIndex(currentIndex)) + console.log(allEpisodes) } } @@ -169,6 +170,7 @@ export const saveEpisodesTimestamp = (episode) => (dispatch, getState) => { const episodeDetails = {...episode, timestamp: elapsedTime} const timestamps = getState().audioPlayer.timestamps timestamps.push(episodeDetails) + dispatch(saveTimestamp(timestamps)) } } diff --git a/src/utils/episodeUtils.js b/src/utils/episodeUtils.js index ee9f620b5..bf73d4118 100644 --- a/src/utils/episodeUtils.js +++ b/src/utils/episodeUtils.js @@ -1,3 +1,5 @@ +import { generateEpisodeId } from "./episodeIdGenerator"; + export const getAllEpisodes = (show) => { if (!show || !Array.isArray(show.seasons)) { console.error('Invalid show structure:', show); @@ -8,6 +10,7 @@ export const getAllEpisodes = (show) => { if (Array.isArray(season.episodes)) { return season.episodes.map(episode => ({ ...episode, + episodeId: generateEpisodeId(show, season, episode), seasonTitle: season.title, seasonImage: season.image, season: season.season, From 4a470781a987d889fcfac45ef91258cba52d0e15 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 14:01:02 +0200 Subject: [PATCH 307/323] Fix: Check whether episode is listened or not by episodeId --- src/state/audioPlayerSlice.js | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 6e6094f49..ea2c34930 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -153,10 +153,7 @@ export const skipToPreviousEpisode = () => (dispatch, getState) => { export const setEpisodeAsListened = (newEpisode) => (dispatch, getState) => { console.log("This is what the actions payload is:", newEpisode) const { listenedEpisodes } = getState().audioPlayer; - const isInArray = listenedEpisodes.some(episode => - episode.title === newEpisode.title && - episode.showId === newEpisode.showId && - episode.season === newEpisode.season) + const isInArray = listenedEpisodes.some(episode => episode.episodeId === newEpisode.episodeId) if (!isInArray) { const listenedEpisodesArray = [...listenedEpisodes, newEpisode] dispatch(setEpisodeListened(listenedEpisodesArray)) From 7e9d9d6e9f4403c74fbb64e30a73c724091882e4 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 15:22:11 +0200 Subject: [PATCH 308/323] Fix: Implement episode id for all listened and favourite tracking --- src/components/Episode.jsx | 43 ++++++++------------------ src/components/PodcastDetailsModal.jsx | 5 ++- src/state/audioPlayerSlice.js | 7 +---- src/state/favouritesSlice.js | 21 ++++--------- src/utils/episodeUtils.js | 17 ++++++++++ 5 files changed, 39 insertions(+), 54 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 5a0bc78e5..184eca44e 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -2,30 +2,25 @@ import { Typography, ListItem, ListItemText, - ListItemSecondaryAction, IconButton, Box } from '@mui/material'; import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; -import { saveTimestamp, setEpisodeAsListened, selectIsListened, setCurrentEpisode, setIsPlaying, setPlayingShow, generatePlaylist, playEpisode } from '../state/audioPlayerSlice'; +import { saveTimestamp, setEpisodeAsListened, selectIsListened, setPlayingShow, playEpisode } from '../state/audioPlayerSlice'; import { selectIsFavourite } from "../state/favouritesSlice"; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; import FavoriteIcon from '@mui/icons-material/Favorite'; import PropTypes from 'prop-types' import { dateAndTime } from '../utils/dateAndTime'; -import { generateEpisodeId } from '../utils/episodeIdGenerator'; -const Episode = ({ show, episode, selectedSeason }) => { - const isFavourite = useSelector(state => selectIsFavourite(state, show.id, selectedSeason.season, episode.episode)); - const isListened = useSelector(state => selectIsListened(state, { - showId: show.id, - season: selectedSeason.season, - episode: episode.episode - })); +const Episode = ({ episode }) => { + const isFavourite = useSelector(state => selectIsFavourite(state, episode)); + const isListened = useSelector(state => selectIsListened(state, episode)); console.log("is listened selector is:", isListened) + console.log("is favourite selector is:", isFavourite) const playingShow = useSelector((state) => state.podcasts.selectedPodcastData); const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); @@ -35,22 +30,10 @@ const Episode = ({ show, episode, selectedSeason }) => { dispatch(setPlayingShow(playingShow)) } - const episodeDetails = { - episodeId: generateEpisodeId(show, selectedSeason, episode), - showId: show.id, - showTitle: show.title, - seasonTitle: selectedSeason.title, - season: selectedSeason.season, - title: episode.title, - episode: episode.episode, - file: episode.file, - updated: show.updated, - savedAt: dateAndTime() - } - - const handleToggleFavourite = () => { - console.log("Episode details are", episodeDetails.savedAt) - dispatch(toggleFavourite(episodeDetails)); + const handleToggleFavourite = (episode) => { + const savedEpisode = {...episode, savedAt: dateAndTime()} + console.log("Episode details are", episode.savedAt) + dispatch(toggleFavourite(savedEpisode)); }; const formatTime = (seconds) => { @@ -62,12 +45,12 @@ const Episode = ({ show, episode, selectedSeason }) => { return ( {isListened && } - handlePlayEpisode(episodeDetails)}> + handlePlayEpisode(episode)}> @@ -81,9 +64,9 @@ const Episode = ({ show, episode, selectedSeason }) => { secondary={ <> {episode.description} - {timestamps[show.id] && timestamps[show.id][episode.title] && ( + {timestamps[episode.showId] && timestamps[episode.showId][episode.title] && ( - Last played: {formatTime(timestamps[show.id][episode.title])} + Last played: {formatTime(timestamps[episode.showId][episode.title])} )} diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index e894f306d..7df726012 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -15,6 +15,7 @@ import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; import Episode from './Episode'; import { useSelector, useDispatch } from 'react-redux' +import { episodeDetails } from '../utils/episodeUtils'; const PodcastDetailsModal = ({ show, open, onClose, loading, fetching, error, episodeTimestamps }) => { @@ -154,9 +155,7 @@ const PodcastDetailsModal = ({ show, open, onClose, loading, fetching, error, ep return ( ); })} diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index ea2c34930..cf7054de9 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -26,12 +26,7 @@ export const selectIsListened = createSelector( [(state) => state.audioPlayer.listenedEpisodes, (_, props) => props], (listenedEpisodes, props) => - listenedEpisodes.some( - (oldEpisode) => - oldEpisode.showId === props.showId && - oldEpisode.season === props.season && - oldEpisode.episode === props.episode - ) + listenedEpisodes.some(oldEpisode => oldEpisode.episodeId === props.episodeId) ); const audioPlayerSlice = createSlice({ diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 8b19da208..5213b997b 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -13,22 +13,13 @@ const loadFavourites = () => { }; const selectIsFavourite = createSelector( - [ - (state) => state.favourites.episodes, - (_, showId) => showId, - (_, __, season) => season, - (_, __, ___, episode) => episode - ], - (favourites, showId, season, episode) => - favourites.some( - (fav) => - fav.showId === showId && - fav.season === season && - fav.episode === episode - ) + [(state) => state.favourites.episodes, + (_, props) => props], + (favourites, props) => + favourites.some(fav => fav.episodeId === props.episodeId) ); -const selectSearchedAndSortedFavourites = createSelector( +const selectSearchedAndSortedFavourites = createSelector( [ (state) => state.favourites.episodes, (state) => state.favourites.sortOption, @@ -56,7 +47,7 @@ const favouritesSlice = createSlice({ reducers: { toggleFavourite: (state, action) => { console.log("Here is the episode passed to toggle:", action.payload) - const existingIndex = state.episodes.findIndex(fav => fav.showId === action.payload.showId && fav.season === action.payload.season && fav.episode === action.payload.episode) + const existingIndex = state.episodes.findIndex(fav => fav.episodeId === action.payload.episodeId) console.log("Checking existing index:", existingIndex) if (existingIndex === -1) { console.log("Spoiler alert: its -1") diff --git a/src/utils/episodeUtils.js b/src/utils/episodeUtils.js index bf73d4118..2940647b4 100644 --- a/src/utils/episodeUtils.js +++ b/src/utils/episodeUtils.js @@ -1,4 +1,5 @@ import { generateEpisodeId } from "./episodeIdGenerator"; +import { dateAndTime } from "./dateAndTime"; export const getAllEpisodes = (show) => { if (!show || !Array.isArray(show.seasons)) { @@ -31,3 +32,19 @@ export const findEpisodeIndex = (allEpisodes, currentEpisode) => { (e.season === currentEpisode.season || e.season === undefined) ); }; + +export const episodeDetails = (show, season, episode) => { + const episodeDetails = { + episodeId: generateEpisodeId(show, season, episode), + showId: show.id, + showTitle: show.title, + seasonTitle: season.title, + season: season.season, + title: episode.title, + episode: episode.episode, + file: episode.file, + updated: show.updated, + savedAt: null + } + return episodeDetails +} From 1b12af98f7278722ca2f6cdcb5f98ba7784b2f96 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 16:17:01 +0200 Subject: [PATCH 309/323] Fix: prevent duplicate timestamps from being added --- src/state/audioPlayerSlice.js | 28 ++++++++++++++++++++-------- 1 file changed, 20 insertions(+), 8 deletions(-) diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index cf7054de9..5498d1203 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -157,14 +157,26 @@ export const setEpisodeAsListened = (newEpisode) => (dispatch, getState) => { }; export const saveEpisodesTimestamp = (episode) => (dispatch, getState) => { - const elapsedTime = audioService.getCurrentTime() - if (elapsedTime > 5) { - const episodeDetails = {...episode, timestamp: elapsedTime} - const timestamps = getState().audioPlayer.timestamps - timestamps.push(episodeDetails) - dispatch(saveTimestamp(timestamps)) - } -} + const elapsedTime = audioService.getCurrentTime(); + if (elapsedTime > 5) { + const episodeDetails = { ...episode, timestamp: elapsedTime }; + const timestamps = getState().audioPlayer.timestamps; + const existingIndex = timestamps.findIndex(item => item.episodeId === episode.episodeId); + + let updatedTimestamps; + if (existingIndex !== -1) { + updatedTimestamps = [ + ...timestamps.slice(0, existingIndex), + episodeDetails, + ...timestamps.slice(existingIndex + 1) + ]; + } else { + updatedTimestamps = [...timestamps, episodeDetails]; + } + + dispatch(saveTimestamp(updatedTimestamps)); + } +}; export const { setCurrentEpisode, From a0570a997daa01ac9d536bb52d6d38cf48584a7c Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 18:31:15 +0200 Subject: [PATCH 310/323] Feat: Implement timestamps for episodes --- src/components/AudioPlayer.jsx | 4 +++- src/components/Episode.jsx | 12 +++++++----- src/state/audioPlayerSlice.js | 10 ++++++---- 3 files changed, 16 insertions(+), 10 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 4eee9ae9a..2ce13df9c 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -6,7 +6,7 @@ import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { playEpisode, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime, setIsPlaying } from '../state/audioPlayerSlice' +import { playEpisode, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime, setIsPlaying, saveEpisodesTimestamp } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; import { audioService } from '../services/AudioService'; @@ -22,6 +22,8 @@ const AudioPlayer = () => { if (isPlaying) { audioService.pause(); dispatch(setIsPlaying(false)); + console.log("current episode is this in handleplaypause:", currentEpisode) + dispatch(saveEpisodesTimestamp(currentEpisode)) } else { audioService.play(); diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index 184eca44e..f8fe9b662 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -64,11 +64,13 @@ const Episode = ({ episode }) => { secondary={ <> {episode.description} - {timestamps[episode.showId] && timestamps[episode.showId][episode.title] && ( - - Last played: {formatTime(timestamps[episode.showId][episode.title])} - - )} + {timestamps.some(ep => ep.episodeId === episode.episodeId) && ( + + Last played: {formatTime( + timestamps.find(prevEpisode => prevEpisode.episodeId === episode.episodeId)?.timestamp || 0 + )} + + )} } /> diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 5498d1203..5610a5b59 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -8,7 +8,7 @@ const loadTimestamps = () => { return timestamps ? JSON.parse(timestamps) : []; } catch (error) { console.error("Error loading timestamps from storage", error) - return {} + return [] } } @@ -50,8 +50,7 @@ const audioPlayerSlice = createSlice({ state.isPlaying = action.payload }, saveTimestamp: (state, action) => { - const { episodeId, timestamp } = action.payload; - state.timestamps[episodeId] = timestamp; + state.timestamps = action.payload; }, setPlaylist: (state, action) => { state.playlist = action.payload @@ -125,6 +124,8 @@ export const skipToNextEpisode = () => (dispatch, getState) => { if (playingShow && currentEpisode && playlist) { if (currentIndex < playlist.length - 1) { const nextEpisode = playlist[currentIndex + 1]; + console.log("current episode is this in skip to next", currentEpisode) + dispatch(saveEpisodesTimestamp(currentEpisode)) dispatch(playEpisode(nextEpisode)); dispatch(setIsPlaying(true)); dispatch(setCurrentIndex(currentIndex + 1)) @@ -158,9 +159,10 @@ export const setEpisodeAsListened = (newEpisode) => (dispatch, getState) => { export const saveEpisodesTimestamp = (episode) => (dispatch, getState) => { const elapsedTime = audioService.getCurrentTime(); - if (elapsedTime > 5) { + if (elapsedTime > 5 && elapsedTime !== audioService.getDuration()) { const episodeDetails = { ...episode, timestamp: elapsedTime }; const timestamps = getState().audioPlayer.timestamps; + console.log(timestamps) const existingIndex = timestamps.findIndex(item => item.episodeId === episode.episodeId); let updatedTimestamps; From cdc7684605794f1d3266160df01da4df8bee0859 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 18:57:51 +0200 Subject: [PATCH 311/323] Feat: Implement reset listening history functionality --- src/App.jsx | 20 ++++++++++++++------ src/components/Episode.jsx | 1 + src/components/PodcastDetailsModal.jsx | 6 +++--- src/state/audioPlayerSlice.js | 10 +++++++++- src/state/favouritesSlice.js | 6 +++++- src/utils/episodeUtils.js | 1 + 6 files changed, 33 insertions(+), 11 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index 354e44e2d..e3c3aa1c1 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -9,9 +9,13 @@ import FavouritesPage from './pages/FavouritesPage'; import { Box } from '@mui/material' import ResetConfirmationDialog from './components/ResetConfirmationDialog'; import { useGetAllPodcastsEnrichedQuery } from './services/podcastApi' +import { useDispatch } from "react-redux"; +import { clearFavourites } from "./state/favouritesSlice"; +import { clearListenedEpisodes, clearTimestamps } from "./state/audioPlayerSlice"; function App() { const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards + const dispatch = useDispatch() // const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes // const [playingShow, setPlayingShow] = useState(null); // Sets the playing show equal to the detail show from the PodcastDetails Modal // const [listenedEpisodes, setListenedEpisodes] = useState(() => { // Checks for listened episodes in local storage and sets itself equal to that, or empty array @@ -65,8 +69,12 @@ function App() { }; const handleResetConfirm = () => { - setListenedEpisodes([]); - localStorage.removeItem('episodeTimestamps'); + localStorage.removeItem('timestamps'); + localStorage.removeItem('favourites'); + localStorage.removeItem('listenedEpisodes'); + dispatch(clearFavourites([])) + dispatch(clearListenedEpisodes([])) + dispatch(clearTimestamps([])) setIsResetDialogOpen(false); }; @@ -117,9 +125,9 @@ function App() { // setIsPlaying(true); // }; - const handleEpisodeComplete = (episodeData) => { - markEpisodeAsListened(episodeData); - }; + // const handleEpisodeComplete = (episodeData) => { + // markEpisodeAsListened(episodeData); + // }; if (isLoading) return ( @@ -148,7 +156,7 @@ function App() { { const playingShow = useSelector((state) => state.podcasts.selectedPodcastData); const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); + console.log("episode description:", episode) const handlePlayEpisode = (episodeDetails) => { dispatch(playEpisode(episodeDetails)) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index 7df726012..a83d05e20 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -151,11 +151,11 @@ const PodcastDetailsModal = ({ show, open, onClose, loading, fetching, error, ep - {selectedSeason && selectedSeason.episodes.map((episode) => { + {selectedSeason && selectedSeason.episodes.map((episodeObject) => { return ( ); })} diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 5610a5b59..8d06ea933 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -69,6 +69,12 @@ const audioPlayerSlice = createSlice({ }, setEpisodeListened: (state, action) => { state.listenedEpisodes = action.payload + }, + clearTimestamps: (state, action) => { + state.timestamps = action.payload + }, + clearListenedEpisodes: (state, action) => { + state.listenedEpisodes = action.payload } } @@ -191,6 +197,8 @@ export const { setPlayingShow, setPlaylist, setCurrentIndex, - setEpisodeListened + setEpisodeListened, + clearTimestamps, + clearListenedEpisodes } = audioPlayerSlice.actions; export default audioPlayerSlice.reducer; \ No newline at end of file diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 5213b997b..396f730ec 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -63,10 +63,14 @@ const favouritesSlice = createSlice({ setFavouriteSearchTerm(state, action) { state.searchTerm = action.payload; }, + clearFavourites(state, action) { + state.favourites = action.payload + state.searchedAndSortedFavourites = action.payload + } } }); -export const { toggleFavourite, setFavouriteSortOption, setFavouriteSearchTerm } = favouritesSlice.actions; +export const { toggleFavourite, setFavouriteSortOption, setFavouriteSearchTerm, clearFavourites } = favouritesSlice.actions; export { selectIsFavourite, selectSearchedAndSortedFavourites }; export default favouritesSlice.reducer; \ No newline at end of file diff --git a/src/utils/episodeUtils.js b/src/utils/episodeUtils.js index 2940647b4..23c72d143 100644 --- a/src/utils/episodeUtils.js +++ b/src/utils/episodeUtils.js @@ -42,6 +42,7 @@ export const episodeDetails = (show, season, episode) => { season: season.season, title: episode.title, episode: episode.episode, + description: episode.description, file: episode.file, updated: show.updated, savedAt: null From 28e2929e30eec44e63e317b7b52cd78ce1d8ba66 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:02:51 +0200 Subject: [PATCH 312/323] Fix: Clear favourites now working --- src/App.jsx | 7 ++++--- src/state/favouritesSlice.js | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index e3c3aa1c1..e81beec5c 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -69,12 +69,13 @@ function App() { }; const handleResetConfirm = () => { + const clearArray = [] localStorage.removeItem('timestamps'); localStorage.removeItem('favourites'); localStorage.removeItem('listenedEpisodes'); - dispatch(clearFavourites([])) - dispatch(clearListenedEpisodes([])) - dispatch(clearTimestamps([])) + dispatch(clearFavourites(clearArray)) + dispatch(clearListenedEpisodes(clearArray)) + dispatch(clearTimestamps(clearArray)) setIsResetDialogOpen(false); }; diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index 396f730ec..bd68595c1 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -64,7 +64,7 @@ const favouritesSlice = createSlice({ state.searchTerm = action.payload; }, clearFavourites(state, action) { - state.favourites = action.payload + state.episodes = action.payload state.searchedAndSortedFavourites = action.payload } From 1d998c20eaa4ac5e0255ce00725710935b0766c9 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:05:43 +0200 Subject: [PATCH 313/323] Fix: add prop types to reset confirmation --- src/components/ResetConfirmationDialog.jsx | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/src/components/ResetConfirmationDialog.jsx b/src/components/ResetConfirmationDialog.jsx index 83c59c150..87e8df226 100644 --- a/src/components/ResetConfirmationDialog.jsx +++ b/src/components/ResetConfirmationDialog.jsx @@ -1,4 +1,5 @@ import { Dialog, DialogTitle, DialogContent, DialogActions, DialogContentText, Button } from '@mui/material'; +import PropTypes from 'prop-types'; const ResetConfirmationDialog = ({ open, onClose, onConfirm }) => { return ( @@ -26,4 +27,10 @@ const ResetConfirmationDialog = ({ open, onClose, onConfirm }) => { ); }; -export default ResetConfirmationDialog; \ No newline at end of file +export default ResetConfirmationDialog; + +ResetConfirmationDialog.propTypes = { + open: PropTypes.bool.isRequired, + onClose: PropTypes.func.isRequired, + onConfirm: PropTypes.func.isRequired +}; \ No newline at end of file From ba188970f53c1c5ef31e31892cc8e75f01b45ba5 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:07:01 +0200 Subject: [PATCH 314/323] Fix: Remove unused imports and prop types from audio player component --- src/components/AudioPlayer.jsx | 33 ++------------------------------- 1 file changed, 2 insertions(+), 31 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index 2ce13df9c..ad6070f13 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -3,10 +3,9 @@ import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import PauseIcon from '@mui/icons-material/Pause'; import SkipNextIcon from '@mui/icons-material/SkipNext'; import SkipPreviousIcon from '@mui/icons-material/SkipPrevious'; -import PropTypes from 'prop-types'; import { useTheme } from '@mui/material/styles'; import { useDispatch, useSelector } from 'react-redux'; -import { playEpisode, skipToNextEpisode, skipToPreviousEpisode, setCurrentTime, setIsPlaying, saveEpisodesTimestamp } from '../state/audioPlayerSlice' +import { skipToNextEpisode, skipToPreviousEpisode, setIsPlaying, saveEpisodesTimestamp } from '../state/audioPlayerSlice' import Volume from './Volume' import AudioSlider from './AudioSlider'; import { audioService } from '../services/AudioService'; @@ -35,7 +34,7 @@ const AudioPlayer = () => { const handleBeforeUnload = (event) => { if (isPlaying) { event.preventDefault(); - event.returnValue = ''; // This is required for some browsers + event.returnValue = ''; } }; @@ -101,32 +100,4 @@ const AudioPlayer = () => { ); } -AudioPlayer.propTypes = { - episode: PropTypes.shape({ - title: PropTypes.string.isRequired, - description: PropTypes.string, - episode: PropTypes.number.isRequired, - file: PropTypes.string.isRequired, - }), - playingShow: PropTypes.shape({ - id: PropTypes.string.isRequired, - title: PropTypes.string.isRequired, - description: PropTypes.string, - genres: PropTypes.oneOfType([ - PropTypes.arrayOf(PropTypes.number), - PropTypes.arrayOf(PropTypes.string) - ]), - seasons: PropTypes.arrayOf(PropTypes.shape({ - episodes: PropTypes.arrayOf(PropTypes.shape({ - title: PropTypes.string.isRequired, - description: PropTypes.string, - episode: PropTypes.number.isRequired, - file: PropTypes.string.isRequired, - })) - })) - }), - onEpisodeComplete: PropTypes.func.isRequired, - updateEpisodeTimestamp: PropTypes.func.isRequired -}; - export default AudioPlayer; \ No newline at end of file From 580e58f6f0e52d83f6070f6e1a20bf2d903f0555 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:07:52 +0200 Subject: [PATCH 315/323] Fix: remove unused imports from audio slider component --- src/components/AudioSlider.jsx | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/components/AudioSlider.jsx b/src/components/AudioSlider.jsx index b102ed9b6..d896f85b3 100644 --- a/src/components/AudioSlider.jsx +++ b/src/components/AudioSlider.jsx @@ -1,14 +1,11 @@ import { Box, Slider, Typography } from '@mui/material'; -import { useDispatch, useSelector } from 'react-redux'; +import { useSelector } from 'react-redux'; import { useTheme } from '@mui/material/styles'; -// import { seekTo } from '../state/audioPlayerSlice'; import { audioService } from '../services/AudioService'; import { useEffect, useState } from 'react'; -// import { setCurrentTime } from '../state/audioPlayerSlice'; const AudioSlider = () => { const theme = useTheme(); - const dispatch = useDispatch(); const [duration, setDuration] = useState(0); const [currentTime, setCurrentTime] = useState(0); const episodeIndex = useSelector((state) => state.audioPlayer.currentIndex) From 1ac513610cf13485a9f040f028c60918e0d1d1f9 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:08:52 +0200 Subject: [PATCH 316/323] Fix: Remove unused imports from episode component --- src/components/Episode.jsx | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index e179414a7..daee84a82 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -8,7 +8,7 @@ import { import CheckCircleIcon from '@mui/icons-material/CheckCircle'; import { useSelector, useDispatch } from 'react-redux' import { toggleFavourite } from '../state/favouritesSlice'; -import { saveTimestamp, setEpisodeAsListened, selectIsListened, setPlayingShow, playEpisode } from '../state/audioPlayerSlice'; +import { selectIsListened, setPlayingShow, playEpisode } from '../state/audioPlayerSlice'; import { selectIsFavourite } from "../state/favouritesSlice"; import PlayArrowIcon from '@mui/icons-material/PlayArrow'; import FavoriteBorderIcon from '@mui/icons-material/FavoriteBorder'; @@ -80,9 +80,7 @@ const Episode = ({ episode }) => { } Episode.propTypes = { - show: PropTypes.object, episode: PropTypes.object, - selectedSeason: PropTypes.object }; export default Episode \ No newline at end of file From 77a14eaa74d57f56e4d20c33e6c1afe9661f6590 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:10:12 +0200 Subject: [PATCH 317/323] Fix: Removed unused imports from podcast details modal component --- src/components/PodcastDetailsModal.jsx | 13 +------------ 1 file changed, 1 insertion(+), 12 deletions(-) diff --git a/src/components/PodcastDetailsModal.jsx b/src/components/PodcastDetailsModal.jsx index a83d05e20..e657417cb 100644 --- a/src/components/PodcastDetailsModal.jsx +++ b/src/components/PodcastDetailsModal.jsx @@ -14,11 +14,10 @@ import PropTypes from 'prop-types'; import LoadingSpinner from '../pages/LoadingSpinner'; import ErrorPage from '../pages/ErrorPage'; import Episode from './Episode'; -import { useSelector, useDispatch } from 'react-redux' import { episodeDetails } from '../utils/episodeUtils'; -const PodcastDetailsModal = ({ show, open, onClose, loading, fetching, error, episodeTimestamps }) => { +const PodcastDetailsModal = ({ show, open, onClose, loading, fetching, error }) => { const [ selectedSeason, setSelectedSeason ] = useState(null) const [imageLoading, setImageLoading] = useState(true) @@ -32,13 +31,6 @@ const PodcastDetailsModal = ({ show, open, onClose, loading, fetching, error, ep } }, [show]); - // const isListened = (episode) => { - // return listenedEpisodes.some(listened => - // listened.showId === show.id && - // listened.episodeTitle === episode.title - // ); - // }; - const handleSeasonChange = (event) => { const season = show.seasons.find(s => s.season === event.target.value); setSelectedSeason(season); @@ -176,12 +168,9 @@ PodcastDetailsModal.propTypes = { show: PropTypes.object, open: PropTypes.bool.isRequired, onClose: PropTypes.func.isRequired, - // onPlayEpisode: PropTypes.func.isRequired, loading: PropTypes.bool.isRequired, fetching: PropTypes.bool.isRequired, error: PropTypes.object - // listenedEpisodes: PropTypes.array.isRequired, - // episodeTimestamps: PropTypes.object.isRequired, }; export default PodcastDetailsModal; From 00111cb318f471102b7f22a130ad55b37a3cb4ee Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:11:32 +0200 Subject: [PATCH 318/323] Fix: Remove spacing from show card component --- src/components/ShowCard.jsx | 3 --- 1 file changed, 3 deletions(-) diff --git a/src/components/ShowCard.jsx b/src/components/ShowCard.jsx index e4a191ad1..381505cb2 100644 --- a/src/components/ShowCard.jsx +++ b/src/components/ShowCard.jsx @@ -102,9 +102,6 @@ export default function ShowCard({ title, description, seasons, image, genres, u ) } - - -// Define Prop Types for ShowCard component ShowCard.propTypes = { title: PropTypes.string.isRequired, description: PropTypes.string.isRequired, From c7c258aaa1e7bd85046b5c90f63aabe07357e744 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:12:07 +0200 Subject: [PATCH 319/323] Fix: Remove props and prop types from volume --- src/components/Volume.jsx | 7 ------- 1 file changed, 7 deletions(-) diff --git a/src/components/Volume.jsx b/src/components/Volume.jsx index a273038b5..167d314a4 100644 --- a/src/components/Volume.jsx +++ b/src/components/Volume.jsx @@ -4,7 +4,6 @@ import VolumeMuteIcon from '@mui/icons-material/VolumeMute'; import { useState } from 'react'; import { Box, IconButton, Slider } from '@mui/material'; import { useTheme } from '@mui/material/styles'; -import PropTypes from 'prop-types' import { audioService } from '../services/AudioService'; const Volume = () => { @@ -56,10 +55,4 @@ const Volume = () => { ) } -Volume.propTypes = { - audioRef: PropTypes.shape({ - current: PropTypes.instanceOf(HTMLAudioElement) - }) -}; - export default Volume \ No newline at end of file From f76ad0dd0d01293355a8cdf06e681b4e24de5abe Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:13:05 +0200 Subject: [PATCH 320/323] Fix: remove commented out props from content component --- src/pages/Content.jsx | 5 ----- 1 file changed, 5 deletions(-) diff --git a/src/pages/Content.jsx b/src/pages/Content.jsx index 57378d1c9..e92ba58b3 100644 --- a/src/pages/Content.jsx +++ b/src/pages/Content.jsx @@ -29,11 +29,6 @@ function Content() { error={error} open={!!selectedPodcastId} onClose={() => dispatch(setSelectedPodcastId(null))} - // onPlayEpisode={handlePlayEpisode} - // toggleFavorite={toggleFavorite} - // favoriteEpisodes={favoriteEpisodes} - // listenedEpisodes={listenedEpisodes} - // episodeTimestamps={episodeTimestamps} /> Date: Thu, 27 Feb 2025 19:14:50 +0200 Subject: [PATCH 321/323] Fix: remove unused function import from episodeUtils --- src/utils/episodeUtils.js | 1 - 1 file changed, 1 deletion(-) diff --git a/src/utils/episodeUtils.js b/src/utils/episodeUtils.js index 23c72d143..3947d3b79 100644 --- a/src/utils/episodeUtils.js +++ b/src/utils/episodeUtils.js @@ -1,5 +1,4 @@ import { generateEpisodeId } from "./episodeIdGenerator"; -import { dateAndTime } from "./dateAndTime"; export const getAllEpisodes = (show) => { if (!show || !Array.isArray(show.seasons)) { From f8fbcdf8fcc839835500e943c410f8b177754827 Mon Sep 17 00:00:00 2001 From: Rory Goddard Date: Thu, 27 Feb 2025 19:16:53 +0200 Subject: [PATCH 322/323] Fix: Remove old unused commented out code from app.jsx --- src/App.jsx | 109 ++-------------------------------------------------- 1 file changed, 4 insertions(+), 105 deletions(-) diff --git a/src/App.jsx b/src/App.jsx index e81beec5c..52ae463e9 100644 --- a/src/App.jsx +++ b/src/App.jsx @@ -2,7 +2,7 @@ import LoadingSpinner from "./pages/LoadingSpinner"; import ErrorPage from './pages/ErrorPage'; import NavBar from './components/NavBar'; import Content from "./pages/Content"; -import { useState, useEffect, useCallback } from 'react'; +import { useState } from 'react'; import { Routes, Route } from 'react-router-dom'; import AudioPlayer from './components/AudioPlayer'; import FavouritesPage from './pages/FavouritesPage'; @@ -14,51 +14,9 @@ import { clearFavourites } from "./state/favouritesSlice"; import { clearListenedEpisodes, clearTimestamps } from "./state/audioPlayerSlice"; function App() { - const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards const dispatch = useDispatch() - // const [isPlaying, setIsPlaying] = useState(false); // Handle play state of episodes - // const [playingShow, setPlayingShow] = useState(null); // Sets the playing show equal to the detail show from the PodcastDetails Modal - // const [listenedEpisodes, setListenedEpisodes] = useState(() => { // Checks for listened episodes in local storage and sets itself equal to that, or empty array - // const storedListenedEpisodes = localStorage.getItem('listenedEpisodes'); - // return storedListenedEpisodes ? JSON.parse(storedListenedEpisodes) : []; - // }); + const { error, isLoading } = useGetAllPodcastsEnrichedQuery(); // Fetch the initial data for the show cards const [isResetDialogOpen, setIsResetDialogOpen] = useState(false); // State to control whether listening reset dialog is open or closed - // const [episodeTimestamps, setEpisodeTimestamps] = useState(() => { // State which manages tracking of timestamps of episodes played - // const storedTimestamps = localStorage.getItem('episodeTimestamps'); - // return storedTimestamps ? JSON.parse(storedTimestamps) : {}; - // }); - - // const updateEpisodeTimestamp = useCallback((showId, episodeTitle, timestamp) => { - // setEpisodeTimestamps(prev => { - // const newTimestamps = { - // ...prev, - // [showId]: { - // ...prev[showId], - // [episodeTitle]: timestamp - // } - // }; - // localStorage.setItem('episodeTimestamps', JSON.stringify(newTimestamps)); - // return newTimestamps; - // }); - // }, []); - - // const markEpisodeAsListened = useCallback((episode) => { - // setListenedEpisodes(prev => { - // // Check if this episode is already marked as listened - // const isAlreadyListened = prev.some( - // listened => listened.showId === episode.showId && - // listened.episodeTitle === episode.episodeTitle - // ); - - // if (isAlreadyListened) { - // return prev; - // } - - // const newListenedEpisodes = [...prev, episode]; - // localStorage.setItem('listenedEpisodes', JSON.stringify(newListenedEpisodes)); - // return newListenedEpisodes; - // }); - // }, []); const handleResetClick = () => { setIsResetDialogOpen(true); @@ -79,58 +37,6 @@ function App() { setIsResetDialogOpen(false); }; - - // const handleSkipNext = () => { - // if (detailedShow && currentEpisode) { - // const allEpisodes = getAllEpisodes(detailedShow); - // let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - - // // If currentIndex is still -1, assume we're at the first episode - // if (currentIndex === -1) { - // currentIndex = 0; - // } - - // if (currentIndex < allEpisodes.length - 1) { - // const nextEpisode = allEpisodes[currentIndex + 1]; - // setCurrentEpisode(nextEpisode); - // setIsPlaying(true); - // } - // } - // }; - - // const handleSkipPrevious = () => { - // if (detailedShow && currentEpisode) { - // const allEpisodes = getAllEpisodes(detailedShow); - // let currentIndex = findEpisodeIndex(allEpisodes, currentEpisode); - - // // If currentIndex is still -1, assume we're at the first episode - // if (currentIndex === -1) { - // currentIndex = 0; - // } - - // if (currentIndex > 0) { - // const previousEpisode = allEpisodes[currentIndex - 1]; - // setCurrentEpisode(previousEpisode); - // setIsPlaying(true); - // } - // } - // }; - - // const handlePlayEpisode = (episode) => { - // const episodeWithSeason = { - // ...episode, - // season: episode.season || 1 - // }; - // setCurrentEpisode(episodeWithSeason); - // setPlayingShow(detailedShow); - // setIsPlaying(true); - // }; - - // const handleEpisodeComplete = (episodeData) => { - // markEpisodeAsListened(episodeData); - // }; - - if (isLoading) return ( @@ -147,19 +53,12 @@ function App() { }> + } > - + Date: Thu, 27 Feb 2025 19:33:58 +0200 Subject: [PATCH 323/323] Fix: Remove console.logs from application --- src/components/AudioPlayer.jsx | 1 - src/components/Episode.jsx | 4 ---- src/pages/FavouritesPage.jsx | 1 - src/state/audioPlayerSlice.js | 5 ----- src/state/favouritesSlice.js | 4 ---- src/utils/episodeUtils.js | 3 --- 6 files changed, 18 deletions(-) diff --git a/src/components/AudioPlayer.jsx b/src/components/AudioPlayer.jsx index ad6070f13..38641a2f0 100644 --- a/src/components/AudioPlayer.jsx +++ b/src/components/AudioPlayer.jsx @@ -21,7 +21,6 @@ const AudioPlayer = () => { if (isPlaying) { audioService.pause(); dispatch(setIsPlaying(false)); - console.log("current episode is this in handleplaypause:", currentEpisode) dispatch(saveEpisodesTimestamp(currentEpisode)) } else { diff --git a/src/components/Episode.jsx b/src/components/Episode.jsx index daee84a82..2a24fd6e7 100644 --- a/src/components/Episode.jsx +++ b/src/components/Episode.jsx @@ -19,12 +19,9 @@ import { dateAndTime } from '../utils/dateAndTime'; const Episode = ({ episode }) => { const isFavourite = useSelector(state => selectIsFavourite(state, episode)); const isListened = useSelector(state => selectIsListened(state, episode)); - console.log("is listened selector is:", isListened) - console.log("is favourite selector is:", isFavourite) const playingShow = useSelector((state) => state.podcasts.selectedPodcastData); const timestamps = useSelector((state) => state.audioPlayer.timestamps); const dispatch = useDispatch(); - console.log("episode description:", episode) const handlePlayEpisode = (episodeDetails) => { dispatch(playEpisode(episodeDetails)) @@ -33,7 +30,6 @@ const Episode = ({ episode }) => { const handleToggleFavourite = (episode) => { const savedEpisode = {...episode, savedAt: dateAndTime()} - console.log("Episode details are", episode.savedAt) dispatch(toggleFavourite(savedEpisode)); }; diff --git a/src/pages/FavouritesPage.jsx b/src/pages/FavouritesPage.jsx index 48300afe4..dd3dcf0eb 100644 --- a/src/pages/FavouritesPage.jsx +++ b/src/pages/FavouritesPage.jsx @@ -9,7 +9,6 @@ const FavoritesPage = () => { const dispatch = useDispatch() const favouriteEpisodes = useSelector(selectSearchedAndSortedFavourites) const navigate = useNavigate(); - console.log("Favourite episodes is this after rerender:", favouriteEpisodes) return ( diff --git a/src/state/audioPlayerSlice.js b/src/state/audioPlayerSlice.js index 8d06ea933..92fef1834 100644 --- a/src/state/audioPlayerSlice.js +++ b/src/state/audioPlayerSlice.js @@ -120,7 +120,6 @@ export const generatePlaylist = () => (dispatch, getState) => { dispatch(setPlaylist(allEpisodes)) dispatch(setCurrentIndex(currentIndex)) - console.log(allEpisodes) } } @@ -130,7 +129,6 @@ export const skipToNextEpisode = () => (dispatch, getState) => { if (playingShow && currentEpisode && playlist) { if (currentIndex < playlist.length - 1) { const nextEpisode = playlist[currentIndex + 1]; - console.log("current episode is this in skip to next", currentEpisode) dispatch(saveEpisodesTimestamp(currentEpisode)) dispatch(playEpisode(nextEpisode)); dispatch(setIsPlaying(true)); @@ -153,14 +151,12 @@ export const skipToPreviousEpisode = () => (dispatch, getState) => { }; export const setEpisodeAsListened = (newEpisode) => (dispatch, getState) => { - console.log("This is what the actions payload is:", newEpisode) const { listenedEpisodes } = getState().audioPlayer; const isInArray = listenedEpisodes.some(episode => episode.episodeId === newEpisode.episodeId) if (!isInArray) { const listenedEpisodesArray = [...listenedEpisodes, newEpisode] dispatch(setEpisodeListened(listenedEpisodesArray)) } - console.log("listenedEpisodes are:", listenedEpisodes) }; export const saveEpisodesTimestamp = (episode) => (dispatch, getState) => { @@ -168,7 +164,6 @@ export const saveEpisodesTimestamp = (episode) => (dispatch, getState) => { if (elapsedTime > 5 && elapsedTime !== audioService.getDuration()) { const episodeDetails = { ...episode, timestamp: elapsedTime }; const timestamps = getState().audioPlayer.timestamps; - console.log(timestamps) const existingIndex = timestamps.findIndex(item => item.episodeId === episode.episodeId); let updatedTimestamps; diff --git a/src/state/favouritesSlice.js b/src/state/favouritesSlice.js index bd68595c1..eb315a635 100644 --- a/src/state/favouritesSlice.js +++ b/src/state/favouritesSlice.js @@ -46,14 +46,10 @@ const favouritesSlice = createSlice({ }, reducers: { toggleFavourite: (state, action) => { - console.log("Here is the episode passed to toggle:", action.payload) const existingIndex = state.episodes.findIndex(fav => fav.episodeId === action.payload.episodeId) - console.log("Checking existing index:", existingIndex) if (existingIndex === -1) { - console.log("Spoiler alert: its -1") state.episodes.push(action.payload); } else { - console.log("its not -1, jk this console log will never print") state.episodes.splice(existingIndex, 1); } }, diff --git a/src/utils/episodeUtils.js b/src/utils/episodeUtils.js index 3947d3b79..acadd94a3 100644 --- a/src/utils/episodeUtils.js +++ b/src/utils/episodeUtils.js @@ -5,7 +5,6 @@ export const getAllEpisodes = (show) => { console.error('Invalid show structure:', show); return []; } - console.log(show) return show.seasons.flatMap((season) => { if (Array.isArray(season.episodes)) { return season.episodes.map(episode => ({ @@ -24,8 +23,6 @@ export const getAllEpisodes = (show) => { }; export const findEpisodeIndex = (allEpisodes, currentEpisode) => { - console.log("All episodes is the following:", allEpisodes) - console.log("Current Episode passed in as args:", currentEpisode) return allEpisodes.findIndex(e => e.episode === currentEpisode.episode && (e.season === currentEpisode.season || e.season === undefined)

;Ny^+0Buv#;( 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�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ã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