diff --git a/public/script.js b/public/script.js index 02626d6ae..c8a9d36b3 100644 --- a/public/script.js +++ b/public/script.js @@ -285,6 +285,7 @@ export const event_types = { CHARACTER_EDITED: 'character_edited', USER_MESSAGE_RENDERED: 'user_message_rendered', CHARACTER_MESSAGE_RENDERED: 'character_message_rendered', + FORCE_SET_BACKGROUND: 'force_set_background,' } export const eventSource = new EventEmitter(); diff --git a/public/scripts/extensions/backgrounds/index.js b/public/scripts/extensions/backgrounds/index.js index 73cdfa688..b1cb41de7 100644 --- a/public/scripts/extensions/backgrounds/index.js +++ b/public/scripts/extensions/backgrounds/index.js @@ -1,4 +1,4 @@ -import { generateQuietPrompt } from "../../../script.js"; +import { eventSource, event_types, generateQuietPrompt } from "../../../script.js"; import { getContext, saveMetadataDebounced } from "../../extensions.js"; import { registerSlashCommand } from "../../slash-commands.js"; import { stringFormat } from "../../utils.js"; @@ -6,8 +6,10 @@ export { MODULE_NAME }; const MODULE_NAME = 'backgrounds'; const METADATA_KEY = 'custom_background'; -const UPDATE_INTERVAL = 1000; +/** + * @param {string} background + */ function forceSetBackground(background) { saveBackgroundMetadata(background); setCustomBackground(); @@ -168,9 +170,9 @@ $(document).ready(function () { } addSettings(); - setInterval(moduleWorker, UPDATE_INTERVAL); registerSlashCommand('lockbg', onLockBackgroundClick, ['bglock'], " – locks a background for the currently selected chat", true, true); registerSlashCommand('unlockbg', onUnlockBackgroundClick, ['bgunlock'], ' – unlocks a background for the currently selected chat', true, true); registerSlashCommand('autobg', autoBackgroundCommand, ['bgauto'], ' – automatically changes the background based on the chat context using the AI request prompt', true, true); - window['forceSetBackground'] = forceSetBackground; + eventSource.on(event_types.FORCE_SET_BACKGROUND, forceSetBackground); + eventSource.on(event_types.CHAT_CHANGED, moduleWorker); }); diff --git a/public/scripts/extensions/stable-diffusion/index.js b/public/scripts/extensions/stable-diffusion/index.js index 4277a396b..5293474c5 100644 --- a/public/scripts/extensions/stable-diffusion/index.js +++ b/public/scripts/extensions/stable-diffusion/index.js @@ -890,21 +890,17 @@ async function generatePicture(_, trigger, message, callback) { extension_settings.sd.height = Math.round(extension_settings.sd.width * 1.5 / 64) * 64; } - // Background images are always landscape - if (generationType == generationMode.BACKGROUND && aspectRatio <= 1) { - // Round to nearest multiple of 64 - extension_settings.sd.width = Math.round(extension_settings.sd.height * 1.8 / 64) * 64; + if (generationType == generationMode.BACKGROUND) { + // Background images are always landscape + if (aspectRatio <= 1) { + // Round to nearest multiple of 64 + extension_settings.sd.width = Math.round(extension_settings.sd.height * 1.8 / 64) * 64; + } const callbackOriginal = callback; callback = async function (prompt, base64Image) { const imagePath = base64Image; const imgUrl = `url("${encodeURI(base64Image)}")`; - - if (typeof window['forceSetBackground'] === 'function') { - window['forceSetBackground'](imgUrl); - } else { - toastr.info('Background image will not be preserved.', '"Chat backgrounds" extension is disabled.'); - $('#bg_custom').css('background-image', imgUrl); - } + eventSource.emit(event_types.FORCE_SET_BACKGROUND, imgUrl); if (typeof callbackOriginal === 'function') { callbackOriginal(prompt, imagePath);