104 lines
2.6 KiB
JavaScript

/**
* AniWorld - Index Page Application Initializer
*
* Main entry point for the index page. Initializes all modules.
*
* Dependencies: All shared and index modules
*/
var AniWorld = window.AniWorld || {};
AniWorld.IndexApp = (function() {
'use strict';
let localization = null;
/**
* Initialize the index page application
*/
async function init() {
console.log('AniWorld Index App initializing...');
// Initialize localization if available
if (typeof Localization !== 'undefined') {
localization = new Localization();
}
// Check authentication first
const isAuthenticated = await AniWorld.Auth.checkAuth();
if (!isAuthenticated) {
return; // Auth module handles redirect
}
// Initialize theme
AniWorld.Theme.init();
// Initialize WebSocket connection
AniWorld.WebSocketClient.init();
// Initialize socket event handlers for this page
AniWorld.IndexSocketHandler.init(localization);
// Initialize page modules
AniWorld.SeriesManager.init();
AniWorld.SelectionManager.init();
AniWorld.Search.init();
AniWorld.ScanManager.init();
AniWorld.ConfigManager.init();
// Bind global events
bindGlobalEvents();
// Load initial data
await AniWorld.SeriesManager.loadSeries();
console.log('AniWorld Index App initialized successfully');
}
/**
* Bind global event handlers
*/
function bindGlobalEvents() {
// Theme toggle
const themeToggle = document.getElementById('theme-toggle');
if (themeToggle) {
themeToggle.addEventListener('click', function() {
AniWorld.Theme.toggle();
});
}
// Logout button
const logoutBtn = document.getElementById('logout-btn');
if (logoutBtn) {
logoutBtn.addEventListener('click', function() {
AniWorld.Auth.logout(AniWorld.UI.showToast);
});
}
}
/**
* Get localization instance
*/
function getLocalization() {
return localization;
}
// Public API
return {
init: init,
getLocalization: getLocalization
};
})();
// Initialize the application when DOM is loaded
document.addEventListener('DOMContentLoaded', function() {
AniWorld.IndexApp.init();
});
// Expose app globally for inline event handlers (backwards compatibility)
window.app = {
addSeries: function(link, name) {
return AniWorld.Search.addSeries(link, name);
}
};