mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Add preset restoration
This commit is contained in:
@ -117,10 +117,11 @@ class PresetManager {
|
||||
}
|
||||
|
||||
async savePresetAs() {
|
||||
const inputValue = this.getSelectedPresetName();
|
||||
const popupText = `
|
||||
<h3>Preset name:</h3>
|
||||
${!this.isNonGenericApi() ? '<h4>Hint: Use a character/group name to bind preset to a specific chat.</h4>' : ''}`;
|
||||
const name = await callPopup(popupText, 'input');
|
||||
const name = await callPopup(popupText, 'input', inputValue);
|
||||
|
||||
if (!name) {
|
||||
console.log('Preset name not provided');
|
||||
@ -314,11 +315,22 @@ class PresetManager {
|
||||
body: JSON.stringify({ name: nameToDelete, apiId: this.apiId }),
|
||||
});
|
||||
|
||||
return response.ok;
|
||||
}
|
||||
|
||||
async getDefaultPreset(name) {
|
||||
const response = await fetch('/api/presets/restore', {
|
||||
method: 'POST',
|
||||
headers: getRequestHeaders(),
|
||||
body: JSON.stringify({ name, apiId: this.apiId }),
|
||||
});
|
||||
|
||||
if (!response.ok) {
|
||||
toastr.warning('Preset was not deleted from server');
|
||||
} else {
|
||||
toastr.success('Preset deleted');
|
||||
toastr.error('Failed to restore default preset');
|
||||
return;
|
||||
}
|
||||
|
||||
return await response.json();
|
||||
}
|
||||
}
|
||||
|
||||
@ -417,7 +429,65 @@ jQuery(async () => {
|
||||
return;
|
||||
}
|
||||
|
||||
await presetManager.deleteCurrentPreset();
|
||||
const result = await presetManager.deleteCurrentPreset();
|
||||
|
||||
if (result) {
|
||||
toastr.success('Preset deleted');
|
||||
} else {
|
||||
toastr.warning('Preset was not deleted from server');
|
||||
}
|
||||
|
||||
saveSettingsDebounced();
|
||||
});
|
||||
|
||||
$(document).on('click', '[data-preset-manager-restore]', async function() {
|
||||
const apiId = $(this).data('preset-manager-restore');
|
||||
const presetManager = getPresetManager(apiId);
|
||||
|
||||
if (!presetManager) {
|
||||
console.warn(`Preset Manager not found for API: ${apiId}`);
|
||||
return;
|
||||
}
|
||||
|
||||
const name = presetManager.getSelectedPresetName();
|
||||
const data = await presetManager.getDefaultPreset(name);
|
||||
|
||||
if (name == 'gui') {
|
||||
toastr.info('Cannot restore GUI preset');
|
||||
return;
|
||||
}
|
||||
|
||||
if (!data) {
|
||||
return;
|
||||
}
|
||||
|
||||
if (data.isDefault) {
|
||||
if (Object.keys(data.preset).length === 0) {
|
||||
toastr.error('Default preset cannot be restored');
|
||||
return;
|
||||
}
|
||||
|
||||
const confirm = await callPopup('<h3>Are you sure?</h3>Resetting a <b>default preset</b> will restore the default settings.', 'confirm');
|
||||
|
||||
if (!confirm) {
|
||||
return;
|
||||
}
|
||||
|
||||
await presetManager.deleteCurrentPreset();
|
||||
await presetManager.savePreset(name, data.preset);
|
||||
const option = presetManager.findPreset(name);
|
||||
presetManager.selectPreset(option);
|
||||
toastr.success('Default preset restored');
|
||||
} else {
|
||||
const confirm = await callPopup('<h3>Are you sure?</h3>Resetting a <b>custom preset</b> will restore to the last saved state.', 'confirm');
|
||||
|
||||
if (!confirm) {
|
||||
return;
|
||||
}
|
||||
|
||||
const option = presetManager.findPreset(name);
|
||||
presetManager.selectPreset(option);
|
||||
toastr.success('Preset restored');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user