hermes-web-cli/wwwroot/settings.js

121 lines
4.3 KiB
JavaScript

// Register functions for settings management
bricks.RF.register('save_general_settings', async function(params) {
try {
const formData = new FormData();
formData.append('default-model', params.default_model);
formData.append('session-timeout', params.session_timeout);
formData.append('auto-save', params.auto_save);
const response = await fetch('/hermes-web-cli/settings/save/general/', {
method: 'POST',
body: formData
});
const result = await response.json();
if (result.success) {
bricks.showMessage('General settings saved successfully', 'success');
} else {
bricks.showMessage(result.error || 'Failed to save settings', 'error');
}
} catch (error) {
bricks.showMessage('Network error: ' + error.message, 'error');
}
});
bricks.RF.register('save_security_settings', async function(params) {
try {
const formData = new FormData();
formData.append('require-auth', params.require_auth);
formData.append('encrypt-storage', params.encrypt_storage);
const response = await fetch('/hermes-web-cli/settings/save/security/', {
method: 'POST',
body: formData
});
const result = await response.json();
if (result.success) {
bricks.showMessage('Security settings saved successfully', 'success');
} else {
bricks.showMessage(result.error || 'Failed to save settings', 'error');
}
} catch (error) {
bricks.showMessage('Network error: ' + error.message, 'error');
}
});
bricks.RF.register('save_appearance_settings', async function(params) {
try {
const formData = new FormData();
formData.append('theme-select', params.theme);
const response = await fetch('/hermes-web-cli/settings/save/appearance/', {
method: 'POST',
body: formData
});
const result = await response.json();
if (result.success) {
bricks.showMessage('Appearance settings saved successfully', 'success');
// Apply theme change
document.body.className = params.theme;
} else {
bricks.showMessage(result.error || 'Failed to save settings', 'error');
}
} catch (error) {
bricks.showMessage('Network error: ' + error.message, 'error');
}
});
// Register functions for models management
bricks.RF.register('add_model', async function(params) {
// Navigate to add model page
const mainContent = bricks.getWidget('app.main-content');
if (mainContent) {
mainContent.loadURL(bricks.entire_url('add_model.ui'));
}
});
bricks.RF.register('update_model', async function(params) {
try {
const formData = new FormData();
formData.append('model_id', params.model_id);
formData.append('model_name', params.model_name);
formData.append('model_provider', params.model_provider);
const response = await fetch('/hermes-web-cli/models/update/', {
method: 'POST',
body: formData
});
const result = await response.json();
if (result.success) {
bricks.showMessage('Model updated successfully', 'success');
// Refresh the models list if needed
} else {
bricks.showMessage(result.error || 'Failed to update model', 'error');
}
} catch (error) {
bricks.showMessage('Network error: ' + error.message, 'error');
}
});
bricks.RF.register('remove_model', async function(params) {
try {
const response = await fetch('/hermes-web-cli/models/remove/?id=' + params.model_id);
const result = await response.json();
if (result.success) {
bricks.showMessage('Model removed successfully', 'success');
// Refresh the models list
const modelsList = bricks.getWidget('models-list');
if (modelsList) {
modelsList.reload();
}
} else {
bricks.showMessage(result.error || 'Failed to remove model', 'error');
}
} catch (error) {
bricks.showMessage('Network error: ' + error.message, 'error');
}
});