Improve the frontend 4
This commit is contained in:
@@ -10,35 +10,27 @@ const SubscriptionEventsContext = createContext<SubscriptionEventsContextType |
|
||||
|
||||
export const SubscriptionEventsProvider: React.FC<{ children: React.ReactNode }> = ({ children }) => {
|
||||
const [subscriptionVersion, setSubscriptionVersion] = useState(0);
|
||||
const [subscribers, setSubscribers] = useState<Set<() => void>>(new Set());
|
||||
const subscribersRef = React.useRef<Set<() => void>>(new Set());
|
||||
|
||||
const notifySubscriptionChanged = useCallback(() => {
|
||||
setSubscriptionVersion(prev => prev + 1);
|
||||
|
||||
|
||||
// Notify all subscribers
|
||||
subscribers.forEach(callback => {
|
||||
subscribersRef.current.forEach(callback => {
|
||||
try {
|
||||
callback();
|
||||
} catch (error) {
|
||||
console.warn('Error notifying subscription change subscriber:', error);
|
||||
}
|
||||
});
|
||||
}, [subscribers]);
|
||||
}, []); // Empty dependency array - function is now stable
|
||||
|
||||
const subscribeToChanges = useCallback((callback: () => void) => {
|
||||
setSubscribers(prev => {
|
||||
const newSubscribers = new Set(prev);
|
||||
newSubscribers.add(callback);
|
||||
return newSubscribers;
|
||||
});
|
||||
subscribersRef.current.add(callback);
|
||||
|
||||
// Return unsubscribe function
|
||||
return () => {
|
||||
setSubscribers(prev => {
|
||||
const newSubscribers = new Set(prev);
|
||||
newSubscribers.delete(callback);
|
||||
return newSubscribers;
|
||||
});
|
||||
subscribersRef.current.delete(callback);
|
||||
};
|
||||
}, []);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user