fix: support DeepL pro account

Fix #7648
This commit is contained in:
syuilo 2021-08-24 13:19:21 +09:00
parent 9d3448c880
commit d64e25e449
7 changed files with 40 additions and 1 deletions

View file

@ -13,6 +13,8 @@
- クライアントのデザインの調整 - クライアントのデザインの調整
### Bugfixes ### Bugfixes
- 翻訳でDeepLのProアカウントに対応していない問題を修正
- インスタンス設定でDeepLのAuth Keyが空で表示される問題を修正
- セキュリティの向上 - セキュリティの向上
## 12.89.0 (2021/08/21) ## 12.89.0 (2021/08/21)

View file

@ -0,0 +1,14 @@
import {MigrationInterface, QueryRunner} from "typeorm";
export class deeplIntegration21629778475000 implements MigrationInterface {
name = 'deeplIntegration21629778475000'
public async up(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" ADD "deeplIsPro" boolean NOT NULL DEFAULT false`);
}
public async down(queryRunner: QueryRunner): Promise<void> {
await queryRunner.query(`ALTER TABLE "meta" DROP COLUMN "deeplIsPro"`);
}
}

View file

@ -12,6 +12,9 @@
<template #prefix><i class="fas fa-key"></i></template> <template #prefix><i class="fas fa-key"></i></template>
DeepL Auth Key DeepL Auth Key
</FormInput> </FormInput>
<FormSwitch v-model:value="deeplIsPro">
Pro account
</FormSwitch>
</FormGroup> </FormGroup>
<FormButton @click="save" primary><i class="fas fa-save"></i> {{ $ts.save }}</FormButton> <FormButton @click="save" primary><i class="fas fa-save"></i> {{ $ts.save }}</FormButton>
</FormSuspense> </FormSuspense>
@ -50,6 +53,7 @@ export default defineComponent({
}, },
summalyProxy: '', summalyProxy: '',
deeplAuthKey: '', deeplAuthKey: '',
deeplIsPro: false,
} }
}, },
@ -62,11 +66,13 @@ export default defineComponent({
const meta = await os.api('meta', { detail: true }); const meta = await os.api('meta', { detail: true });
this.summalyProxy = meta.summalyProxy; this.summalyProxy = meta.summalyProxy;
this.deeplAuthKey = meta.deeplAuthKey; this.deeplAuthKey = meta.deeplAuthKey;
this.deeplIsPro = meta.deeplIsPro;
}, },
save() { save() {
os.apiWithDialog('admin/update-meta', { os.apiWithDialog('admin/update-meta', {
summalyProxy: this.summalyProxy, summalyProxy: this.summalyProxy,
deeplAuthKey: this.deeplAuthKey, deeplAuthKey: this.deeplAuthKey,
deeplIsPro: this.deeplIsPro,
}).then(() => { }).then(() => {
fetchInstance(); fetchInstance();
}); });

View file

@ -319,6 +319,11 @@ export class Meta {
}) })
public deeplAuthKey: string | null; public deeplAuthKey: string | null;
@Column('boolean', {
default: false,
})
public deeplIsPro: boolean;
@Column('varchar', { @Column('varchar', {
length: 512, length: 512,
nullable: true nullable: true

View file

@ -149,6 +149,10 @@ export const meta = {
validator: $.optional.nullable.str, validator: $.optional.nullable.str,
}, },
deeplIsPro: {
validator: $.optional.bool,
},
enableTwitterIntegration: { enableTwitterIntegration: {
validator: $.optional.bool, validator: $.optional.bool,
}, },
@ -574,6 +578,10 @@ export default define(meta, async (ps, me) => {
} }
} }
if (ps.deeplIsPro !== undefined) {
set.deeplIsPro = ps.deeplIsPro;
}
await getConnection().transaction(async transactionalEntityManager => { await getConnection().transaction(async transactionalEntityManager => {
const meta = await transactionalEntityManager.findOne(Meta, { const meta = await transactionalEntityManager.findOne(Meta, {
order: { order: {

View file

@ -583,6 +583,8 @@ export default define(meta, async (ps, me) => {
response.objectStorageUseProxy = instance.objectStorageUseProxy; response.objectStorageUseProxy = instance.objectStorageUseProxy;
response.objectStorageSetPublicRead = instance.objectStorageSetPublicRead; response.objectStorageSetPublicRead = instance.objectStorageSetPublicRead;
response.objectStorageS3ForcePathStyle = instance.objectStorageS3ForcePathStyle; response.objectStorageS3ForcePathStyle = instance.objectStorageS3ForcePathStyle;
response.deeplAuthKey = instance.deeplAuthKey;
response.deeplIsPro = instance.deeplIsPro;
} }
} }

View file

@ -61,7 +61,9 @@ export default define(meta, async (ps, user) => {
params.append('text', note.text); params.append('text', note.text);
params.append('target_lang', targetLang); params.append('target_lang', targetLang);
const res = await fetch('https://api-free.deepl.com/v2/translate', { const endpoint = instance.deeplIsPro ? 'https://api.deepl.com/v2/translate' : 'https://api-free.deepl.com/v2/translate';
const res = await fetch(endpoint, {
method: 'POST', method: 'POST',
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded', 'Content-Type': 'application/x-www-form-urlencoded',