diff --git a/.cursor/rules/api_platform.mdc b/.cursor/rules/api_platform.mdc index 6af2d4b..0e4c168 100644 --- a/.cursor/rules/api_platform.mdc +++ b/.cursor/rules/api_platform.mdc @@ -1,7 +1,7 @@ --- description: globs: -alwaysApply: true +alwaysApply: false --- ``` Domain/Manga/Infrastructure/ApiPlatform/ diff --git a/.cursor/rules/jobs.mdc b/.cursor/rules/jobs.mdc index 4f953ef..bfffdf3 100644 --- a/.cursor/rules/jobs.mdc +++ b/.cursor/rules/jobs.mdc @@ -1,5 +1,5 @@ --- -description: need to create or find a job +description: globs: alwaysApply: false --- diff --git a/.cursor/rules/tests.mdc b/.cursor/rules/tests.mdc index 3fb51d0..7cdc928 100644 --- a/.cursor/rules/tests.mdc +++ b/.cursor/rules/tests.mdc @@ -1,7 +1,7 @@ --- description: globs: -alwaysApply: true +alwaysApply: false --- # Tests de Mangarr diff --git a/assets/vue/app/domain/manga/infrastructure/api/MangaApi.js b/assets/vue/app/domain/manga/infrastructure/api/MangaApi.js deleted file mode 100644 index 14506a7..0000000 --- a/assets/vue/app/domain/manga/infrastructure/api/MangaApi.js +++ /dev/null @@ -1,17 +0,0 @@ -export class MangaApi { - static async fetchById(mangaId) { - const response = await fetch(`/api/mangas/${mangaId}`); - if (!response.ok) { - throw new Error('Failed to fetch manga details'); - } - return response.json(); - } - - static async fetchChapters(mangaId) { - const response = await fetch(`/api/mangas/${mangaId}/chapters`); - if (!response.ok) { - throw new Error('Failed to fetch manga chapters'); - } - return response.json(); - } -} \ No newline at end of file diff --git a/assets/vue/app/domain/manga/infrastructure/api/apiMangaRepository.js b/assets/vue/app/domain/manga/infrastructure/api/apiMangaRepository.js index 5711df3..f75af8d 100644 --- a/assets/vue/app/domain/manga/infrastructure/api/apiMangaRepository.js +++ b/assets/vue/app/domain/manga/infrastructure/api/apiMangaRepository.js @@ -37,11 +37,25 @@ export class ApiMangaRepository { async getChapters(mangaId) { try { - const response = await fetch(`/api/mangas/${mangaId}/chapters`); - if (!response.ok) { - throw new Error('Failed to fetch manga chapters'); + let allChapters = []; + let page = 1; + let hasMore = true; + + while (hasMore) { + const response = await fetch(`/api/mangas/${mangaId}/chapters?limit=500&page=${page}`); + if (!response.ok) { + throw new Error('Failed to fetch manga chapters'); + } + const data = await response.json(); + allChapters = allChapters.concat(data.items); + hasMore = data.hasNextPage; + page++; } - return await response.json(); + + return { + items: allChapters, + total: allChapters.length + }; } catch (error) { console.error('API Error:', error); throw error; diff --git a/config/routes.yaml b/config/routes.yaml index ddbf60c..bf69893 100644 --- a/config/routes.yaml +++ b/config/routes.yaml @@ -5,13 +5,19 @@ controllers: type: attribute react_app: - path: /react + path: /react/{req} controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController defaults: template: 'react/index.html.twig' + req: '' + requirements: + req: ".*" vue_app: - path: /vue + path: /vue/{req} controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController defaults: template: 'vue/index.html.twig' + req: '' + requirements: + req: ".*"