added advertising
This commit is contained in:
30
src/hooks/useTranscodingStatusSocket.js
Normal file
30
src/hooks/useTranscodingStatusSocket.js
Normal file
@@ -0,0 +1,30 @@
|
||||
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;
|
||||
}
|
||||
Reference in New Issue
Block a user