diff --git a/assets/app.js b/assets/app.js
index e671a9f..edc04bf 100644
--- a/assets/app.js
+++ b/assets/app.js
@@ -1,4 +1,3 @@
-import { registerReactControllerComponents } from '@symfony/ux-react';
import './bootstrap.js';
import '@fortawesome/fontawesome-free/js/all.js';
@@ -15,4 +14,4 @@ import './styles/app.scss';
// start the Stimulus application
import './bootstrap';
-//registerReactControllerComponents(require.context('./react/controllers', true, /\.(j|t)sx?$/));
+// La ligne registerReactControllerComponents a déjà été commentée
diff --git a/assets/vue/app/domain/manga/application/store/mangaStore.js b/assets/vue/app/domain/manga/application/store/mangaStore.js
index 624caaa..d486e8f 100644
--- a/assets/vue/app/domain/manga/application/store/mangaStore.js
+++ b/assets/vue/app/domain/manga/application/store/mangaStore.js
@@ -128,6 +128,19 @@ export const useMangaStore = defineStore('manga', {
} finally {
this.addingManga = false;
}
+ },
+
+ // --- Chapter Actions ---
+ async searchChapter(chapterId) {
+ try {
+ await mangaRepository.searchChapter(chapterId);
+ // Rafraîchir la collection après la recherche
+ await this.refreshCollectionInBackground();
+ return true;
+ } catch (error) {
+ console.error('Erreur lors de la recherche du chapitre:', error);
+ return false;
+ }
}
}
});
diff --git a/assets/vue/app/domain/manga/infrastructure/api/apiMangaRepository.js b/assets/vue/app/domain/manga/infrastructure/api/apiMangaRepository.js
index 6be0b50..15e27aa 100644
--- a/assets/vue/app/domain/manga/infrastructure/api/apiMangaRepository.js
+++ b/assets/vue/app/domain/manga/infrastructure/api/apiMangaRepository.js
@@ -119,4 +119,23 @@ export class ApiMangaRepository {
throw error;
}
}
+
+ async searchChapter(chapterId) {
+ try {
+ const response = await fetch('https://localhost/api/scraping/chapters', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: JSON.stringify({ chapterId })
+ });
+ if (!response.ok) {
+ throw new Error('Échec de la recherche du chapitre');
+ }
+ return await response.json();
+ } catch (error) {
+ console.error('API Error:', error);
+ throw error;
+ }
+ }
}
diff --git a/assets/vue/app/domain/manga/presentation/components/MangaChapter.vue b/assets/vue/app/domain/manga/presentation/components/MangaChapter.vue
index 379f933..0cbd1b2 100644
--- a/assets/vue/app/domain/manga/presentation/components/MangaChapter.vue
+++ b/assets/vue/app/domain/manga/presentation/components/MangaChapter.vue
@@ -52,8 +52,11 @@
const store = useMangaStore();
const handleSearch = async () => {
- // TODO: Implémenter la recherche de chapitre
- console.log('Recherche du chapitre:', props.chapter.id);
+ try {
+ await store.searchChapter(props.chapter.id);
+ } catch (error) {
+ console.error('Erreur lors de la recherche du chapitre:', error);
+ }
};
const handleDelete = async () => {
diff --git a/assets/vue/app/domain/manga/presentation/components/MangaGrid.vue b/assets/vue/app/domain/manga/presentation/components/MangaGrid.vue
index 35d6b2b..e991865 100644
--- a/assets/vue/app/domain/manga/presentation/components/MangaGrid.vue
+++ b/assets/vue/app/domain/manga/presentation/components/MangaGrid.vue
@@ -1,20 +1,16 @@
-
-
-
+
+
+
\ No newline at end of file
+ defineProps({
+ mangas: {
+ type: Array,
+ required: true
+ }
+ });
+
diff --git a/config/routes.yaml b/config/routes.yaml
index bf69893..d737208 100644
--- a/config/routes.yaml
+++ b/config/routes.yaml
@@ -4,15 +4,6 @@ controllers:
namespace: App\Controller
type: attribute
-react_app:
- path: /react/{req}
- controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
- defaults:
- template: 'react/index.html.twig'
- req: ''
- requirements:
- req: ".*"
-
vue_app:
path: /vue/{req}
controller: Symfony\Bundle\FrameworkBundle\Controller\TemplateController
diff --git a/tailwind.config.js b/tailwind.config.js
index 51b2456..c674222 100644
--- a/tailwind.config.js
+++ b/tailwind.config.js
@@ -1,20 +1,16 @@
/** @type {import('tailwindcss').Config} */
module.exports = {
- content: [
- './templates/**/*.html.twig',
- './assets/react/**/*.{js,jsx}',
- './assets/**/*.{js,jsx}'
- ],
- theme: {
- extend: {},
- },
- plugins: [
- // require("daisyui"),
- ],
- safelist: [
- 'bg-red-500',
- 'bg-blue-500',
- 'bg-yellow-500',
- 'bg-green-500',
- ],
-}
+ content: [
+ './templates/**/*.html.twig',
+ './assets/react/**/*.{js,jsx}',
+ './assets/**/*.{js,jsx}',
+ './assets/vue/**/*.{js,vue}'
+ ],
+ theme: {
+ extend: {}
+ },
+ plugins: [
+ // require("daisyui"),
+ ],
+ safelist: ['bg-red-500', 'bg-blue-500', 'bg-yellow-500', 'bg-green-500']
+};
diff --git a/webpack.config.js b/webpack.config.js
index ba37835..205fd97 100644
--- a/webpack.config.js
+++ b/webpack.config.js
@@ -21,7 +21,6 @@ Encore
* and one CSS file (e.g. app.css) if your JavaScript imports CSS.
*/
.addEntry('app', './assets/app.js')
- .addEntry('react-app', './assets/react/app/index.jsx')
.addEntry('vue-app', './assets/vue/app/index.js')
// .addEntry('alpine', 'alpinejs')
@@ -31,7 +30,6 @@ Encore
// When enabled, Webpack "splits" your files into smaller pieces for greater optimization.
.splitEntryChunks()
- .enableReactPreset()
.enableVueLoader()
// will require an extra script tag for runtime.js
@@ -57,7 +55,7 @@ Encore
// })
// enables and configure @babel/preset-env polyfills
- .configureBabelPresetEnv((config) => {
+ .configureBabelPresetEnv(config => {
config.useBuiltIns = 'usage';
config.corejs = '3.23';
})
@@ -68,17 +66,9 @@ Encore
// uncomment if you use TypeScript
//.enableTypeScriptLoader()
- // uncomment if you use React
- //.enableReactPreset()
-
- // uncomment to get integrity="..." attributes on your script & link tags
- // requires WebpackEncoreBundle 1.4 or higher
- //.enableIntegrityHashes(Encore.isProduction())
-
// uncomment if you're having problems with a jQuery plugin
//.autoProvidejQuery()
- .enablePostCssLoader()
-;
+ .enablePostCssLoader();
module.exports = Encore.getWebpackConfig();