fix: favorites change event for sidebar refresh
This commit is contained in:
@@ -70,16 +70,25 @@ export function Sidebar({ isOpen }: SidebarProps) {
|
||||
fetchFavorites();
|
||||
}, []); // Suppression de la dépendance pathname
|
||||
|
||||
// Mettre à jour les favoris quand ils changent dans le localStorage
|
||||
// Mettre à jour les favoris quand ils changent
|
||||
useEffect(() => {
|
||||
const handleStorageChange = (e: StorageEvent) => {
|
||||
const handleFavoritesChange = () => {
|
||||
fetchFavorites();
|
||||
};
|
||||
|
||||
// Écouter les changements de favoris dans la même fenêtre
|
||||
window.addEventListener("favoritesChanged", handleFavoritesChange);
|
||||
// Écouter les changements de favoris dans d'autres fenêtres
|
||||
window.addEventListener("storage", (e) => {
|
||||
if (e.key === "stripstream_favorites") {
|
||||
fetchFavorites();
|
||||
}
|
||||
};
|
||||
});
|
||||
|
||||
window.addEventListener("storage", handleStorageChange);
|
||||
return () => window.removeEventListener("storage", handleStorageChange);
|
||||
return () => {
|
||||
window.removeEventListener("favoritesChanged", handleFavoritesChange);
|
||||
window.removeEventListener("storage", handleFavoritesChange);
|
||||
};
|
||||
}, [fetchFavorites]);
|
||||
|
||||
const handleRefresh = async () => {
|
||||
|
||||
@@ -1,6 +1,13 @@
|
||||
import { storageService } from "./storage.service";
|
||||
|
||||
export class FavoriteService {
|
||||
private static readonly FAVORITES_CHANGE_EVENT = "favoritesChanged";
|
||||
|
||||
private static dispatchFavoritesChanged() {
|
||||
// Dispatch l'événement pour notifier les changements
|
||||
window.dispatchEvent(new Event(FavoriteService.FAVORITES_CHANGE_EVENT));
|
||||
}
|
||||
|
||||
/**
|
||||
* Vérifie si une série est dans les favoris
|
||||
*/
|
||||
@@ -13,6 +20,7 @@ export class FavoriteService {
|
||||
*/
|
||||
static addToFavorites(seriesId: string): void {
|
||||
storageService.addFavorite(seriesId);
|
||||
this.dispatchFavoritesChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -20,6 +28,7 @@ export class FavoriteService {
|
||||
*/
|
||||
static removeFromFavorites(seriesId: string): void {
|
||||
storageService.removeFavorite(seriesId);
|
||||
this.dispatchFavoritesChanged();
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
Reference in New Issue
Block a user