Feat: Settings for learning lang (#641)
* refactor settings * refactor constants * add settings for native/learning language * setup langugage for transcribe * use 2 letter code for echogarden * AI commands support multiple language * update languages constant * fix sentry error * fix context menu * show camdict when only learning English * add en-GB * recording assess support multiple languages * fix ai command * refactor
This commit is contained in:
@@ -178,7 +178,7 @@ class RecordingsHandler {
|
||||
return await recording.upload();
|
||||
}
|
||||
|
||||
private async assess(event: IpcMainEvent, id: string) {
|
||||
private async assess(event: IpcMainEvent, id: string, language?: string) {
|
||||
const recording = await Recording.findOne({
|
||||
where: {
|
||||
id,
|
||||
@@ -193,7 +193,7 @@ class RecordingsHandler {
|
||||
}
|
||||
|
||||
return recording
|
||||
.assess()
|
||||
.assess(language)
|
||||
.then((res) => {
|
||||
return res;
|
||||
})
|
||||
|
||||
@@ -146,7 +146,7 @@ export class Recording extends Model<Recording> {
|
||||
});
|
||||
}
|
||||
|
||||
async assess() {
|
||||
async assess(language?: string) {
|
||||
const assessment = await PronunciationAssessment.findOne({
|
||||
where: { targetId: this.id, targetType: "Recording" },
|
||||
});
|
||||
@@ -171,6 +171,7 @@ export class Recording extends Model<Recording> {
|
||||
const result = await sdk.pronunciationAssessment({
|
||||
filePath: this.filePath,
|
||||
reference: this.referenceText,
|
||||
language,
|
||||
});
|
||||
|
||||
const resultJson = camelcaseKeys(
|
||||
|
||||
@@ -34,7 +34,7 @@ const libraryPath = () => {
|
||||
settings.setSync(
|
||||
"library",
|
||||
process.env.LIBRARY_PATH ||
|
||||
path.join(app.getPath("documents"), LIBRARY_PATH_SUFFIX)
|
||||
path.join(app.getPath("documents"), LIBRARY_PATH_SUFFIX)
|
||||
);
|
||||
} else if (path.parse(_library).base !== LIBRARY_PATH_SUFFIX) {
|
||||
settings.setSync("library", path.join(_library, LIBRARY_PATH_SUFFIX));
|
||||
@@ -92,9 +92,16 @@ const userDataPath = () => {
|
||||
return userData;
|
||||
};
|
||||
|
||||
|
||||
export default {
|
||||
registerIpcHandlers: () => {
|
||||
ipcMain.handle("settings-get", (_event, key) => {
|
||||
return settings.getSync(key);
|
||||
});
|
||||
|
||||
ipcMain.handle("settings-set", (_event, key, value) => {
|
||||
settings.setSync(key, value);
|
||||
});
|
||||
|
||||
ipcMain.handle("settings-get-library", (_event) => {
|
||||
libraryPath();
|
||||
return settings.getSync("library");
|
||||
|
||||
@@ -16,7 +16,7 @@ import whisper from "@main/whisper";
|
||||
import fs from "fs-extra";
|
||||
import "@main/i18n";
|
||||
import log from "@main/logger";
|
||||
import { WEB_API_URL, REPO_URL, WEB_API_URLS } from "@/constants";
|
||||
import { WEB_API_URL, REPO_URL } from "@/constants";
|
||||
import { AudibleProvider, TedProvider, YoutubeProvider } from "@main/providers";
|
||||
import Ffmpeg from "@main/ffmpeg";
|
||||
import { Waveform } from "./waveform";
|
||||
@@ -140,10 +140,6 @@ main.init = () => {
|
||||
} = bounds;
|
||||
const { navigatable = false } = options || {};
|
||||
|
||||
const OAUTH_URL_REGEX = new RegExp(
|
||||
`^("${WEB_API_URLS.map((url) => `${url}/oauth`).join("|")})`
|
||||
);
|
||||
|
||||
logger.debug("view-load", url);
|
||||
const view = new WebContentsView();
|
||||
mainWindow.contentView.addChildView(view);
|
||||
@@ -191,10 +187,6 @@ main.init = () => {
|
||||
});
|
||||
|
||||
logger.debug("will-redirect", detail.url);
|
||||
if (detail.url.match(OAUTH_URL_REGEX)) {
|
||||
logger.debug("prevent redirect", detail.url);
|
||||
detail.preventDefault();
|
||||
}
|
||||
});
|
||||
|
||||
view.webContents.on("will-navigate", (detail) => {
|
||||
@@ -204,7 +196,7 @@ main.init = () => {
|
||||
});
|
||||
|
||||
logger.debug("will-navigate", detail.url);
|
||||
if (!navigatable || detail.url.match(OAUTH_URL_REGEX)) {
|
||||
if (!navigatable) {
|
||||
logger.debug("prevent navigation", detail.url);
|
||||
detail.preventDefault();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user