/
githubmirror
/
novu
Обзор
Документация
Войти
/
githubmirror
/
novu
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
next
packages/react/src/hooks/useCreateSubscription.ts
53 строки
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 { CreateSubscriptionArgs, NovuError, TopicSubscription } from '@novu/js'; import { useCallback, useRef, useState } from 'react'; import { useNovu } from './NovuProvider'; export type UseCreateSubscriptionProps = { onSuccess?: (data: TopicSubscription) => void; onError?: (error: NovuError) => void; }; export type UseCreateSubscriptionResult = { isCreating: boolean; error?: NovuError; create: (args: CreateSubscriptionArgs) => Promise<{ data?: TopicSubscription | undefined; error?: NovuError | undefined; }>; }; export const useCreateSubscription = (props: UseCreateSubscriptionProps = {}): UseCreateSubscriptionResult => { const propsRef = useRef<UseCreateSubscriptionProps>(props); propsRef.current = props; const novu = useNovu(); const [isCreating, setIsCreating] = useState(false); const [error, setError] = useState<NovuError>(); const create = useCallback( async (args: CreateSubscriptionArgs) => { const { onSuccess, onError } = propsRef.current; setError(undefined); setIsCreating(true); const response = await novu.subscriptions.create(args); setIsCreating(false); if (response.error) { setError(response.error); onError?.(response.error); } else if (response.data) { onSuccess?.(response.data); } return response; }, [novu] ); return { create, isCreating, error, }; };