summaryrefslogtreecommitdiff
path: root/packages/frontend/src/pages/admin/external-services.vue
diff options
context:
space:
mode:
authorHazelnoot <acomputerdog@gmail.com>2025-05-12 00:23:59 -0400
committerHazelnoot <acomputerdog@gmail.com>2025-05-12 21:48:21 -0400
commite7ee2cc398dd1bf9d04c30ebacff85c113714d15 (patch)
tree36ccce4f4ed2c783a5492ca8c4354bba559fe47d /packages/frontend/src/pages/admin/external-services.vue
parentmerge: Add "is from local bubble instance" role condition (!1011) (diff)
downloadsharkey-e7ee2cc398dd1bf9d04c30ebacff85c113714d15.tar.gz
sharkey-e7ee2cc398dd1bf9d04c30ebacff85c113714d15.tar.bz2
sharkey-e7ee2cc398dd1bf9d04c30ebacff85c113714d15.zip
add configurable timeout for note translations
Diffstat (limited to 'packages/frontend/src/pages/admin/external-services.vue')
-rw-r--r--packages/frontend/src/pages/admin/external-services.vue20
1 files changed, 17 insertions, 3 deletions
diff --git a/packages/frontend/src/pages/admin/external-services.vue b/packages/frontend/src/pages/admin/external-services.vue
index 3cfc51af00..ced74a5df4 100644
--- a/packages/frontend/src/pages/admin/external-services.vue
+++ b/packages/frontend/src/pages/admin/external-services.vue
@@ -8,6 +8,11 @@ SPDX-License-Identifier: AGPL-3.0-only
<div class="_spacer" style="--MI_SPACER-w: 700px; --MI_SPACER-min: 16px; --MI_SPACER-max: 32px;">
<FormSuspense :p="init">
<div class="_gaps_m">
+ <MkInput v-model="translationTimeout" type="number" debounce>
+ <template #label>{{ i18n.ts.translationTimeoutLabel }}</template>
+ <template #caption>{{ i18n.ts.translationTimeoutCaption }}</template>
+ </MkInput>
+
<MkFolder>
<template #label>DeepL Translation</template>
@@ -57,7 +62,7 @@ SPDX-License-Identifier: AGPL-3.0-only
</template>
<script lang="ts" setup>
-import { ref, computed } from 'vue';
+import { ref, computed, watch } from 'vue';
import MkInput from '@/components/MkInput.vue';
import MkButton from '@/components/MkButton.vue';
import MkSwitch from '@/components/MkSwitch.vue';
@@ -69,6 +74,7 @@ import { i18n } from '@/i18n.js';
import { definePage } from '@/page.js';
import MkFolder from '@/components/MkFolder.vue';
+const translationTimeout = ref(0);
const deeplAuthKey = ref<string | null>('');
const deeplIsPro = ref<boolean>(false);
const deeplFreeMode = ref<boolean>(false);
@@ -78,12 +84,20 @@ const libreTranslateKey = ref<string | null>('');
async function init() {
const meta = await misskeyApi('admin/meta');
+ translationTimeout.value = meta.translationTimeout;
deeplAuthKey.value = meta.deeplAuthKey;
deeplIsPro.value = meta.deeplIsPro;
deeplFreeMode.value = meta.deeplFreeMode;
deeplFreeInstance.value = meta.deeplFreeInstance;
libreTranslateURL.value = meta.libreTranslateURL;
libreTranslateKey.value = meta.libreTranslateKey;
+
+ watch(translationTimeout, async newValue => {
+ await os.apiWithDialog('admin/update-meta', {
+ translationTimeout: newValue,
+ });
+ await os.promiseDialog(fetchInstance(true));
+ });
}
function save_deepl() {
@@ -93,7 +107,7 @@ function save_deepl() {
deeplFreeMode: deeplFreeMode.value,
deeplFreeInstance: deeplFreeInstance.value,
}).then(() => {
- fetchInstance(true);
+ os.promiseDialog(fetchInstance(true));
});
}
@@ -102,7 +116,7 @@ function save_libre() {
libreTranslateURL: libreTranslateURL.value,
libreTranslateKey: libreTranslateKey.value,
}).then(() => {
- fetchInstance(true);
+ os.promiseDialog(fetchInstance(true));
});
}