VoiceMessages: Read file from dynamic path (fixes mac & linux support)

This commit is contained in:
V 2023-07-27 01:56:45 +02:00
parent d18681c197
commit fe5e041db8
No known key found for this signature in database
GPG key ID: A1DC0CFB5615D905
3 changed files with 11 additions and 6 deletions

View file

@ -64,7 +64,7 @@ export default {
resolveRedirect: (url: string) => invoke<string>(IpcEvents.OPEN_IN_APP__RESOLVE_REDIRECT, url),
},
VoiceMessages: {
readRecording: () => invoke<Uint8Array | null>(IpcEvents.VOICE_MESSAGES_READ_RECORDING),
readRecording: (path: string) => invoke<Uint8Array | null>(IpcEvents.VOICE_MESSAGES_READ_RECORDING, path),
}
}
};

View file

@ -20,7 +20,7 @@ import { IpcEvents } from "@utils/IpcEvents";
import { app, ipcMain } from "electron";
import { readFile } from "fs/promises";
import { request } from "https";
import { join } from "path";
import { basename, normalize } from "path";
// #region OpenInApp
// These links don't support CORS, so this has to be native
@ -49,10 +49,15 @@ ipcMain.handle(IpcEvents.OPEN_IN_APP__RESOLVE_REDIRECT, async (_, url: string) =
// #region VoiceMessages
ipcMain.handle(IpcEvents.VOICE_MESSAGES_READ_RECORDING, async () => {
const path = join(app.getPath("userData"), "module_data/discord_voice/recording.ogg");
ipcMain.handle(IpcEvents.VOICE_MESSAGES_READ_RECORDING, async (_, filePath: string) => {
filePath = normalize(filePath);
const filename = basename(filePath);
const discordBaseDirWithTrailingSlash = normalize(app.getPath("userData") + "/");
console.log(filename, discordBaseDirWithTrailingSlash, filePath);
if (filename !== "recording.ogg" || !filePath.startsWith(discordBaseDirWithTrailingSlash)) return null;
try {
const buf = await readFile(path);
const buf = await readFile(filePath);
return new Uint8Array(buf.buffer);
} catch {
return null;

View file

@ -49,7 +49,7 @@ export const VoiceRecorderDesktop: VoiceRecorder = ({ setAudioBlob, onRecordingC
} else {
discordVoice.stopLocalAudioRecording(async (filePath: string) => {
if (filePath) {
const buf = await VencordNative.pluginHelpers.VoiceMessages.readRecording();
const buf = await VencordNative.pluginHelpers.VoiceMessages.readRecording(filePath);
if (buf)
setAudioBlob(new Blob([buf], { type: "audio/ogg; codecs=opus" }));
else