104 lines
2.6 KiB
JavaScript
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);
|
|
}
|
|
};
|