Set api-url with connection-manager
| @@ -14,6 +14,7 @@ const DEFAULT_SETTINGS = { | |||
| 14 | const COMMON_COMMANDS = [ | 14 | const COMMON_COMMANDS = [ |
| 15 | 'api', | 15 | 'api', |
| 16 | 'preset', | 16 | 'preset', |
| 17 | 'api-url', | ||
| 17 | 'model', | 18 | 'model', |
| 18 | ]; | 19 | ]; |
| 19 | 20 | ||
| @@ -32,6 +33,7 @@ const TC_COMMANDS = [ | |||
| 32 | 33 | ||
| 33 | const FANCY_NAMES = { | 34 | const FANCY_NAMES = { |
| 34 | 'api': 'API', | 35 | 'api': 'API', |
| 36 | 'api-url': 'Server URL', | ||
| 35 | 'preset': 'Settings Preset', | 37 | 'preset': 'Settings Preset', |
| 36 | 'model': 'Model', | 38 | 'model': 'Model', |
| 37 | 'proxy': 'Proxy Preset', | 39 | 'proxy': 'Proxy Preset', |
| @@ -57,6 +59,8 @@ const FANCY_NAMES = { | |||
| 57 | */ | 59 | */ |
| 58 | 60 | ||
| 59 | const escapeArgument = (a) => a.replace(/"/g, '\\"').replace(/\|/g, '\\|'); | 61 | const escapeArgument = (a) => a.replace(/"/g, '\\"').replace(/\|/g, '\\|'); |
| 62 | const collapseSpaces = (s) => s.replace(/\s+/g, ' ').trim(); | ||
| 63 | const makeUnique = (s, f, i) => { if (!f(s)) { return s; } else { while (f(`${s} (${i})`)) { i++; } return `${s} (${i})`; } }; | ||
| 60 | 64 | ||
| 61 | /** | 65 | /** |
| 62 | * Reads the connection profile from the commands. | 66 | * Reads the connection profile from the commands. |
| @@ -107,7 +111,8 @@ async function createConnectionProfile() { | |||
| 107 | 111 | ||
| 108 | const profileForDisplay = makeFancyProfile(profile); | 112 | const profileForDisplay = makeFancyProfile(profile); |
| 109 | const template = await renderExtensionTemplateAsync(MODULE_NAME, 'profile', { profile: profileForDisplay }); | 113 | const template = await renderExtensionTemplateAsync(MODULE_NAME, 'profile', { profile: profileForDisplay }); |
| 110 | const suggestedName = `${profile.api} ${profile.model} - ${profile.preset}`; | 114 | const checkName = (n) => extension_settings.connectionManager.profiles.some(p => p.name === n); |
| 115 | const suggestedName = makeUnique(collapseSpaces(`${profile.api ?? ''} ${profile.model ?? ''} - ${profile.preset ?? ''}`), checkName, 1); | ||
| 111 | const name = await callGenericPopup(template, POPUP_TYPE.INPUT, suggestedName, { rows: 2 }); | 116 | const name = await callGenericPopup(template, POPUP_TYPE.INPUT, suggestedName, { rows: 2 }); |
| 112 | 117 | ||
| 113 | if (!name) { | 118 | if (!name) { |