30 lines
1.1 KiB
JavaScript
30 lines
1.1 KiB
JavaScript
import { useEffect, useState } from 'react';
|
|
import { useStompClient } from './useStompClient'; // ваш существующий хук из чата
|
|
|
|
/**
|
|
* STOMP/WebSocket-подписка на статус транскодинга медиа.
|
|
* @param {number|string} advertisingId — id сущности
|
|
* @param {boolean} enabled — включать подписку
|
|
* @param {string} [path="ads"] — сегмент пути (например, "ads" или "fullscreen-ads")
|
|
* @returns {string} транскодинг-статус
|
|
*/
|
|
export function useTranscodingStatusSocket(advertisingId, enabled, path = "ads") {
|
|
const [status, setStatus] = useState('PROCESSING');
|
|
const stompClient = useStompClient();
|
|
|
|
useEffect(() => {
|
|
if (!enabled || !advertisingId || !stompClient?.connected) return;
|
|
|
|
const subscription = stompClient.subscribe(
|
|
`/topic/${path}/${advertisingId}/status`,
|
|
(message) => {
|
|
const payload = JSON.parse(message.body);
|
|
setStatus(payload.transcodingStatus);
|
|
}
|
|
);
|
|
|
|
return () => subscription.unsubscribe();
|
|
}, [advertisingId, enabled, path, stompClient]);
|
|
|
|
return status;
|
|
} |