mirror of
				https://github.com/SillyTavern/SillyTavern.git
				synced 2025-06-05 21:59:27 +02:00 
			
		
		
		
	Merge pull request #2863 from SillyTavern/unify-user-avatar
Unify default user avatars
This commit is contained in:
		
							
								
								
									
										
											BIN
										
									
								
								public/img/user-default.png
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										
											BIN
										
									
								
								public/img/user-default.png
									
									
									
									
									
										Normal file
									
								
							
										
											Binary file not shown.
										
									
								
							| After Width: | Height: | Size: 51 KiB | 
| @@ -510,6 +510,7 @@ let saveCharactersPage = 0; | |||||||
| export const default_avatar = 'img/ai4.png'; | export const default_avatar = 'img/ai4.png'; | ||||||
| export const system_avatar = 'img/five.png'; | export const system_avatar = 'img/five.png'; | ||||||
| export const comment_avatar = 'img/quill.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 | export let CLIENT_VERSION = 'SillyTavern:UNKNOWN:Cohee#1207'; // For Horde header | ||||||
| let optionsPopper = Popper.createPopper(document.getElementById('options_button'), document.getElementById('options'), { | let optionsPopper = Popper.createPopper(document.getElementById('options_button'), document.getElementById('options'), { | ||||||
|     placement: 'top-start', |     placement: 'top-start', | ||||||
|   | |||||||
| @@ -2,7 +2,7 @@ import { | |||||||
|     characters, |     characters, | ||||||
|     chat, |     chat, | ||||||
|     chat_metadata, |     chat_metadata, | ||||||
|     default_avatar, |     default_user_avatar, | ||||||
|     eventSource, |     eventSource, | ||||||
|     event_types, |     event_types, | ||||||
|     getRequestHeaders, |     getRequestHeaders, | ||||||
| @@ -357,7 +357,7 @@ async function createDummyPersona() { | |||||||
|     // Date + name (only ASCII) to make it unique |     // Date + name (only ASCII) to make it unique | ||||||
|     const avatarId = `${Date.now()}-${personaName.replace(/[^a-zA-Z0-9]/g, '')}.png`; |     const avatarId = `${Date.now()}-${personaName.replace(/[^a-zA-Z0-9]/g, '')}.png`; | ||||||
|     initPersona(avatarId, personaName, ''); |     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 the avatar is missing, upload it | ||||||
|         if (!avatarsList.includes(key)) { |         if (!avatarsList.includes(key)) { | ||||||
|             warnings.push(`Persona image "${key}" (${value}) is missing, uploading default avatar`); |             warnings.push(`Persona image "${key}" (${value}) is missing, uploading default avatar`); | ||||||
|             await uploadUserAvatar(default_avatar, key); |             await uploadUserAvatar(default_user_avatar, key); | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,7 +5,6 @@ const PUBLIC_DIRECTORIES = { | |||||||
|     extensions: 'public/scripts/extensions', |     extensions: 'public/scripts/extensions', | ||||||
| }; | }; | ||||||
|  |  | ||||||
| const DEFAULT_AVATAR = '/img/ai4.png'; |  | ||||||
| const SETTINGS_FILE = 'settings.json'; | const SETTINGS_FILE = 'settings.json'; | ||||||
|  |  | ||||||
| /** | /** | ||||||
| @@ -422,7 +421,6 @@ const VLLM_KEYS = [ | |||||||
|  |  | ||||||
| module.exports = { | module.exports = { | ||||||
|     DEFAULT_USER, |     DEFAULT_USER, | ||||||
|     DEFAULT_AVATAR, |  | ||||||
|     SETTINGS_FILE, |     SETTINGS_FILE, | ||||||
|     PUBLIC_DIRECTORIES, |     PUBLIC_DIRECTORIES, | ||||||
|     USER_DIRECTORY_TEMPLATE, |     USER_DIRECTORY_TEMPLATE, | ||||||
|   | |||||||
| @@ -726,13 +726,12 @@ router.post('/create', urlencodedParser, async function (request, response) { | |||||||
|         const char = JSON.stringify(charaFormatData(request.body, request.user.directories)); |         const char = JSON.stringify(charaFormatData(request.body, request.user.directories)); | ||||||
|         const internalName = getPngName(request.body.ch_name, request.user.directories); |         const internalName = getPngName(request.body.ch_name, request.user.directories); | ||||||
|         const avatarName = `${internalName}.png`; |         const avatarName = `${internalName}.png`; | ||||||
|         const defaultAvatar = './public/img/ai4.png'; |  | ||||||
|         const chatsPath = path.join(request.user.directories.chats, internalName); |         const chatsPath = path.join(request.user.directories.chats, internalName); | ||||||
|  |  | ||||||
|         if (!fs.existsSync(chatsPath)) fs.mkdirSync(chatsPath); |         if (!fs.existsSync(chatsPath)) fs.mkdirSync(chatsPath); | ||||||
|  |  | ||||||
|         if (!request.file) { |         if (!request.file) { | ||||||
|             await writeCharacterData(defaultAvatar, char, internalName, request); |             await writeCharacterData(defaultAvatarPath, char, internalName, request); | ||||||
|             return response.send(avatarName); |             return response.send(avatarName); | ||||||
|         } else { |         } else { | ||||||
|             const crop = tryParse(request.query.crop); |             const crop = tryParse(request.query.crop); | ||||||
|   | |||||||
| @@ -10,7 +10,7 @@ const express = require('express'); | |||||||
| const mime = require('mime-types'); | const mime = require('mime-types'); | ||||||
| const archiver = require('archiver'); | 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 { getConfigValue, color, delay, setConfigValue, generateTimestamp } = require('./util'); | ||||||
| const { readSecret, writeSecret } = require('./endpoints/secrets'); | const { readSecret, writeSecret } = require('./endpoints/secrets'); | ||||||
|  |  | ||||||
| @@ -24,6 +24,7 @@ const ANON_CSRF_SECRET = crypto.randomBytes(64).toString('base64'); | |||||||
|  * @type {Map<string, UserDirectoryList>} |  * @type {Map<string, UserDirectoryList>} | ||||||
|  */ |  */ | ||||||
| const DIRECTORIES_CACHE = new Map(); | const DIRECTORIES_CACHE = new Map(); | ||||||
|  | const PUBLIC_USER_AVATAR = '/img/default-user.png'; | ||||||
|  |  | ||||||
| const STORAGE_KEYS = { | const STORAGE_KEYS = { | ||||||
|     csrfSecret: 'csrfSecret', |     csrfSecret: 'csrfSecret', | ||||||
| @@ -478,11 +479,11 @@ async function getUserAvatar(handle) { | |||||||
|         const settings = fs.existsSync(pathToSettings) ? JSON.parse(fs.readFileSync(pathToSettings, 'utf8')) : {}; |         const settings = fs.existsSync(pathToSettings) ? JSON.parse(fs.readFileSync(pathToSettings, 'utf8')) : {}; | ||||||
|         const avatarFile = settings?.power_user?.default_persona || settings?.user_avatar; |         const avatarFile = settings?.power_user?.default_persona || settings?.user_avatar; | ||||||
|         if (!avatarFile) { |         if (!avatarFile) { | ||||||
|             return DEFAULT_AVATAR; |             return PUBLIC_USER_AVATAR; | ||||||
|         } |         } | ||||||
|         const avatarPath = path.join(directory.avatars, avatarFile); |         const avatarPath = path.join(directory.avatars, avatarFile); | ||||||
|         if (!fs.existsSync(avatarPath)) { |         if (!fs.existsSync(avatarPath)) { | ||||||
|             return DEFAULT_AVATAR; |             return PUBLIC_USER_AVATAR; | ||||||
|         } |         } | ||||||
|         const mimeType = mime.lookup(avatarPath); |         const mimeType = mime.lookup(avatarPath); | ||||||
|         const base64Content = fs.readFileSync(avatarPath, 'base64'); |         const base64Content = fs.readFileSync(avatarPath, 'base64'); | ||||||
| @@ -490,7 +491,7 @@ async function getUserAvatar(handle) { | |||||||
|     } |     } | ||||||
|     catch { |     catch { | ||||||
|         // Ignore errors |         // Ignore errors | ||||||
|         return DEFAULT_AVATAR; |         return PUBLIC_USER_AVATAR; | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user