na-kakuyu-temu-mozhno-sozdat/landing.js

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';
}
});