Extract assignCharacterAsAssistant func
| @@ -335,6 +335,37 @@ export async function openPermanentAssistantCard() { | |||
| 335 | await selectCharacterById(characterId); | 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 | export function initWelcomeScreen() { | 369 | export function initWelcomeScreen() { |
| 339 | const events = [event_types.CHAT_CHANGED, event_types.APP_READY]; | 370 | const events = [event_types.CHAT_CHANGED, event_types.APP_READY]; |
| 340 | for (const event of events) { | 371 | for (const event of events) { |
| @@ -345,30 +376,7 @@ export function initWelcomeScreen() { | |||
| 345 | if (target !== 'set_as_assistant') { | 376 | if (target !== 'set_as_assistant') { |
| 346 | return; | 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 | eventSource.on(event_types.CHARACTER_RENAMED, (oldAvatar, newAvatar) => { | 382 | eventSource.on(event_types.CHARACTER_RENAMED, (oldAvatar, newAvatar) => { |