fix(admin): show when users were last active and keep the list current

The column showed the last sign-in, which a renewing cookie leaves weeks
behind for someone using TREK daily. It now shows the later of the sign-in
and the last request. Saving an edit no longer blanks the row's avatar,
activity and online dot, and the list refreshes every 30 seconds while open.
This commit is contained in:
Maurice
2026-10-14 10:45:39 +02:00
committed by Maurice
parent 4ceade9d8b
commit 3c8fa07f44
39 changed files with 267 additions and 37 deletions
+1 -1
View File
@@ -92,7 +92,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'البريد الإلكتروني',
'admin.table.role': 'الدور',
'admin.table.created': 'تم الإنشاء',
'admin.table.lastLogin': 'آخر تسجيل دخول',
'admin.table.lastActive': 'آخر نشاط',
'admin.table.actions': 'الإجراءات',
'admin.you': '(أنت)',
'admin.editUser': 'تعديل المستخدم',
+1 -1
View File
@@ -91,7 +91,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-poçt',
'admin.table.role': 'Rol',
'admin.table.created': 'Yaradılıb',
'admin.table.lastLogin': 'Son giriş',
'admin.table.lastActive': 'Son aktivlik',
'admin.table.actions': 'Əməliyyatlar',
'admin.you': '(Siz)',
'admin.editUser': 'İstifadəçini redaktə et',
+1 -1
View File
@@ -35,7 +35,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-mail',
'admin.table.role': 'Função',
'admin.table.created': 'Criado',
'admin.table.lastLogin': 'Último acesso',
'admin.table.lastActive': 'Última atividade',
'admin.table.actions': 'Ações',
'admin.you': '(Você)',
'admin.editUser': 'Editar usuário',
+1 -1
View File
@@ -36,7 +36,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'Correu',
'admin.table.role': 'Rol',
'admin.table.created': 'Creat',
'admin.table.lastLogin': 'Últim accés',
'admin.table.lastActive': 'Última activitat',
'admin.table.actions': 'Accions',
'admin.you': '(Tu)',
'admin.editUser': 'Editar usuari',
+1 -1
View File
@@ -39,7 +39,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-mail',
'admin.table.role': 'Role',
'admin.table.created': 'Vytvořeno',
'admin.table.lastLogin': 'Poslední přihlášení',
'admin.table.lastActive': 'Naposledy aktivní',
'admin.table.actions': 'Akce',
'admin.you': '(Vy)',
'admin.editUser': 'Upravit uživatele',
+1 -1
View File
@@ -36,7 +36,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-Mail',
'admin.table.role': 'Rolle',
'admin.table.created': 'Erstellt',
'admin.table.lastLogin': 'Letzter Login',
'admin.table.lastActive': 'Zuletzt aktiv',
'admin.table.actions': 'Aktionen',
'admin.you': '(Du)',
'admin.editUser': 'Benutzer bearbeiten',
+1 -1
View File
@@ -87,7 +87,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'Email',
'admin.table.role': 'Role',
'admin.table.created': 'Created',
'admin.table.lastLogin': 'Last Login',
'admin.table.lastActive': 'Last Active',
'admin.table.actions': 'Actions',
'admin.you': '(You)',
'admin.editUser': 'Edit User',
+1 -1
View File
@@ -36,7 +36,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'Correo',
'admin.table.role': 'Rol',
'admin.table.created': 'Creado',
'admin.table.lastLogin': 'Último acceso',
'admin.table.lastActive': 'Última actividad',
'admin.table.actions': 'Acciones',
'admin.you': '(Tú)',
'admin.editUser': 'Editar usuario',
+1 -1
View File
@@ -89,7 +89,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-post',
'admin.table.role': 'Roll',
'admin.table.created': 'Loodud',
'admin.table.lastLogin': 'Viimane sisselogimine',
'admin.table.lastActive': 'Viimati aktiivne',
'admin.table.actions': 'Toimingud',
'admin.you': '(Sina)',
'admin.editUser': 'Muuda kasutajat',
+1 -1
View File
@@ -35,7 +35,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-mail',
'admin.table.role': 'Rôle',
'admin.table.created': 'Créé le',
'admin.table.lastLogin': 'Dernière connexion',
'admin.table.lastActive': 'Dernière activité',
'admin.table.actions': 'Actions',
'admin.you': '(Vous)',
'admin.editUser': "Modifier l'utilisateur",
+1 -1
View File
@@ -91,7 +91,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'Email',
'admin.table.role': 'Ρόλος',
'admin.table.created': 'Δημιουργήθηκε',
'admin.table.lastLogin': 'Τελευταία Σύνδεση',
'admin.table.lastActive': 'Τελευταία Δραστηριότητα',
'admin.table.actions': 'Ενέργειες',
'admin.you': '(Εσείς)',
'admin.editUser': 'Επεξεργασία Χρήστη',
+1 -1
View File
@@ -35,7 +35,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-mail',
'admin.table.role': 'Szerepkör',
'admin.table.created': 'Létrehozva',
'admin.table.lastLogin': 'Utolsó belépés',
'admin.table.lastActive': 'Utoljára aktív',
'admin.table.actions': 'Műveletek',
'admin.you': '(Te)',
'admin.editUser': 'Felhasználó szerkesztése',
+1 -1
View File
@@ -83,7 +83,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'Email',
'admin.table.role': 'Peran',
'admin.table.created': 'Dibuat',
'admin.table.lastLogin': 'Login Terakhir',
'admin.table.lastActive': 'Terakhir Aktif',
'admin.table.actions': 'Tindakan',
'admin.you': '(Kamu)',
'admin.editUser': 'Edit Pengguna',
+1 -1
View File
@@ -35,7 +35,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'Email',
'admin.table.role': 'Ruolo',
'admin.table.created': 'Creato',
'admin.table.lastLogin': 'Ultimo Accesso',
'admin.table.lastActive': 'Ultima Attività',
'admin.table.actions': 'Azioni',
'admin.you': '(Tu)',
'admin.editUser': 'Modifica Utente',
+1 -1
View File
@@ -77,7 +77,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'メール',
'admin.table.role': '権限',
'admin.table.created': '作成日',
'admin.table.lastLogin': '最終ログイン',
'admin.table.lastActive': '最終アクティブ',
'admin.table.actions': '操作',
'admin.you': '(あなた)',
'admin.editUser': 'ユーザーを編集',
+1 -1
View File
@@ -82,7 +82,7 @@ const admin: TranslationStrings = {
'admin.table.email': '이메일',
'admin.table.role': '역할',
'admin.table.created': '생성일',
'admin.table.lastLogin': '마지막 로그인',
'admin.table.lastActive': '마지막 활동',
'admin.table.actions': '작업',
'admin.you': '(나)',
'admin.editUser': '사용자 편집',
+1 -1
View File
@@ -36,7 +36,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-mail',
'admin.table.role': 'Rol',
'admin.table.created': 'Aangemaakt',
'admin.table.lastLogin': 'Laatste login',
'admin.table.lastActive': 'Laatst actief',
'admin.table.actions': 'Acties',
'admin.you': '(Jij)',
'admin.editUser': 'Gebruiker bewerken',
+1 -1
View File
@@ -34,7 +34,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-mail',
'admin.table.role': 'Rola',
'admin.table.created': 'Utworzono',
'admin.table.lastLogin': 'Ostatnie logowanie',
'admin.table.lastActive': 'Ostatnia aktywność',
'admin.table.actions': 'Akcje',
'admin.you': '(Ty)',
'admin.editUser': 'Edytuj użytkownika',
+1 -1
View File
@@ -44,7 +44,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'Эл. почта',
'admin.table.role': 'Роль',
'admin.table.created': 'Создан',
'admin.table.lastLogin': 'Последний вход',
'admin.table.lastActive': 'Последняя активность',
'admin.table.actions': 'Действия',
'admin.you': '(Вы)',
'admin.editUser': 'Редактировать пользователя',
+1 -1
View File
@@ -91,7 +91,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-mail',
'admin.table.role': 'Rola',
'admin.table.created': 'Vytvorené',
'admin.table.lastLogin': 'Posledné prihlásenie',
'admin.table.lastActive': 'Naposledy aktívny',
'admin.table.actions': 'Akcie',
'admin.you': '(Vy)',
'admin.editUser': 'Upraviť používateľa',
+1 -1
View File
@@ -88,7 +88,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-post',
'admin.table.role': 'Roll',
'admin.table.created': 'Skapad',
'admin.table.lastLogin': 'Senast inloggad',
'admin.table.lastActive': 'Senast aktiv',
'admin.table.actions': 'Åtgärder',
'admin.you': '(Du)',
'admin.editUser': 'Redigera anvädnare',
+1 -1
View File
@@ -83,7 +83,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'อีเมล',
'admin.table.role': 'บทบาท',
'admin.table.created': 'สร้างแล้ว',
'admin.table.lastLogin': 'เข้าสู่ระบบครั้งล่าสุด',
'admin.table.lastActive': 'ใช้งานล่าสุด',
'admin.table.actions': 'การดำเนินการ',
'admin.you': '(คุณ)',
'admin.editUser': 'แก้ไขผู้ใช้',
+1 -1
View File
@@ -88,7 +88,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'E-posta',
'admin.table.role': 'Rol',
'admin.table.created': 'Oluşturulma',
'admin.table.lastLogin': 'Son Giriş',
'admin.table.lastActive': 'Son Etkinlik',
'admin.table.actions': 'İşlemler',
'admin.you': '(Siz)',
'admin.editUser': 'Kullanıcıyı Düzenle',
+1 -1
View File
@@ -44,7 +44,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'Ел. пошта',
'admin.table.role': 'Роль',
'admin.table.created': 'Створено',
'admin.table.lastLogin': 'Останній вхід',
'admin.table.lastActive': 'Остання активність',
'admin.table.actions': 'Дії',
'admin.you': '(Ви)',
'admin.editUser': 'Редагувати користувача',
+1 -1
View File
@@ -84,7 +84,7 @@ const admin: TranslationStrings = {
'admin.table.email': 'Email',
'admin.table.role': 'Vai trò',
'admin.table.created': 'Tạo',
'admin.table.lastLogin': 'Đăng nhập lần cuối',
'admin.table.lastActive': 'Hoạt động lần cuối',
'admin.table.actions': 'hành động',
'admin.you': '(Bạn)',
'admin.editUser': 'Chỉnh sửa người dùng',
+1 -1
View File
@@ -80,7 +80,7 @@ const admin: TranslationStrings = {
'admin.table.email': '郵箱',
'admin.table.role': '角色',
'admin.table.created': '建立時間',
'admin.table.lastLogin': '最後登入',
'admin.table.lastActive': '最後活動',
'admin.table.actions': '操作',
'admin.you': '(你)',
'admin.editUser': '編輯使用者',
+1 -1
View File
@@ -32,7 +32,7 @@ const admin: TranslationStrings = {
'admin.table.email': '邮箱',
'admin.table.role': '角色',
'admin.table.created': '创建时间',
'admin.table.lastLogin': '最后登录',
'admin.table.lastActive': '最后活动',
'admin.table.actions': '操作',
'admin.you': '(你)',
'admin.editUser': '编辑用户',