diff --git a/public/script.js b/public/script.js index 4181782b8..53cec31d1 100644 --- a/public/script.js +++ b/public/script.js @@ -565,9 +565,9 @@ function printCharacters() { $("#rm_print_characters_block").empty(); //console.log('printCharacters() -- sees '+characters.length+' characters.'); characters.forEach(function (item, i, arr) { - var this_avatar = default_avatar; + let this_avatar = default_avatar; if (item.avatar != "none") { - this_avatar = "characters/" + item.avatar + "?" + Date.now(); + this_avatar = `/thumbnail?type=avatar&file=${encodeURIComponent(item.avatar)}&${Date.now()}`; } //RossAscends: changed 'prepend' to 'append' to make alphabetical sorting display correctly. $("#rm_print_characters_block").append( @@ -625,7 +625,7 @@ async function getBackgrounds() { //background = getData; //console.log(getData.length); for (const bg of getData) { - const thumbPath = `/thumbnail?type=bg&file=${bg}`; + const thumbPath = `/thumbnail?type=bg&file=${encodeURIComponent(bg)}`; $("#bg_menu_content").append( `
@@ -814,9 +814,9 @@ function addOneMessage(mes, type = "normal") { avatarImg = system_avatar; } else { if (characters[this_chid].avatar != "none") { - avatarImg = "characters/" + characters[this_chid].avatar; + avatarImg = `/thumbnail?type=avatar&file=${encodeURIComponent(characters[this_chid].avatar)}`; if (is_mes_reload_avatar !== false) { - avatarImg += "?" + is_mes_reload_avatar; + avatarImg += "&" + is_mes_reload_avatar; } } else { avatarImg = default_avatar; @@ -2546,7 +2546,7 @@ function select_selected_character(chid) { //$("#avatar_div").css("display", "none"); var this_avatar = default_avatar; if (characters[chid].avatar != "none") { - this_avatar = "characters/" + characters[chid].avatar; + this_avatar = "characters/" + encodeURIComponent(characters[chid].avatar); } $("#avatar_load_preview").attr("src", this_avatar + "?" + Date.now()); $("#name_div").css("display", "none"); @@ -2698,7 +2698,7 @@ function read_bg_load(input) { "url(" + e.target.result + ")" ); $("#form_bg_download").after( - `
+ `
` ); diff --git a/public/scripts/group-chats.js b/public/scripts/group-chats.js index a2e36d9d7..b2d73756e 100644 --- a/public/scripts/group-chats.js +++ b/public/scripts/group-chats.js @@ -126,7 +126,7 @@ async function getGroupChat(id) { : default_ch_mes; mes["force_avatar"] = character.avatar != "none" - ? `characters/${character.avatar}?${Date.now()}` + ? `/thumbnail?type=avatar&file=${encodeURIComponent(character.avatar)}&${Date.now()}` : default_avatar; chat.push(mes); addOneMessage(mes); @@ -201,7 +201,7 @@ function getGroupAvatar(group) { for (const member of group.members) { const charIndex = characters.findIndex((x) => x.name === member); if (charIndex !== -1 && characters[charIndex].avatar !== "none") { - const avatar = `characters/${characters[charIndex].avatar}#${Date.now()}`; + const avatar = `/thumbnail?type=avatar&file=${encodeURIComponent(characters[charIndex].avatar)}&${Date.now()}`; memberAvatars.push(avatar); } if (memberAvatars.length === 4) { @@ -533,7 +533,7 @@ function select_group_chats(chat_id) { for (let character of characters) { const avatar = character.avatar != "none" - ? `characters/${character.avatar}#${Date.now()}` + ? `/thumbnail?type=avatar&file=${encodeURIComponent(character.avatar)}&${Date.now()}` : default_avatar; const template = $("#group_member_template .group_member").clone(); template.data("id", character.name); diff --git a/server.js b/server.js index 3e5c3aaf6..b7d597822 100644 --- a/server.js +++ b/server.js @@ -622,6 +622,7 @@ app.post("/editcharacter", urlencodedParser, async function (request, response) img_path = "uploads/"; img_file = filedata.filename; + invalidateThumbnail('avatar', request.body.avatar_url); await charaWrite(img_path + img_file, char, target_img, response, 'Character saved'); //response.send('Character saved'); } @@ -646,6 +647,7 @@ app.post("/deletecharacter", urlencodedParser, function (request, response) { } fs.rmSync(avatarPath); + invalidateThumbnail('avatar', request.body.avatar_url); let dir_name = (request.body.avatar_url.replace('.png', '')); if (dir_name !== sanitize(dir_name)) { @@ -1722,11 +1724,11 @@ async function generateThumbnail(type, file) { return null; } - const imageSizes = { 'bg': [160, 90], 'avatar': [42, 42] }; + const imageSizes = { 'bg': [160, 90], 'avatar': [48, 48] }; const mySize = imageSizes[type]; const image = await jimp.read(pathToOriginalFile); - await image.cover(mySize[0], mySize[1]).quality(60).writeAsync(pathToCachedFile); + await image.cover(mySize[0], mySize[1]).quality(95).writeAsync(pathToCachedFile); return pathToCachedFile; }