const domain_name = document.location.hostname.substring(document.location.hostname.indexOf('.') + 1); // Migrate from old authentication method const legacy_token = localStorage.getItem('token'); if (legacy_token != null) { window.last_match_id = localStorage.getItem('last_match_id') || ''; localStorage.removeItem('token'); localStorage.removeItem('user_id'); localStorage.removeItem('last_match_id'); const login_to = encodeURIComponent(location.href); document.cookie = `login_to=${login_to}; path=/; domain=${domain_name}; secure; SameSite=Strict; Max-Age=30000`; document.location = '/auth_migrate?token=' + legacy_token + '&last_match_id=' + window.last_match_id; } // Grab info from cookies const cookies = document.cookie.split(';'); for (const cookie of cookies) { const foo = decodeURIComponent(cookie).trim().split('='); const key = foo[0]; if (key == '') break; let value = foo[1]; if (value.substr(0, 2) == 's:') { value = value.slice(2, value.lastIndexOf('.')); } if (key == 'user') { window.logged_user_id = parseInt(value, 10); } else if (key == 'last_match') { window.last_match_id = parseInt(value, 10); } else if (key == 'login_to' && value != '') { document.cookie = `login_to=; path=/; domain=${domain_name}; secure; SameSite=Strict; Max-Age=0`; document.location = value; } } // Update login button const a = document.querySelector('.login-btn'); if (window.logged_user_id) { a.href = `/u/${window.logged_user_id}/`; a.querySelector('img').src = `https://s.ppy.sh/a/${window.logged_user_id}`; } else { a.href = '/me/'; a.querySelector('img').src = `/images/login.png`; } // Get current ruleset from hostname (eg. 'mania.kiwec.net') const rulesets = ['osu', 'taiko', 'catch', 'mania']; const subdomain = location.hostname.split('.')[0]; window.selected_ruleset = rulesets.indexOf(subdomain); if (window.selected_ruleset == -1) { console.warn('No ruleset found for subdomain "' + subdomain + '"! Defaulting to standard.'); window.selected_ruleset = 0; } document.querySelector('#toggle-rulesets-dropdown-btn img').src = `/images/mode-${rulesets[window.selected_ruleset]}.png`; // Activate ruleset dropdown document.addEventListener('click', (event) => { const open_ruleset_dropdown_btn = document.querySelector('#toggle-rulesets-dropdown-btn'); const ruleset_dropdown = document.querySelector('#rulesets-dropdown'); if (open_ruleset_dropdown_btn.contains(event.target)) { ruleset_dropdown.classList.toggle('hidden'); } else { ruleset_dropdown.classList.add('hidden'); } }); document.querySelectorAll('.choose-ruleset').forEach((btn) => { btn.addEventListener('click', function(event) { event.preventDefault(); const subdomains = location.hostname.split('.'); subdomains[0] = this.dataset.ruleset; location.hostname = subdomains.join('.'); }); });