Extract assignCharacterAsAssistant func
| @@ -335,6 +335,37 @@ export async function openPermanentAssistantCard() { | ||
| 335 | 335 | await selectCharacterById(characterId); |
| 336 | 336 | } |
| 337 | 337 | |
| 338 | +/** | |
| 339 | + * Assigns a character as the assistant. | |
| 340 | + * @param {string?} characterId Character ID | |
| 341 | + */ | |
| 342 | +export function assignCharacterAsAssistant(characterId) { | |
| 343 | + if (characterId === undefined) { | |
| 344 | + return; | |
| 345 | + } | |
| 346 | + /** @type {import('./char-data.js').v1CharData} */ | |
| 347 | + const character = characters[characterId]; | |
| 348 | + if (!character) { | |
| 349 | + return; | |
| 350 | + } | |
| 351 | + | |
| 352 | + const currentAssistantAvatar = getPermanentAssistantAvatar(); | |
| 353 | + if (currentAssistantAvatar === character.avatar) { | |
| 354 | + if (character.avatar === defaultAssistantAvatar) { | |
| 355 | + toastr.info(t`${character.name} is a system assistant. Choose another character.`); | |
| 356 | + return; | |
| 357 | + } | |
| 358 | + | |
| 359 | + toastr.info(t`${character.name} is no longer your assistant.`); | |
| 360 | + accountStorage.removeItem(assistantAvatarKey); | |
| 361 | + return; | |
| 362 | + } | |
| 363 | + | |
| 364 | + accountStorage.setItem(assistantAvatarKey, character.avatar); | |
| 365 | + printCharactersDebounced(); | |
| 366 | + toastr.success(t`Set ${character.name} as your assistant.`); | |
| 367 | +} | |
| 368 | + | |
| 338 | 369 | export function initWelcomeScreen() { |
| 339 | 370 | const events = [event_types.CHAT_CHANGED, event_types.APP_READY]; |
| 340 | 371 | for (const event of events) { |
| @@ -345,30 +376,7 @@ export function initWelcomeScreen() { | ||
| 345 | 376 | if (target !== 'set_as_assistant') { |
| 346 | 377 | return; |
| 347 | 378 | } |
| 348 | - if (this_chid === undefined) { | |
| 379 | + assignCharacterAsAssistant(this_chid); | |
| 349 | - return; | |
| 350 | - } | |
| 351 | - /** @type {import('./char-data.js').v1CharData} */ | |
| 352 | - const character = characters[this_chid]; | |
| 353 | - if (!character) { | |
| 354 | - return; | |
| 355 | - } | |
| 356 | - | |
| 357 | - const currentAssistantAvatar = getPermanentAssistantAvatar(); | |
| 358 | - if (currentAssistantAvatar === character.avatar) { | |
| 359 | - if (character.avatar === defaultAssistantAvatar) { | |
| 360 | - toastr.info(t`${character.name} is a system assistant. Choose another character.`); | |
| 361 | - return; | |
| 362 | - } | |
| 363 | - | |
| 364 | - toastr.info(t`${character.name} is no longer your assistant.`); | |
| 365 | - accountStorage.removeItem(assistantAvatarKey); | |
| 366 | - return; | |
| 367 | - } | |
| 368 | - | |
| 369 | - accountStorage.setItem(assistantAvatarKey, character.avatar); | |
| 370 | - printCharactersDebounced(); | |
| 371 | - toastr.success(t`Set ${character.name} as your assistant.`); | |
| 372 | 380 | }); |
| 373 | 381 | |
| 374 | 382 | eventSource.on(event_types.CHARACTER_RENAMED, (oldAvatar, newAvatar) => { |