Unify default user avatars

Closes #2862
This commit is contained in:
Cohee 2024-09-16 22:08:40 +03:00
parent 4b2c074399
commit 8ec509c777
6 changed files with 10 additions and 11 deletions

BIN
public/img/user-default.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 51 KiB

View File

@ -510,6 +510,7 @@ let saveCharactersPage = 0;
export const default_avatar = 'img/ai4.png';
export const system_avatar = 'img/five.png';
export const comment_avatar = 'img/quill.png';
export const default_user_avatar = 'img/user-default.png';
export let CLIENT_VERSION = 'SillyTavern:UNKNOWN:Cohee#1207'; // For Horde header
let optionsPopper = Popper.createPopper(document.getElementById('options_button'), document.getElementById('options'), {
placement: 'top-start',

View File

@ -2,7 +2,7 @@ import {
characters,
chat,
chat_metadata,
default_avatar,
default_user_avatar,
eventSource,
event_types,
getRequestHeaders,
@ -357,7 +357,7 @@ 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);
await uploadUserAvatar(default_user_avatar, avatarId);
}
/**
@ -944,7 +944,7 @@ async function onPersonasRestoreInput(e) {
// If the avatar is missing, upload it
if (!avatarsList.includes(key)) {
warnings.push(`Persona image "${key}" (${value}) is missing, uploading default avatar`);
await uploadUserAvatar(default_avatar, key);
await uploadUserAvatar(default_user_avatar, key);
}
}

View File

@ -5,7 +5,6 @@ const PUBLIC_DIRECTORIES = {
extensions: 'public/scripts/extensions',
};
const DEFAULT_AVATAR = '/img/ai4.png';
const SETTINGS_FILE = 'settings.json';
/**
@ -422,7 +421,6 @@ const VLLM_KEYS = [
module.exports = {
DEFAULT_USER,
DEFAULT_AVATAR,
SETTINGS_FILE,
PUBLIC_DIRECTORIES,
USER_DIRECTORY_TEMPLATE,

View File

@ -726,13 +726,12 @@ router.post('/create', urlencodedParser, async function (request, response) {
const char = JSON.stringify(charaFormatData(request.body, request.user.directories));
const internalName = getPngName(request.body.ch_name, request.user.directories);
const avatarName = `${internalName}.png`;
const defaultAvatar = './public/img/ai4.png';
const chatsPath = path.join(request.user.directories.chats, internalName);
if (!fs.existsSync(chatsPath)) fs.mkdirSync(chatsPath);
if (!request.file) {
await writeCharacterData(defaultAvatar, char, internalName, request);
await writeCharacterData(defaultAvatarPath, char, internalName, request);
return response.send(avatarName);
} else {
const crop = tryParse(request.query.crop);

View File

@ -10,7 +10,7 @@ const express = require('express');
const mime = require('mime-types');
const archiver = require('archiver');
const { USER_DIRECTORY_TEMPLATE, DEFAULT_USER, PUBLIC_DIRECTORIES, DEFAULT_AVATAR, SETTINGS_FILE } = require('./constants');
const { USER_DIRECTORY_TEMPLATE, DEFAULT_USER, PUBLIC_DIRECTORIES, SETTINGS_FILE } = require('./constants');
const { getConfigValue, color, delay, setConfigValue, generateTimestamp } = require('./util');
const { readSecret, writeSecret } = require('./endpoints/secrets');
@ -24,6 +24,7 @@ const ANON_CSRF_SECRET = crypto.randomBytes(64).toString('base64');
* @type {Map<string, UserDirectoryList>}
*/
const DIRECTORIES_CACHE = new Map();
const PUBLIC_USER_AVATAR = '/img/default-user.png';
const STORAGE_KEYS = {
csrfSecret: 'csrfSecret',
@ -478,11 +479,11 @@ async function getUserAvatar(handle) {
const settings = fs.existsSync(pathToSettings) ? JSON.parse(fs.readFileSync(pathToSettings, 'utf8')) : {};
const avatarFile = settings?.power_user?.default_persona || settings?.user_avatar;
if (!avatarFile) {
return DEFAULT_AVATAR;
return PUBLIC_USER_AVATAR;
}
const avatarPath = path.join(directory.avatars, avatarFile);
if (!fs.existsSync(avatarPath)) {
return DEFAULT_AVATAR;
return PUBLIC_USER_AVATAR;
}
const mimeType = mime.lookup(avatarPath);
const base64Content = fs.readFileSync(avatarPath, 'base64');
@ -490,7 +491,7 @@ async function getUserAvatar(handle) {
}
catch {
// Ignore errors
return DEFAULT_AVATAR;
return PUBLIC_USER_AVATAR;
}
}