mirror of
https://github.com/SillyTavern/SillyTavern.git
synced 2025-06-05 21:59:27 +02:00
Force persona creation on avatar uploads. Don't show cropper for images if never resize is enabled.
This commit is contained in:
@@ -1,7 +1,3 @@
|
||||
/**
|
||||
* This is a placeholder file for all the Persona Management code. Will be refactored into a separate file soon.
|
||||
*/
|
||||
|
||||
import { callPopup, characters, chat_metadata, default_avatar, eventSource, event_types, getRequestHeaders, getThumbnailUrl, getUserAvatars, name1, saveMetadata, saveSettingsDebounced, setUserName, this_chid, user_avatar } from "../script.js";
|
||||
import { persona_description_positions, power_user } from "./power-user.js";
|
||||
import { getTokenCount } from "./tokenizers.js";
|
||||
@@ -38,6 +34,28 @@ async function uploadUserAvatar(url, name) {
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Prompts the user to create a persona for the uploaded avatar.
|
||||
* @param {string} avatarId User avatar id
|
||||
* @returns {Promise} Promise that resolves when the persona is set
|
||||
*/
|
||||
export async function createPersona(avatarId) {
|
||||
const personaName = await callPopup('<h3>Enter a name for this persona:</h3>Cancel if you\'re just uploading an avatar.', 'input', '');
|
||||
|
||||
if (!personaName) {
|
||||
console.debug('User cancelled creating a persona');
|
||||
return;
|
||||
}
|
||||
|
||||
await delay(500);
|
||||
const personaDescription = await callPopup('<h3>Enter a description for this persona:</h3>You can always add or change it later.', 'input', '', { rows: 4 });
|
||||
|
||||
initPersona(avatarId, personaName, personaDescription);
|
||||
if (power_user.persona_show_notifications) {
|
||||
toastr.success(`You can now pick ${personaName} as a persona in the Persona Management menu.`, 'Persona Created');
|
||||
}
|
||||
}
|
||||
|
||||
async function createDummyPersona() {
|
||||
const personaName = await callPopup('<h3>Enter a name for this persona:</h3>', 'input', '');
|
||||
|
||||
@@ -48,18 +66,28 @@ async function createDummyPersona() {
|
||||
|
||||
// Date + name (only ASCII) to make it unique
|
||||
const avatarId = `${Date.now()}-${personaName.replace(/[^a-zA-Z0-9]/g, '')}.png`;
|
||||
initPersona(avatarId, personaName, '');
|
||||
await uploadUserAvatar(default_avatar, avatarId);
|
||||
}
|
||||
|
||||
/**
|
||||
* Initializes a persona for the given avatar id.
|
||||
* @param {string} avatarId User avatar id
|
||||
* @param {string} personaName Name for the persona
|
||||
* @param {string} personaDescription Optional description for the persona
|
||||
* @returns {void}
|
||||
*/
|
||||
export function initPersona(avatarId, personaName, personaDescription) {
|
||||
power_user.personas[avatarId] = personaName;
|
||||
power_user.persona_descriptions[avatarId] = {
|
||||
description: '',
|
||||
description: personaDescription || '',
|
||||
position: persona_description_positions.IN_PROMPT,
|
||||
};
|
||||
|
||||
await uploadUserAvatar(default_avatar, avatarId);
|
||||
saveSettingsDebounced();
|
||||
}
|
||||
|
||||
export async function convertCharacterToPersona(characterId = null) {
|
||||
|
||||
if (null === characterId) characterId = this_chid;
|
||||
|
||||
const avatarUrl = characters[characterId]?.avatar;
|
||||
|
Reference in New Issue
Block a user