fix(ui): обработка устаревшей сессии и корректировка индикаторов соединения
This commit is contained in:
parent
0159dd9074
commit
58bbf063ca
@ -1,6 +1,12 @@
|
|||||||
import { renderHeader } from '../components/header.js';
|
import { renderHeader } from '../components/header.js';
|
||||||
import { directMessages } from '../mock-data.js';
|
import { directMessages } from '../mock-data.js';
|
||||||
import { getChatMessages, setContacts, state } from '../state.js';
|
import {
|
||||||
|
getChatMessages,
|
||||||
|
isSessionInvalidError,
|
||||||
|
setContacts,
|
||||||
|
state,
|
||||||
|
terminateCurrentSession,
|
||||||
|
} from '../state.js';
|
||||||
import { loadCurrentRelations } from '../services/user-connections.js';
|
import { loadCurrentRelations } from '../services/user-connections.js';
|
||||||
|
|
||||||
export const pageMeta = { id: 'messages-list', title: 'Личные сообщения' };
|
export const pageMeta = { id: 'messages-list', title: 'Личные сообщения' };
|
||||||
@ -103,6 +109,37 @@ export function render({ navigate }) {
|
|||||||
status.className = 'status-line is-available';
|
status.className = 'status-line is-available';
|
||||||
status.textContent = `Загружено диалогов: ${rows.length}`;
|
status.textContent = `Загружено диалогов: ${rows.length}`;
|
||||||
} catch (error) {
|
} catch (error) {
|
||||||
|
if (isSessionInvalidError(error)) {
|
||||||
|
list.innerHTML = '';
|
||||||
|
status.className = 'status-line is-unavailable';
|
||||||
|
status.textContent = 'Сессия устарела.';
|
||||||
|
|
||||||
|
const card = document.createElement('div');
|
||||||
|
card.className = 'card stack';
|
||||||
|
|
||||||
|
const title = document.createElement('strong');
|
||||||
|
title.textContent = 'Сессия устарела';
|
||||||
|
|
||||||
|
const details = document.createElement('p');
|
||||||
|
details.className = 'meta-muted';
|
||||||
|
details.textContent = 'Ваша сессия больше не действует. Авторизуйтесь заново.';
|
||||||
|
|
||||||
|
const okBtn = document.createElement('button');
|
||||||
|
okBtn.type = 'button';
|
||||||
|
okBtn.className = 'primary-btn';
|
||||||
|
okBtn.textContent = 'ОК';
|
||||||
|
okBtn.addEventListener('click', async () => {
|
||||||
|
await terminateCurrentSession({
|
||||||
|
infoMessage: 'Ваша сессия устарела. Выполните вход заново.',
|
||||||
|
});
|
||||||
|
navigate('start-view');
|
||||||
|
});
|
||||||
|
|
||||||
|
card.append(title, details, okBtn);
|
||||||
|
list.append(card);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
list.innerHTML = '';
|
list.innerHTML = '';
|
||||||
const fail = document.createElement('div');
|
const fail = document.createElement('div');
|
||||||
fail.className = 'card meta-muted';
|
fail.className = 'card meta-muted';
|
||||||
|
|||||||
@ -621,11 +621,18 @@
|
|||||||
position: relative;
|
position: relative;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.toolbar-btn-profile .toolbar-label-wrap {
|
||||||
|
padding-bottom: 10px;
|
||||||
|
}
|
||||||
|
|
||||||
.toolbar-connection-indicator {
|
.toolbar-connection-indicator {
|
||||||
|
position: absolute;
|
||||||
|
left: 50%;
|
||||||
|
bottom: 2px;
|
||||||
|
transform: translateX(-50%);
|
||||||
display: inline-flex;
|
display: inline-flex;
|
||||||
align-items: center;
|
align-items: center;
|
||||||
gap: 3px;
|
gap: 3px;
|
||||||
margin-top: 1px;
|
|
||||||
min-height: 9px;
|
min-height: 9px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -45,7 +45,7 @@ body {
|
|||||||
position: absolute;
|
position: absolute;
|
||||||
left: 12px;
|
left: 12px;
|
||||||
right: 12px;
|
right: 12px;
|
||||||
bottom: calc(74px + env(safe-area-inset-bottom));
|
bottom: calc(96px + env(safe-area-inset-bottom));
|
||||||
z-index: 5;
|
z-index: 5;
|
||||||
border-radius: 11px;
|
border-radius: 11px;
|
||||||
border: 1px solid rgba(133, 156, 201, 0.3);
|
border: 1px solid rgba(133, 156, 201, 0.3);
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user