e8dc253f03
Enhanced inter-process communication for theme updates and navigation between home, settings, and main browser pages. Theme changes in settings now propagate to home via Electron IPC and postMessage fallback. Navigation requests from home and other webviews are handled more robustly, supporting both Electron IPC and postMessage. Also refactored tab creation and improved event handling for better reliability.
37 lines
1.4 KiB
JavaScript
37 lines
1.4 KiB
JavaScript
// Use require('electron') since webviews have nodeIntegrationInSubFrames: true
|
|
// In settings webview we use the same preload API as main windows
|
|
const { ipcRenderer } = require('electron');
|
|
|
|
const clearBtn = document.getElementById('clear-data-btn');
|
|
const statusDiv = document.getElementById('status');
|
|
const statusText = document.getElementById('status-text');
|
|
|
|
function showStatus(message) {
|
|
statusText.textContent = message;
|
|
statusDiv.classList.remove('hidden'); // Ensure the hidden class is removed
|
|
setTimeout(() => {
|
|
statusDiv.classList.add('hidden'); // Add the hidden class back after 2 seconds
|
|
}, 2000);
|
|
}
|
|
|
|
clearBtn.onclick = async () => {
|
|
statusDiv.classList.remove('hidden');
|
|
statusText.textContent = 'Clearing all browser data...';
|
|
|
|
try {
|
|
const ok = await ipcRenderer.invoke('clear-browser-data');
|
|
showStatus(ok
|
|
? 'All browser data and bookmarks cleared!'
|
|
: 'Failed to clear browser data.');
|
|
} catch (error) {
|
|
console.error('Error clearing browser data:', error);
|
|
showStatus('An error occurred while clearing data.');
|
|
} finally {
|
|
// Send theme update to host after clearing
|
|
const currentTheme = window.browserCustomizer ? window.browserCustomizer.currentTheme : null;
|
|
if (currentTheme && window.electronAPI && typeof window.electronAPI.sendToHost === 'function') {
|
|
window.electronAPI.sendToHost('theme-update', currentTheme);
|
|
}
|
|
}
|
|
};
|