/
githubmirror
/
novu
Обзор
Документация
Войти
/
githubmirror
/
novu
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
next
packages/react/src/hooks/useUpdateSubscription.ts
55 строк
1 KB
Paweł Tymczuk
chore(js,react,nextjs,api-service): polishing for full topic subscription creation flow (#9573)
09 дек 2025, 18:53
Не верифицирован
09 дек 2025, 18:53
9617a81
Код
Авторство
О чём код?
import { BaseUpdateSubscriptionArgs, NovuError, TopicSubscription, UpdateSubscriptionArgs } from '@novu/js'; import { useCallback, useRef, useState } from 'react'; import { useNovu } from './NovuProvider'; export type UseUpdateSubscriptionProps = { onSuccess?: (data: TopicSubscription) => void; onError?: (error: NovuError) => void; }; type UpdateResult = Promise<{ data?: TopicSubscription | undefined; error?: NovuError; }>; export type UseUpdateSubscriptionResult = { isUpdating: boolean; error?: NovuError; update: (args: UpdateSubscriptionArgs) => UpdateResult; }; export const useUpdateSubscription = (props: UseUpdateSubscriptionProps = {}): UseUpdateSubscriptionResult => { const propsRef = useRef<UseUpdateSubscriptionProps>(props); propsRef.current = props; const novu = useNovu(); const [isUpdating, setIsUpdating] = useState(false); const [error, setError] = useState<NovuError>(); const update = useCallback( async (args: UpdateSubscriptionArgs): UpdateResult => { const { onSuccess, onError } = propsRef.current; setError(undefined); setIsUpdating(true); const response = await novu.subscriptions.update(args as BaseUpdateSubscriptionArgs); setIsUpdating(false); if (response.error) { setError(response.error); onError?.(response.error); } else if (response.data) { onSuccess?.(response.data); } return response; }, [novu] ); return { update, isUpdating, error, }; };