Add import confirmation

3809d3d4ac5050d80802adb74b78515f8209b1a9

Cohee <18619528+Cohee1207@users.noreply.github.com>

1 files changed, +31 -9Ignore whitespace
public/scripts/openai.js+31 -9
@@ -204,6 +204,15 @@ const custom_prompt_post_processing_types = {
204204 CLAUDE: 'claude',
205205};
206206
207+const sensitiveFields = [
208+ 'reverse_proxy',
209+ 'proxy_password',
210+ 'custom_url',
211+ 'custom_include_body',
212+ 'custom_exclude_body',
213+ 'custom_include_headers',
214+];
215+
207216function getPrefixMap() {
208217 return selected_group ? {
209218 assistant: '',
@@ -3515,6 +3524,27 @@ async function onPresetImportFileChange(e) {
35153524 return;
35163525 }
35173526
3527+ const fields = sensitiveFields.filter(field => presetBody[field]).map(field => `<b>${field}</b>`);
3528+ const shouldConfirm = fields.length > 0;
3529+
3530+ if (shouldConfirm) {
3531+ const textHeader = 'The imported preset contains proxy and/or custom endpoint settings.';
3532+ const textMessage = fields.join('<br>');
3533+ const cancelButton = { text: 'Cancel import', result: POPUP_RESULT.CANCELLED, appendAtEnd: true, action: () => popup.complete(POPUP_RESULT.CANCELLED) };
3534+ const popupOptions = { customButtons: [cancelButton], okButton: 'Remove them', cancelButton: 'Import as-is' };
3535+ const popup = new Popup(PopupUtils.BuildTextWithHeader(textHeader, textMessage), POPUP_TYPE.CONFIRM, '', popupOptions);
3536+ const popupResult = await popup.show();
3537+
3538+ if (popupResult === POPUP_RESULT.CANCELLED) {
3539+ console.log('Import cancelled by user');
3540+ return;
3541+ }
3542+
3543+ if (popupResult === POPUP_RESULT.AFFIRMATIVE) {
3544+ sensitiveFields.forEach(field => delete presetBody[field]);
3545+ }
3546+ }
3547+
35183548 if (name in openai_setting_names) {
35193549 const confirm = await callPopup('Preset name already exists. Overwrite?', 'confirm');
35203550
@@ -3560,19 +3590,11 @@ async function onExportPresetClick() {
35603590 }
35613591
35623592 const preset = structuredClone(openai_settings[openai_setting_names[oai_settings.preset_settings_openai]]);
3563- const sensitiveFields = [
3564- 'reverse_proxy',
3565- 'proxy_password',
3566- 'custom_url',
3567- 'custom_include_body',
3568- 'custom_exclude_body',
3569- 'custom_include_headers',
3570- ];
35713593
35723594 const fieldValues = sensitiveFields.filter(field => preset[field]).map(field => `<b>${field}</b>: <code>${preset[field]}</code>`);
35733595 const shouldConfirm = fieldValues.length > 0;
35743596 const textHeader = 'Your preset contains proxy and/or custom endpoint settings.';
35753597 const textMessage = `<div>Do you want to remove these fields before exporting?</div><br>${DOMPurify.sanitize(fieldValues.join('<br>'))}`;
35763598 const cancelButton = { text: 'Cancel', result: POPUP_RESULT.CANCELLED, appendAtEnd: true, action: () => popup.complete(POPUP_RESULT.CANCELLED) };
35773599 const popupOptions = { customButtons: [cancelButton] };
35783600 const popup = new Popup(PopupUtils.BuildTextWithHeader(textHeader, textMessage), POPUP_TYPE.CONFIRM, '', popupOptions);