Fix accessToken fetching

This commit is contained in:
an-lee
2024-09-09 05:28:49 +08:00
parent 4309daebb0
commit dcf6153a0e
9 changed files with 47 additions and 31 deletions

View File

@@ -14,7 +14,13 @@ import {
DataType,
Unique,
} from "sequelize-typescript";
import { Recording, Speech, Transcription, Video } from "@main/db/models";
import {
Recording,
Speech,
Transcription,
UserSetting,
Video,
} from "@main/db/models";
import settings from "@main/settings";
import { AudioFormats, VideoFormats } from "@/constants";
import { hashFile } from "@main/utils";
@@ -193,7 +199,7 @@ export class Audio extends Model<Audio> {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger: log.scope("audio/sync"),
});
@@ -257,7 +263,7 @@ export class Audio extends Model<Audio> {
}
@AfterDestroy
static cleanupFile(audio: Audio) {
static async cleanupFile(audio: Audio) {
if (audio.filePath) {
fs.remove(audio.filePath);
}
@@ -276,7 +282,7 @@ export class Audio extends Model<Audio> {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger: log.scope("audio/cleanupFile"),
});

View File

@@ -16,7 +16,7 @@ import mainWindow from "@main/window";
import log from "@main/logger";
import { Client } from "@/api";
import settings from "@main/settings";
import { Segment } from "@main/db/models";
import { Segment, UserSetting } from "@main/db/models";
const logger = log.scope("db/models/note");
@Table({
@@ -61,7 +61,7 @@ export class Note extends Model<Note> {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger,
});
@@ -118,10 +118,10 @@ export class Note extends Model<Note> {
}
@AfterDestroy
static destroyRemote(note: Note) {
static async destroyRemote(note: Note) {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger,
});

View File

@@ -14,7 +14,7 @@ import {
AfterFind,
} from "sequelize-typescript";
import mainWindow from "@main/window";
import { Recording } from "@main/db/models";
import { Recording, UserSetting } from "@main/db/models";
import { Client } from "@/api";
import settings from "@main/settings";
import log from "@main/logger";
@@ -102,7 +102,7 @@ export class PronunciationAssessment extends Model<PronunciationAssessment> {
async sync() {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger: log.scope("api/client"),
});

View File

@@ -15,7 +15,12 @@ import {
HasOne,
} from "sequelize-typescript";
import mainWindow from "@main/window";
import { Audio, PronunciationAssessment, Video } from "@main/db/models";
import {
Audio,
PronunciationAssessment,
UserSetting,
Video,
} from "@main/db/models";
import fs from "fs-extra";
import path from "path";
import settings from "@main/settings";
@@ -144,7 +149,7 @@ export class Recording extends Model<Recording> {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger,
});
@@ -234,11 +239,11 @@ export class Recording extends Model<Recording> {
}
@AfterDestroy
static cleanupFile(recording: Recording) {
static async cleanupFile(recording: Recording) {
fs.remove(recording.filePath);
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger: log.scope("recording/cleanupFile"),
});
webApi.deleteRecording(recording.id);

View File

@@ -13,7 +13,7 @@ import {
AllowNull,
AfterFind,
} from "sequelize-typescript";
import { Audio, Transcription, Video } from "@main/db/models";
import { Audio, Transcription, UserSetting, Video } from "@main/db/models";
import mainWindow from "@main/window";
import log from "@main/logger";
import { Client } from "@/api";
@@ -110,7 +110,7 @@ export class Segment extends Model<Segment> {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger,
});
return webApi.syncSegment(this.toJSON()).then(() => {

View File

@@ -21,7 +21,7 @@ import settings from "@main/settings";
import OpenAI, { type ClientOptions } from "openai";
import { t } from "i18next";
import { hashFile } from "@main/utils";
import { Audio, Message } from "@main/db/models";
import { Audio, Message, UserSetting } from "@main/db/models";
import log from "@main/logger";
import proxyAgent from "@main/proxy-agent";
@@ -180,7 +180,7 @@ export class Speech extends Model<Speech> {
let openaiConfig: ClientOptions = {};
if (engine === "enjoyai") {
openaiConfig = {
apiKey: settings.getSync("user.accessToken") as string,
apiKey: (await UserSetting.accessToken()) as string,
baseURL: `${settings.apiUrl()}/api/ai`,
};
} else if (engine === "openai") {

View File

@@ -11,7 +11,7 @@ import {
DataType,
Unique,
} from "sequelize-typescript";
import { Audio, Video } from "@main/db/models";
import { Audio, UserSetting, Video } from "@main/db/models";
import mainWindow from "@main/window";
import log from "@main/logger";
import { Client } from "@/api";
@@ -81,7 +81,7 @@ export class Transcription extends Model<Transcription> {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger,
});
return webApi.syncTranscription(this.toJSON()).then(() => {

View File

@@ -33,9 +33,7 @@ export class UserSetting extends Model<UserSetting> {
@Column(DataType.TEXT)
value: string;
static async get(
key: UserSettingKeyEnum
): Promise<string | Object | number | null> {
static async get(key: UserSettingKeyEnum): Promise<any> {
const setting = await UserSetting.findOne({ where: { key } });
if (!setting) return null;
@@ -46,10 +44,7 @@ export class UserSetting extends Model<UserSetting> {
}
}
static async set(
key: UserSettingKeyEnum,
value: object | string
): Promise<void> {
static async set(key: UserSettingKeyEnum, value: any): Promise<void> {
const setting = await UserSetting.findOne({ where: { key } });
if (typeof value === "object") {
@@ -68,6 +63,10 @@ export class UserSetting extends Model<UserSetting> {
}
}
static async accessToken(): Promise<string | null> {
return (await UserSetting.get(UserSettingKeyEnum.PROFILE))?.accessToken;
}
static async clear(): Promise<void> {
await UserSetting.destroy({ where: {} });
}

View File

@@ -14,7 +14,13 @@ import {
DataType,
Unique,
} from "sequelize-typescript";
import { Audio, Recording, Speech, Transcription } from "@main/db/models";
import {
Audio,
Recording,
Speech,
Transcription,
UserSetting,
} from "@main/db/models";
import settings from "@main/settings";
import { AudioFormats, VideoFormats, WEB_API_URL } from "@/constants";
import { hashFile } from "@main/utils";
@@ -214,7 +220,7 @@ export class Video extends Model<Video> {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger,
});
@@ -279,7 +285,7 @@ export class Video extends Model<Video> {
}
@AfterDestroy
static cleanupFile(video: Video) {
static async cleanupFile(video: Video) {
if (video.filePath) {
fs.remove(video.filePath);
}
@@ -292,7 +298,7 @@ export class Video extends Model<Video> {
const webApi = new Client({
baseUrl: settings.apiUrl(),
accessToken: settings.getSync("user.accessToken") as string,
accessToken: (await UserSetting.accessToken()) as string,
logger: log.scope("video/cleanupFile"),
});