Files
ohm_streaming/static/js/main.js
T
root 0c03f4f4a6
CI / Test (Python 3.11) (push) Has been cancelled
CI / Test (Python 3.12) (push) Has been cancelled
CI / Lint (push) Has been cancelled
CI / Type Check (push) Has been cancelled
CI / Summary (push) Has been cancelled
feat: add Settings tab with provider management and language preferences
- Implemented AppSettings model and table using SQLModel.
- Created Settings router with endpoints for preferences and provider toggling.
- Added Settings tab to the UI with real-time health status of providers.
- Integrated language and provider filtering into anime and series search logic.
- Updated templates to respect user-defined settings.
2026-03-26 16:12:29 +00:00

46 lines
1.4 KiB
JavaScript

/**
* Main initialization and event handlers - Modernized for HTMX/Alpine
*/
// Initialize on DOM load
document.addEventListener('DOMContentLoaded', () => {
// Only keeping essential initializations
// Note: loadHomeContent() removed as it is now handled by hx-trigger="load"
// Initial download load
if (typeof loadDownloads === 'function') {
loadDownloads();
setInterval(loadDownloads, 2000);
}
});
/**
* Switch between tabs (Modernized to Alpine.js)
*/
function switchTab(tabName) {
console.log('Switching tab to:', tabName);
window.dispatchEvent(new CustomEvent('set-tab', { detail: { tab: tabName } }));
window.location.hash = tabName;
}
// Handle URL hash on page load
if (window.location.hash) {
const hash = window.location.hash.substring(1);
const validTabs = ['home', 'watchlist', 'anime', 'series', 'providers', 'downloads', 'settings'];
if (validTabs.includes(hash)) {
// Short delay to ensure Alpine is ready
setTimeout(() => switchTab(hash), 100);
}
}
// Listen for hash changes
window.addEventListener('hashchange', function() {
if (window.location.hash) {
const hash = window.location.hash.substring(1);
const validTabs = ['home', 'watchlist', 'anime', 'series', 'providers', 'downloads', 'settings'];
if (validTabs.includes(hash)) {
switchTab(hash);
}
}
});