Dynamically display lock icons

This commit is contained in:
Cohee
2023-06-12 01:09:54 +03:00
parent 77ac976dd3
commit 893cb968f5
2 changed files with 21 additions and 4 deletions

View File

@ -104,7 +104,7 @@
<div id="lm_button_panel_pin_div" title="Locked = AI Configuration panel will stay open"> <div id="lm_button_panel_pin_div" title="Locked = AI Configuration panel will stay open">
<input type="checkbox" id="lm_button_panel_pin"> <input type="checkbox" id="lm_button_panel_pin">
<label for="lm_button_panel_pin"> <label for="lm_button_panel_pin">
<div class="unchecked fa-solid fa-lock-open "></div> <div class="unchecked fa-solid fa-unlock "></div>
<div class="checked fa-solid fa-lock "></div> <div class="checked fa-solid fa-lock "></div>
</label> </label>
</div> </div>
@ -1791,7 +1791,7 @@
<div id="WI_panel_pin_div" title="Locked = World Editor will stay open"> <div id="WI_panel_pin_div" title="Locked = World Editor will stay open">
<input type="checkbox" id="WI_panel_pin"> <input type="checkbox" id="WI_panel_pin">
<label for="WI_panel_pin"> <label for="WI_panel_pin">
<div class="unchecked fa-solid fa-lock-open "></div> <div class="unchecked fa-solid fa-unlock "></div>
<div class="checked fa-solid fa-lock "></div> <div class="checked fa-solid fa-lock "></div>
</label> </label>
</div> </div>
@ -2194,7 +2194,7 @@
<input id="your_name" name="your_name" placeholder="Enter your name" class="text_pole wide100p" maxlength="50" value="" autocomplete="off"> <input id="your_name" name="your_name" placeholder="Enter your name" class="text_pole wide100p" maxlength="50" value="" autocomplete="off">
<div id="your_name_button" class="menu_button fa-solid fa-check" title="Click to set a new User Name"> <div id="your_name_button" class="menu_button fa-solid fa-check" title="Click to set a new User Name">
</div> </div>
<div id="lock_user_name" class="menu_button fa-solid fa-user-lock" title="Click to lock your selected persona to the current chat. Click again to remove the lock."> <div id="lock_user_name" class="menu_button fa-solid fa-lock" title="Click to lock your selected persona to the current chat. Click again to remove the lock.">
</div> </div>
<div id="sync_name_button" class="menu_button fa-solid fa-sync" title="Click to set user name for all messages"> <div id="sync_name_button" class="menu_button fa-solid fa-sync" title="Click to set user name for all messages">
</div> </div>
@ -2283,7 +2283,7 @@
<div id="rm_button_panel_pin_div" title="Locked = Character Management panel will stay open"> <div id="rm_button_panel_pin_div" title="Locked = Character Management panel will stay open">
<input type="checkbox" id="rm_button_panel_pin"> <input type="checkbox" id="rm_button_panel_pin">
<label for="rm_button_panel_pin"> <label for="rm_button_panel_pin">
<div class="fa-solid unchecked fa-lock-open" alt=""></div> <div class="fa-solid unchecked fa-unlock" alt=""></div>
<div class="fa-solid checked fa-lock" alt=""></div> <div class="fa-solid checked fa-lock" alt=""></div>
</label> </label>
</div> </div>

View File

@ -3998,6 +3998,12 @@ async function bindUserNameToPersona() {
await getUserAvatars(); await getUserAvatars();
} }
function updateUserLockIcon() {
const hasLock = !!chat_metadata['persona'];
$('#lock_user_name').toggleClass('fa-lock', !hasLock);
$('#lock_user_name').toggleClass('fa-unlock', hasLock);
}
function setUserAvatar() { function setUserAvatar() {
user_avatar = $(this).attr("imgfile"); user_avatar = $(this).attr("imgfile");
reloadUserAvatar(); reloadUserAvatar();
@ -4108,8 +4114,15 @@ async function deleteUserAvatar() {
power_user.default_persona = null; power_user.default_persona = null;
} }
if (avatarId === chat_metadata['persona']) {
toastr.warning('The locked persona was deleted. You will need to set a new persona for this chat.', 'Persona deleted');
delete chat_metadata['persona'];
saveMetadata();
}
saveSettingsDebounced(); saveSettingsDebounced();
await getUserAvatars(); await getUserAvatars();
updateUserLockIcon();
} }
} }
@ -4119,6 +4132,7 @@ function lockUserNameToChat() {
delete chat_metadata['persona']; delete chat_metadata['persona'];
saveMetadata(); saveMetadata();
toastr.info('User persona is now unlocked for this chat. Click the "Lock" again to revert.', 'Persona unlocked'); toastr.info('User persona is now unlocked for this chat. Click the "Lock" again to revert.', 'Persona unlocked');
updateUserLockIcon();
return; return;
} }
@ -4137,6 +4151,7 @@ function lockUserNameToChat() {
saveSettingsDebounced(); saveSettingsDebounced();
console.log(`Locking persona for this chat ${user_avatar}`); console.log(`Locking persona for this chat ${user_avatar}`);
toastr.success(`User persona is locked to ${name1} in this chat`); toastr.success(`User persona is locked to ${name1} in this chat`);
updateUserLockIcon();
} }
eventSource.on(event_types.CHAT_CHANGED, () => { eventSource.on(event_types.CHAT_CHANGED, () => {
@ -4166,6 +4181,7 @@ eventSource.on(event_types.CHAT_CHANGED, () => {
if (chat_metadata['persona'] && personaAvatar.length == 0) { if (chat_metadata['persona'] && personaAvatar.length == 0) {
console.warn('Persona avatar not found, unlocking persona'); console.warn('Persona avatar not found, unlocking persona');
delete chat_metadata['persona']; delete chat_metadata['persona'];
updateUserLockIcon();
return; return;
} }
@ -4179,6 +4195,7 @@ eventSource.on(event_types.CHAT_CHANGED, () => {
// Persona avatar found, select it // Persona avatar found, select it
personaAvatar.trigger('click'); personaAvatar.trigger('click');
updateUserLockIcon();
}); });
//***************SETTINGS****************// //***************SETTINGS****************//