v0.6.5 various bug fixes
This commit is contained in:
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "jama-backend",
|
||||
"version": "0.6.5",
|
||||
"version": "0.6.6",
|
||||
"description": "TeamChat backend server",
|
||||
"main": "src/index.js",
|
||||
"scripts": {
|
||||
|
||||
@@ -127,6 +127,9 @@ io.on('connection', (socket) => {
|
||||
if (!onlineUsers.has(userId)) onlineUsers.set(userId, new Set());
|
||||
onlineUsers.get(userId).add(socket.id);
|
||||
|
||||
// Record last_online timestamp
|
||||
getDb().prepare("UPDATE users SET last_online = datetime('now') WHERE id = ?").run(userId);
|
||||
|
||||
// Broadcast online status
|
||||
io.emit('user:online', { userId });
|
||||
|
||||
@@ -200,6 +203,7 @@ io.on('connection', (socket) => {
|
||||
title: senderName,
|
||||
body: (content || (imageUrl ? '📷 Image' : '')).slice(0, 100),
|
||||
url: '/',
|
||||
groupId,
|
||||
badge: 1,
|
||||
}).catch(() => {});
|
||||
} else {
|
||||
@@ -340,6 +344,7 @@ io.on('connection', (socket) => {
|
||||
onlineUsers.get(userId).delete(socket.id);
|
||||
if (onlineUsers.get(userId).size === 0) {
|
||||
onlineUsers.delete(userId);
|
||||
getDb().prepare("UPDATE users SET last_online = datetime('now') WHERE id = ?").run(userId);
|
||||
io.emit('user:offline', { userId });
|
||||
}
|
||||
}
|
||||
|
||||
@@ -182,10 +182,10 @@ function initDb() {
|
||||
console.log('[DB] Migration: added direct_peer2_id column');
|
||||
} catch (e) { /* column already exists */ }
|
||||
|
||||
// Migration: last_login timestamp per user
|
||||
// Migration: last_online timestamp per user
|
||||
try {
|
||||
db.exec("ALTER TABLE users ADD COLUMN last_login TEXT");
|
||||
console.log('[DB] Migration: added last_login column');
|
||||
db.exec("ALTER TABLE users ADD COLUMN last_online TEXT");
|
||||
console.log('[DB] Migration: added last_online column');
|
||||
} catch (e) { /* column already exists */ }
|
||||
|
||||
// Migration: help_dismissed preference per user
|
||||
|
||||
@@ -24,9 +24,6 @@ router.post('/login', (req, res) => {
|
||||
const valid = bcrypt.compareSync(password, user.password);
|
||||
if (!valid) return res.status(401).json({ error: 'Invalid credentials' });
|
||||
|
||||
// Record last login timestamp
|
||||
db.prepare("UPDATE users SET last_login = datetime('now') WHERE id = ?").run(user.id);
|
||||
|
||||
const token = generateToken(user.id);
|
||||
const ua = req.headers['user-agent'] || '';
|
||||
const device = setActiveSession(user.id, token, ua); // displaces prior session on same device class
|
||||
|
||||
@@ -49,7 +49,7 @@ function getDefaultPassword(db) {
|
||||
router.get('/', authMiddleware, adminMiddleware, (req, res) => {
|
||||
const db = getDb();
|
||||
const users = db.prepare(`
|
||||
SELECT id, name, email, role, status, is_default_admin, must_change_password, avatar, about_me, display_name, created_at, last_login
|
||||
SELECT id, name, email, role, status, is_default_admin, must_change_password, avatar, about_me, display_name, created_at, last_online
|
||||
FROM users WHERE status != 'deleted'
|
||||
ORDER BY created_at ASC
|
||||
`).all();
|
||||
|
||||
Reference in New Issue
Block a user