mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-20 20:29:06 +00:00
* feat(rooms): add webhook notifications for transcript completion
- Add webhook_url and webhook_secret fields to rooms table
- Create Celery task with 24-hour retry window using exponential backoff
- Send transcript metadata, diarized text, topics, and summaries via webhook
- Add HMAC signature verification for webhook security
- Add test endpoint POST /v1/rooms/{room_id}/webhook/test
- Update frontend with webhook configuration UI and test button
- Auto-generate webhook secret if not provided
- Trigger webhook after successful file pipeline processing for room recordings
* style: linting
* fix: remove unwanted files
* fix: update openapi gen
* fix: self-review
* docs: add comprehensive webhook documentation
- Document webhook configuration, events, and payloads
- Include transcript.completed and test event examples
- Add security considerations and best practices
- Provide example webhook receiver implementation
- Document retry policy and signature verification
* fix: remove audio_mp3_url from webhook payload
- Remove audio download URL generation from webhook
- Update documentation to reflect the change
- Keep only frontend_url for accessing transcripts
* docs: remove unwanted section
* fix: correct API method name and type imports for rooms
- Fix v1RoomsRetrieve to v1RoomsGet
- Update Room type to RoomDetails throughout frontend
- Fix type imports in useRoomList, RoomList, RoomTable, and RoomCards
* feat: add show/hide toggle for webhook secret field
- Add eye icon button to reveal/hide webhook secret when editing
- Show password dots when webhook secret is hidden
- Reset visibility state when opening/closing dialog
- Only show toggle button when editing existing room with secret
* fix: resolve event loop conflict in webhook test endpoint
- Extract webhook test logic into shared async function
- Call async function directly from FastAPI endpoint
- Keep Celery task wrapper for background processing
- Fixes RuntimeError: event loop already running
* refactor: remove unnecessary Celery task for webhook testing
- Webhook testing is synchronous and provides immediate feedback
- No need for background processing via Celery
- Keep only the async function called directly from API endpoint
* feat: improve webhook test error messages and display
- Show HTTP status code in error messages
- Parse JSON error responses to extract meaningful messages
- Improved UI layout for webhook test results
- Added colored background for success/error states
- Better text wrapping for long error messages
* docs: adjust doc
* fix: review
* fix: update attempts to match close 24h
* fix: add event_id
* fix: changed to uuid, to have new event_id when reprocess.
* style: linting
* fix: alembic revision
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { useEffect, useState } from "react";
|
|
import { useError } from "../../(errors)/errorContext";
|
|
import useApi from "../../lib/useApi";
|
|
import { Page_RoomDetails_ } from "../../api";
|
|
import { PaginationPage } from "../browse/_components/Pagination";
|
|
|
|
type RoomList = {
|
|
response: Page_RoomDetails_ | null;
|
|
loading: boolean;
|
|
error: Error | null;
|
|
refetch: () => void;
|
|
};
|
|
|
|
//always protected
|
|
const useRoomList = (page: PaginationPage): RoomList => {
|
|
const [response, setResponse] = useState<Page_RoomDetails_ | null>(null);
|
|
const [loading, setLoading] = useState<boolean>(true);
|
|
const [error, setErrorState] = useState<Error | null>(null);
|
|
const { setError } = useError();
|
|
const api = useApi();
|
|
const [refetchCount, setRefetchCount] = useState(0);
|
|
|
|
const refetch = () => {
|
|
setLoading(true);
|
|
setRefetchCount(refetchCount + 1);
|
|
};
|
|
|
|
useEffect(() => {
|
|
if (!api) return;
|
|
setLoading(true);
|
|
api
|
|
.v1RoomsList({ page })
|
|
.then((response) => {
|
|
setResponse(response);
|
|
setLoading(false);
|
|
})
|
|
.catch((err) => {
|
|
setResponse(null);
|
|
setLoading(false);
|
|
setError(err);
|
|
setErrorState(err);
|
|
});
|
|
}, [!api, page, refetchCount]);
|
|
|
|
return { response, loading, error, refetch };
|
|
};
|
|
|
|
export default useRoomList;
|