Browse Source

feat: save state in db

Signed-off-by: Jana Peper <jana.peper@nextcloud.com>
pull/49727/head
Jana Peper 11 months ago
committed by janepie
parent
commit
32b57e7b41
  1. 2
      apps/settings/lib/Controller/AISettingsController.php
  2. 4
      apps/settings/lib/Settings/Admin/ArtificialIntelligence.php
  3. 8
      apps/settings/src/components/AdminAI.vue

2
apps/settings/lib/Controller/AISettingsController.php

@ -38,7 +38,7 @@ class AISettingsController extends Controller {
*/
#[AuthorizedAdminSetting(settings: ArtificialIntelligence::class)]
public function update($settings) {
$keys = ['ai.stt_provider', 'ai.textprocessing_provider_preferences', 'ai.taskprocessing_provider_preferences', 'ai.translation_provider_preferences', 'ai.text2image_provider'];
$keys = ['ai.stt_provider', 'ai.textprocessing_provider_preferences', 'ai.taskprocessing_provider_preferences','ai.taskprocessing_type_preferences', 'ai.translation_provider_preferences', 'ai.text2image_provider'];
foreach ($keys as $key) {
if (!isset($settings[$key])) {
continue;

4
apps/settings/lib/Settings/Admin/ArtificialIntelligence.php

@ -113,12 +113,14 @@ class ArtificialIntelligence implements IDelegatedSettings {
}
}
$taskProcessingTaskTypes = [];
$taskProcessingTypeSettings = [];
foreach ($this->taskProcessingManager->getAvailableTaskTypes() as $taskTypeId => $taskTypeDefinition) {
$taskProcessingTaskTypes[] = [
'id' => $taskTypeId,
'name' => $taskTypeDefinition['name'],
'description' => $taskTypeDefinition['description'],
];
$taskProcessingTypeSettings[$taskTypeId] = true;
}
$this->initialState->provideInitialState('ai-stt-providers', $sttProviders);
@ -135,6 +137,7 @@ class ArtificialIntelligence implements IDelegatedSettings {
'ai.textprocessing_provider_preferences' => $textProcessingSettings,
'ai.text2image_provider' => count($text2imageProviders) > 0 ? $text2imageProviders[0]['id'] : null,
'ai.taskprocessing_provider_preferences' => $taskProcessingSettings,
'ai.taskprocessing_type_preferences' => $taskProcessingTypeSettings,
];
foreach ($settings as $key => $defaultValue) {
$value = $defaultValue;
@ -143,6 +146,7 @@ class ArtificialIntelligence implements IDelegatedSettings {
$value = json_decode($json, true);
switch ($key) {
case 'ai.taskprocessing_provider_preferences':
case 'ai.taskprocessing_type_preferences':
case 'ai.textprocessing_provider_preferences':
// fill $value with $defaultValue values
$value = array_merge($defaultValue, $value);

8
apps/settings/src/components/AdminAI.vue

@ -11,13 +11,14 @@
<h3>{{ t('settings', 'Task:') }} {{ type.name }}</h3>
<p>{{ type.description }}</p>
<NcCheckboxRadioSwitch type="switch"
v-model="taskEnabled" >
v-model="settings['ai.taskprocessing_type_preferences'][type.id]"
@update:modelValue="saveChanges" >
{{ t('settings', 'Enable') }}
</NcCheckboxRadioSwitch>
<NcSelect v-model="settings['ai.taskprocessing_provider_preferences'][type.id]"
class="provider-select"
:clearable="false"
:disabled="!taskEnabled"
:disabled="!type.enabled"
:options="taskProcessingProviders.filter(p => p.taskType === type.id).map(p => p.id)"
@input="saveChanges">
<template #option="{label}">
@ -146,7 +147,6 @@ export default {
taskProcessingProviders: loadState('settings', 'ai-task-processing-providers'),
taskProcessingTaskTypes: loadState('settings', 'ai-task-processing-task-types'),
settings: loadState('settings', 'ai-settings'),
taskEnabled: true,
}
},
computed: {
@ -189,6 +189,7 @@ export default {
this.saveChanges()
},
async saveChanges() {
console.warn(this.settings)
this.loading = true
await nextTick()
const data = { settings: this.settings }
@ -198,6 +199,7 @@ export default {
console.error('could not save changes', err)
}
this.loading = false
console.warn('done')
},
getTextProcessingTaskType(type) {
if (!Array.isArray(this.textProcessingTaskTypes)) {

Loading…
Cancel
Save