Fix: Hide UI elements when extension disabled

- Skip UI initialization entirely when extension is disabled on page load
- Remove all UI elements (panel, buttons) from DOM when disabling extension
- Recreate full UI when re-enabling extension
- Hide mobile toggle button on desktop viewports (>1000px)
- Show/hide mobile toggle based on viewport size transitions
- Ensures clean state management for extension enable/disable
This commit is contained in:
Spicy_Marinara
2025-11-13 23:30:44 +01:00
parent bd891e39b0
commit c48b1dab46
3 changed files with 46 additions and 8 deletions
+28 -8
View File
@@ -183,18 +183,27 @@ function addExtensionSettings() {
$('#extensions_settings2').append(settingsHtml); $('#extensions_settings2').append(settingsHtml);
// Set up the enable/disable toggle // Set up the enable/disable toggle
$('#rpg-extension-enabled').prop('checked', extensionSettings.enabled).on('change', function() { $('#rpg-extension-enabled').prop('checked', extensionSettings.enabled).on('change', async function() {
const wasEnabled = extensionSettings.enabled;
extensionSettings.enabled = $(this).prop('checked'); extensionSettings.enabled = $(this).prop('checked');
saveSettings(); saveSettings();
updatePanelVisibility();
if (!extensionSettings.enabled) { if (!extensionSettings.enabled && wasEnabled) {
// Clear extension prompts and thought bubbles when disabled // Disabling extension - remove UI elements
clearExtensionPrompts(); clearExtensionPrompts();
updateChatThoughts(); // This will remove the thought bubble since extension is disabled updateChatThoughts(); // Remove thought bubbles
} else {
// Re-create thought bubbles when re-enabled // Remove panel and toggle buttons
updateChatThoughts(); // This will re-create the thought bubble if data exists $('#rpg-companion-panel').remove();
$('#rpg-mobile-toggle').remove();
$('#rpg-collapse-toggle').remove();
$('#rpg-debug-toggle').remove();
$('#rpg-debug-panel').remove();
} else if (extensionSettings.enabled && !wasEnabled) {
// Enabling extension - initialize UI
await initUI();
loadChatData(); // Load chat data for current chat
updateChatThoughts(); // Create thought bubbles if data exists
} }
// Update Memory Recollection button visibility // Update Memory Recollection button visibility
@@ -206,6 +215,12 @@ function addExtensionSettings() {
* Initializes the UI for the extension. * Initializes the UI for the extension.
*/ */
async function initUI() { async function initUI() {
// Only initialize UI if extension is enabled
if (!extensionSettings.enabled) {
console.log('[RPG Companion] Extension disabled - skipping UI initialization');
return;
}
// Load the HTML template using SillyTavern's template system // Load the HTML template using SillyTavern's template system
const templateHtml = await renderExtensionTemplateAsync(extensionName, 'template'); const templateHtml = await renderExtensionTemplateAsync(extensionName, 'template');
@@ -220,6 +235,11 @@ async function initUI() {
`; `;
$('body').append(mobileToggleHtml); $('body').append(mobileToggleHtml);
// Hide mobile toggle on desktop viewport (> 1000px)
if (window.innerWidth > 1000) {
$('#rpg-mobile-toggle').hide();
}
// Cache UI elements using state setters // Cache UI elements using state setters
setPanelContainer($('#rpg-companion-panel')); setPanelContainer($('#rpg-companion-panel'));
setUserStatsContainer($('#rpg-user-stats')); setUserStatsContainer($('#rpg-user-stats'));
+7
View File
@@ -204,9 +204,16 @@ export function updatePanelVisibility() {
if (extensionSettings.enabled) { if (extensionSettings.enabled) {
$panelContainer.show(); $panelContainer.show();
togglePlotButtons(); // Update plot button visibility togglePlotButtons(); // Update plot button visibility
$('#rpg-mobile-toggle').show(); // Show mobile FAB toggle
$('#rpg-collapse-toggle').show(); // Show collapse toggle
// Debug toggle visibility is controlled by debugMode setting in debug.js
} else { } else {
$panelContainer.hide(); $panelContainer.hide();
$('#rpg-plot-buttons').hide(); // Hide plot buttons when disabled $('#rpg-plot-buttons').hide(); // Hide plot buttons when disabled
$('#rpg-mobile-toggle').hide(); // Hide mobile FAB toggle
$('#rpg-collapse-toggle').hide(); // Hide collapse toggle
$('#rpg-debug-toggle').hide(); // Hide debug toggle button when extension disabled
$('#rpg-debug-panel').remove(); // Remove debug panel when extension disabled
} }
} }
+11
View File
@@ -332,6 +332,9 @@ export function setupMobileToggle() {
if (!wasMobile && isMobile) { if (!wasMobile && isMobile) {
console.log('[RPG Mobile] Transitioning desktop -> mobile'); console.log('[RPG Mobile] Transitioning desktop -> mobile');
// Show mobile toggle button
$mobileToggle.show();
// Remove desktop tabs first // Remove desktop tabs first
removeDesktopTabs(); removeDesktopTabs();
@@ -381,6 +384,9 @@ export function setupMobileToggle() {
$mobileToggle.removeClass('active'); $mobileToggle.removeClass('active');
$('.rpg-mobile-overlay').remove(); $('.rpg-mobile-overlay').remove();
// Hide mobile toggle button on desktop
$mobileToggle.hide();
// Restore desktop positioning class // Restore desktop positioning class
const position = extensionSettings.panelPosition || 'right'; const position = extensionSettings.panelPosition || 'right';
$panel.addClass('rpg-position-' + position); $panel.addClass('rpg-position-' + position);
@@ -427,6 +433,11 @@ export function setupMobileToggle() {
setupMobileTabs(); setupMobileTabs();
// Set initial icon for mobile // Set initial icon for mobile
updateCollapseToggleIcon(); updateCollapseToggleIcon();
// Show mobile toggle on mobile viewport
$mobileToggle.show();
} else {
// Hide mobile toggle on desktop viewport
$mobileToggle.hide();
} }
} }