mirror of https://github.com/usememos/memos.git
Apply suggestion made by Copilot
This commit is contained in:
parent
02b36d5bae
commit
1cd79734b8
|
|
@ -27,8 +27,8 @@ const AudioPlayer = ({ src, className = "" }: Props) => {
|
||||||
|
|
||||||
const handleTimeUpdate = () => {
|
const handleTimeUpdate = () => {
|
||||||
setCurrentTime(audio.currentTime);
|
setCurrentTime(audio.currentTime);
|
||||||
if (duration === 0 && audio.duration && !isNaN(audio.duration) && isFinite(audio.duration)) {
|
if (audio.duration && !isNaN(audio.duration) && isFinite(audio.duration)) {
|
||||||
setDuration(audio.duration);
|
setDuration((prev) => (prev === 0 ? audio.duration : prev));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -59,16 +59,22 @@ const AudioPlayer = ({ src, className = "" }: Props) => {
|
||||||
};
|
};
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const togglePlayPause = () => {
|
const togglePlayPause = async () => {
|
||||||
const audio = audioRef.current;
|
const audio = audioRef.current;
|
||||||
if (!audio) return;
|
if (!audio) return;
|
||||||
|
|
||||||
if (isPlaying) {
|
if (isPlaying) {
|
||||||
audio.pause();
|
audio.pause();
|
||||||
|
setIsPlaying(false);
|
||||||
} else {
|
} else {
|
||||||
audio.play();
|
try {
|
||||||
|
await audio.play();
|
||||||
|
setIsPlaying(true);
|
||||||
|
} catch (error) {
|
||||||
|
console.error("Failed to play audio:", error);
|
||||||
|
setIsPlaying(false);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
setIsPlaying(!isPlaying);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleSeek = (e: React.ChangeEvent<HTMLInputElement>) => {
|
const handleSeek = (e: React.ChangeEvent<HTMLInputElement>) => {
|
||||||
|
|
@ -112,7 +118,7 @@ const AudioPlayer = ({ src, className = "" }: Props) => {
|
||||||
value={currentTime}
|
value={currentTime}
|
||||||
onChange={handleSeek}
|
onChange={handleSeek}
|
||||||
disabled={isLoading || !duration}
|
disabled={isLoading || !duration}
|
||||||
className="flex-1 h-1 bg-muted hover:bg-background/50 hover:bg-background/50 rounded-lg appearance-none cursor-pointer disabled:opacity-50 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3 [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-primary [&::-moz-range-thumb]:w-3 [&::-moz-range-thumb]:h-3 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-primary [&::-moz-range-thumb]:border-0"
|
className="flex-1 h-1 bg-muted hover:bg-background/50 rounded-lg appearance-none cursor-pointer disabled:opacity-50 [&::-webkit-slider-thumb]:appearance-none [&::-webkit-slider-thumb]:w-3 [&::-webkit-slider-thumb]:h-3 [&::-webkit-slider-thumb]:rounded-full [&::-webkit-slider-thumb]:bg-primary [&::-moz-range-thumb]:w-3 [&::-moz-range-thumb]:h-3 [&::-moz-range-thumb]:rounded-full [&::-moz-range-thumb]:bg-primary [&::-moz-range-thumb]:border-0"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
||||||
|
|
@ -146,7 +146,7 @@ const InsertMenu = observer((props: Props) => {
|
||||||
<div className="flex flex-row items-center gap-2 mr-2">
|
<div className="flex flex-row items-center gap-2 mr-2">
|
||||||
<div className="flex flex-row items-center px-2 py-1 rounded-md bg-red-50 text-red-600 border border-red-200">
|
<div className="flex flex-row items-center px-2 py-1 rounded-md bg-red-50 text-red-600 border border-red-200">
|
||||||
<div className={`w-2 h-2 rounded-full bg-red-500 mr-2 ${!audioRecorder.isPaused ? "animate-pulse" : ""}`} />
|
<div className={`w-2 h-2 rounded-full bg-red-500 mr-2 ${!audioRecorder.isPaused ? "animate-pulse" : ""}`} />
|
||||||
<span className="font-mono text-sm">{new Date(audioRecorder.recordingTime * 1000).toISOString().substr(14, 5)}</span>
|
<span className="font-mono text-sm">{new Date(audioRecorder.recordingTime * 1000).toISOString().substring(14, 19)}</span>
|
||||||
</div>
|
</div>
|
||||||
<Button variant="outline" size="icon" onClick={audioRecorder.togglePause} className="shrink-0">
|
<Button variant="outline" size="icon" onClick={audioRecorder.togglePause} className="shrink-0">
|
||||||
{audioRecorder.isPaused ? <MicIcon className="w-4 h-4" /> : <span className="font-bold text-xs">||</span>}
|
{audioRecorder.isPaused ? <MicIcon className="w-4 h-4" /> : <span className="font-bold text-xs">||</span>}
|
||||||
|
|
@ -180,7 +180,7 @@ const InsertMenu = observer((props: Props) => {
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
<DropdownMenuItem onClick={audioRecorder.startRecording}>
|
<DropdownMenuItem onClick={audioRecorder.startRecording}>
|
||||||
<MicIcon className="w-4 h-4" />
|
<MicIcon className="w-4 h-4" />
|
||||||
Record Audio
|
{t("tooltip.record-audio")}
|
||||||
</DropdownMenuItem>
|
</DropdownMenuItem>
|
||||||
{/* View submenu with Focus Mode */}
|
{/* View submenu with Focus Mode */}
|
||||||
<DropdownMenuSub>
|
<DropdownMenuSub>
|
||||||
|
|
|
||||||
|
|
@ -477,6 +477,7 @@
|
||||||
"select-location": "Location",
|
"select-location": "Location",
|
||||||
"select-visibility": "Visibility",
|
"select-visibility": "Visibility",
|
||||||
"tags": "Tags",
|
"tags": "Tags",
|
||||||
"upload-attachment": "Upload Attachment(s)"
|
"upload-attachment": "Upload Attachment(s)",
|
||||||
|
"record-audio": "Record Audio"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Loading…
Reference in New Issue