108 lines
2.8 KiB
JavaScript
108 lines
2.8 KiB
JavaScript
// VibeChat Landing Page JavaScript
|
|
|
|
const API = {
|
|
register: '/api/auth/register',
|
|
login: '/api/auth/login'
|
|
};
|
|
|
|
let authToken = null;
|
|
|
|
// Show auth modal
|
|
function showAuth(type) {
|
|
const modal = document.getElementById('authModal');
|
|
const loginForm = document.getElementById('loginForm');
|
|
const registerForm = document.getElementById('registerForm');
|
|
|
|
modal.classList.add('active');
|
|
|
|
if (type === 'login') {
|
|
loginForm.style.display = 'block';
|
|
registerForm.style.display = 'none';
|
|
} else {
|
|
loginForm.style.display = 'none';
|
|
registerForm.style.display = 'block';
|
|
}
|
|
}
|
|
|
|
// Close modal
|
|
function closeAuth() {
|
|
document.getElementById('authModal').classList.remove('active');
|
|
}
|
|
|
|
// Close on outside click
|
|
document.getElementById('authModal')?.addEventListener('click', (e) => {
|
|
if (e.target.id === 'authModal') closeAuth();
|
|
});
|
|
|
|
// Scroll to features
|
|
function scrollToFeatures() {
|
|
document.getElementById('features').scrollIntoView({ behavior: 'smooth' });
|
|
}
|
|
|
|
// Handle login
|
|
async function handleLogin(event) {
|
|
event.preventDefault();
|
|
|
|
const email = document.getElementById('loginEmail').value;
|
|
const password = document.getElementById('loginPassword').value;
|
|
|
|
try {
|
|
const res = await fetch(API.login, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ email, password })
|
|
});
|
|
|
|
const json = await res.json();
|
|
|
|
if (json.ok) {
|
|
authToken = json.token;
|
|
localStorage.setItem('vibechat_token', authToken);
|
|
localStorage.setItem('vibechat_user', JSON.stringify(json.user));
|
|
window.location.href = 'app.html';
|
|
} else {
|
|
alert('Ошибка: ' + json.error);
|
|
}
|
|
} catch (e) {
|
|
alert('Ошибка подключения: ' + e.message);
|
|
}
|
|
}
|
|
|
|
// Handle register
|
|
async function handleRegister(event) {
|
|
event.preventDefault();
|
|
|
|
const username = document.getElementById('regUsername').value;
|
|
const email = document.getElementById('regEmail').value;
|
|
const password = document.getElementById('regPassword').value;
|
|
|
|
try {
|
|
const res = await fetch(API.register, {
|
|
method: 'POST',
|
|
headers: { 'Content-Type': 'application/json' },
|
|
body: JSON.stringify({ username, email, password })
|
|
});
|
|
|
|
const json = await res.json();
|
|
|
|
if (json.ok) {
|
|
authToken = json.token;
|
|
localStorage.setItem('vibechat_token', authToken);
|
|
localStorage.setItem('vibechat_user', JSON.stringify(json.user));
|
|
window.location.href = 'app.html';
|
|
} else {
|
|
alert('Ошибка: ' + json.error);
|
|
}
|
|
} catch (e) {
|
|
alert('Ошибка подключения: ' + e.message);
|
|
}
|
|
}
|
|
|
|
// Check if already logged in
|
|
window.addEventListener('DOMContentLoaded', () => {
|
|
const token = localStorage.getItem('vibechat_token');
|
|
if (token) {
|
|
window.location.href = 'app.html';
|
|
}
|
|
});
|