mirror of
https://github.com/Monadical-SAS/reflector.git
synced 2025-12-21 04:39:06 +00:00
Merge branch 'main' into main-undiverge
This commit is contained in:
@@ -16,6 +16,7 @@ import { faGear } from "@fortawesome/free-solid-svg-icons";
|
|||||||
import About from "../../(aboutAndPrivacy)/about";
|
import About from "../../(aboutAndPrivacy)/about";
|
||||||
import Privacy from "../../(aboutAndPrivacy)/privacy";
|
import Privacy from "../../(aboutAndPrivacy)/privacy";
|
||||||
import { lockWakeState, releaseWakeState } from "../../lib/wakeLock";
|
import { lockWakeState, releaseWakeState } from "../../lib/wakeLock";
|
||||||
|
import { useRouter } from "next/navigation";
|
||||||
|
|
||||||
const TranscriptCreate = () => {
|
const TranscriptCreate = () => {
|
||||||
const [stream, setStream] = useState<MediaStream | null>(null);
|
const [stream, setStream] = useState<MediaStream | null>(null);
|
||||||
@@ -36,6 +37,7 @@ const TranscriptCreate = () => {
|
|||||||
const transcript = useTranscript(stream, api);
|
const transcript = useTranscript(stream, api);
|
||||||
const webRTC = useWebRTC(stream, transcript?.response?.id, api);
|
const webRTC = useWebRTC(stream, transcript?.response?.id, api);
|
||||||
const webSockets = useWebSockets(transcript?.response?.id);
|
const webSockets = useWebSockets(transcript?.response?.id);
|
||||||
|
const router = useRouter();
|
||||||
const {
|
const {
|
||||||
loading,
|
loading,
|
||||||
permissionOk,
|
permissionOk,
|
||||||
@@ -53,6 +55,17 @@ const TranscriptCreate = () => {
|
|||||||
setTranscriptStarted(true);
|
setTranscriptStarted(true);
|
||||||
}, [webSockets.transcriptText]);
|
}, [webSockets.transcriptText]);
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
if (transcript?.response?.id) {
|
||||||
|
const newUrl = `/transcripts/${transcript.response.id}`;
|
||||||
|
// Shallow redirection does not work on NextJS 13
|
||||||
|
// https://github.com/vercel/next.js/discussions/48110
|
||||||
|
// https://github.com/vercel/next.js/discussions/49540
|
||||||
|
// router.push(newUrl, undefined, { shallow: true });
|
||||||
|
history.replaceState({}, "", newUrl);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
lockWakeState();
|
lockWakeState();
|
||||||
return () => {
|
return () => {
|
||||||
@@ -67,7 +80,7 @@ const TranscriptCreate = () => {
|
|||||||
<Recorder
|
<Recorder
|
||||||
setStream={setStream}
|
setStream={setStream}
|
||||||
onStop={() => {
|
onStop={() => {
|
||||||
webRTC?.peer?.send(JSON.stringify({ cmd: "STOP" }));
|
webRTC?.send(JSON.stringify({ cmd: "STOP" }));
|
||||||
setStream(null);
|
setStream(null);
|
||||||
setHasRecorded(true);
|
setHasRecorded(true);
|
||||||
}}
|
}}
|
||||||
|
|||||||
@@ -208,12 +208,6 @@ export default function Recorder(props: RecorderProps) {
|
|||||||
if (!record) return;
|
if (!record) return;
|
||||||
|
|
||||||
return record.on("stopRecording", () => {
|
return record.on("stopRecording", () => {
|
||||||
const link = document.getElementById("download-recording");
|
|
||||||
if (!link) return;
|
|
||||||
|
|
||||||
link.setAttribute("href", record.getRecordedUrl());
|
|
||||||
link.setAttribute("download", "reflector-recording.webm");
|
|
||||||
link.style.visibility = "visible";
|
|
||||||
renderMarkers();
|
renderMarkers();
|
||||||
});
|
});
|
||||||
}, [record]);
|
}, [record]);
|
||||||
@@ -322,16 +316,6 @@ export default function Recorder(props: RecorderProps) {
|
|||||||
<FontAwesomeIcon icon={faDownload} className="h-5 w-auto" />
|
<FontAwesomeIcon icon={faDownload} className="h-5 w-auto" />
|
||||||
</a>
|
</a>
|
||||||
)}
|
)}
|
||||||
|
|
||||||
{!props.transcriptId && (
|
|
||||||
<a
|
|
||||||
id="download-recording"
|
|
||||||
title="Download recording"
|
|
||||||
className="invisible text-center text-blue-400 hover:text-blue-700 ml-2 md:ml:4 p-2 rounded-lg outline-blue-400"
|
|
||||||
>
|
|
||||||
<FontAwesomeIcon icon={faDownload} className="h-5 w-auto" />
|
|
||||||
</a>
|
|
||||||
)}
|
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
{!hasRecorded && (
|
{!hasRecorded && (
|
||||||
|
|||||||
@@ -177,6 +177,16 @@ export const useWebSockets = (transcriptId: string | null): UseWebSockets => {
|
|||||||
case "FINAL_LONG_SUMMARY":
|
case "FINAL_LONG_SUMMARY":
|
||||||
if (message.data) {
|
if (message.data) {
|
||||||
setFinalSummary(message.data);
|
setFinalSummary(message.data);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "FINAL_TITLE":
|
||||||
|
console.debug("FINAL_TITLE event:", message.data);
|
||||||
|
break;
|
||||||
|
|
||||||
|
case "STATUS":
|
||||||
|
console.log("STATUS event:", message.data);
|
||||||
|
if (message.data.value === "ended") {
|
||||||
const newUrl = "/transcripts/" + transcriptId;
|
const newUrl = "/transcripts/" + transcriptId;
|
||||||
router.push(newUrl);
|
router.push(newUrl);
|
||||||
console.debug(
|
console.debug(
|
||||||
@@ -186,13 +196,6 @@ export const useWebSockets = (transcriptId: string | null): UseWebSockets => {
|
|||||||
newUrl,
|
newUrl,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
break;
|
|
||||||
|
|
||||||
case "FINAL_TITLE":
|
|
||||||
console.debug("FINAL_TITLE event:", message.data);
|
|
||||||
break;
|
|
||||||
|
|
||||||
case "STATUS":
|
|
||||||
setStatus(message.data);
|
setStatus(message.data);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user