Fix raw textgen preset import via master
| @@ -148,7 +148,7 @@ class PresetManager { | |||
| 148 | isValid: (data) => PresetManager.isPossiblySystemPromptData(data), | 148 | isValid: (data) => PresetManager.isPossiblySystemPromptData(data), |
| 149 | }, | 149 | }, |
| 150 | 'preset': { | 150 | 'preset': { |
| 151 | name: 'Text Completion Settings', | 151 | name: 'Text Completion Preset', |
| 152 | getData: () => { | 152 | getData: () => { |
| 153 | const manager = getPresetManager('textgenerationwebui'); | 153 | const manager = getPresetManager('textgenerationwebui'); |
| 154 | const name = manager.getSelectedPresetName(); | 154 | const name = manager.getSelectedPresetName(); |
| @@ -185,7 +185,13 @@ class PresetManager { | |||
| 185 | return data && textCompletionProps.every(prop => Object.keys(data).includes(prop)); | 185 | return data && textCompletionProps.every(prop => Object.keys(data).includes(prop)); |
| 186 | } | 186 | } |
| 187 | 187 | ||
| 188 | static async performMasterImport(data) { | 188 | /** |
| 189 | * Imports master settings from JSON data. | ||
| 190 | * @param {object} data Data to import | ||
| 191 | * @param {string} fileName File name | ||
| 192 | * @returns {Promise<void>} | ||
| 193 | */ | ||
| 194 | static async performMasterImport(data, fileName) { | ||
| 189 | if (!data || typeof data !== 'object') { | 195 | if (!data || typeof data !== 'object') { |
| 190 | toastr.error('Invalid data provided for master import'); | 196 | toastr.error('Invalid data provided for master import'); |
| 191 | return; | 197 | return; |
| @@ -213,7 +219,7 @@ class PresetManager { | |||
| 213 | // 4. Text Completion settings | 219 | // 4. Text Completion settings |
| 214 | if (this.isPossiblyTextCompletionData(data)) { | 220 | if (this.isPossiblyTextCompletionData(data)) { |
| 215 | toastr.info('Importing as settings preset...', 'Text Completion settings detected'); | 221 | toastr.info('Importing as settings preset...', 'Text Completion settings detected'); |
| 216 | return await getPresetManager('textgenerationwebui').savePreset(data.name, data); | 222 | return await getPresetManager('textgenerationwebui').savePreset(fileName, data); |
| 217 | } | 223 | } |
| 218 | 224 | ||
| 219 | const validSections = []; | 225 | const validSections = []; |
| @@ -266,6 +272,10 @@ class PresetManager { | |||
| 266 | toastr.success(`Imported ${importedSections.length} settings: ${importedSections.join(', ')}`); | 272 | toastr.success(`Imported ${importedSections.length} settings: ${importedSections.join(', ')}`); |
| 267 | } | 273 | } |
| 268 | 274 | ||
| 275 | /** | ||
| 276 | * Exports master settings to JSON data. | ||
| 277 | * @returns {Promise<string>} JSON data | ||
| 278 | */ | ||
| 269 | static async performMasterExport() { | 279 | static async performMasterExport() { |
| 270 | const sectionNames = Object.entries(this.masterSections).reduce((acc, [key, section]) => { | 280 | const sectionNames = Object.entries(this.masterSections).reduce((acc, [key, section]) => { |
| 271 | acc[key] = section.name; | 281 | acc[key] = section.name; |
| @@ -907,7 +917,8 @@ export async function initPresetManager() { | |||
| 907 | } | 917 | } |
| 908 | 918 | ||
| 909 | const data = await parseJsonFile(file); | 919 | const data = await parseJsonFile(file); |
| 910 | await PresetManager.performMasterImport(data); | 920 | const fileName = file.name.replace('.json', ''); |
| 921 | await PresetManager.performMasterImport(data, fileName); | ||
| 911 | }); | 922 | }); |
| 912 | 923 | ||
| 913 | $('#af_master_export').on('click', async () => { | 924 | $('#af_master_export').on('click', async () => { |