SHA256
UI: адаптация шапки «Связи», кнопка поиска каналов, локальный тестовый вход
- Связи: верхняя панель не выходит за границы экрана — кнопки назад/Найти/«?» не обрезаются на узких устройствах; заголовок сокращается вместо сдвига кнопок. - Каналы: emoji-иконка поиска заменена на контурную кнопку-лупу в стиле панели (подсказка «Найти канал»); окно поиска без изменений. - Локальный тестовый вход: на localhost/127.0.0.1/::1 — кнопка демо-входа (сеанс local-tester, автономные локальные состояния ЛС/каналов/профиля, без сервера и пароля); на shineup.me и тестовых доменах кнопка отсутствует. - Заметки на ручную проверку добавлены в Dev_Docs/Pending_Features. - VERSION: client 1.2.262. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
+20
-3
@@ -48,7 +48,7 @@ import * as loginOtherDeviceView from './pages/login-other-device-view.js?v=2026
|
||||
import * as loginPasswordView from './pages/login-password-view.js?v=202606201650';
|
||||
import * as keyStorageView from './pages/key-storage-view.js';
|
||||
|
||||
import * as profileView from './pages/profile-view.js';
|
||||
import * as profileView from './pages/profile-view.js?v=202607150910';
|
||||
import * as profileEditView from './pages/profile-edit-view.js';
|
||||
import * as walletView from './pages/wallet-view.js?v=202605300007';
|
||||
import * as settingsView from './pages/settings-view.js';
|
||||
@@ -490,6 +490,10 @@ function startPeriodicUiVersionCheck() {
|
||||
}
|
||||
|
||||
async function checkConnectionHealth() {
|
||||
if (state.session.isLocalDemo) {
|
||||
setConnectionStatus('connected');
|
||||
return;
|
||||
}
|
||||
if (connectionCheckInFlight) return;
|
||||
connectionCheckInFlight = true;
|
||||
if (connectionState !== 'connected') {
|
||||
@@ -520,6 +524,10 @@ async function checkConnectionHealth() {
|
||||
}
|
||||
|
||||
function startConnectionMonitor() {
|
||||
if (state.session.isLocalDemo) {
|
||||
setConnectionStatus('connected');
|
||||
return;
|
||||
}
|
||||
if (pingIntervalId) {
|
||||
window.clearInterval(pingIntervalId);
|
||||
pingIntervalId = null;
|
||||
@@ -733,6 +741,7 @@ function renderApp() {
|
||||
|
||||
const showAppChrome = page.pageMeta?.showAppChrome !== false;
|
||||
screenEl.classList.toggle('no-app-chrome', !showAppChrome);
|
||||
screenEl.classList.toggle('preauth-flow', PRE_AUTH_PAGES.includes(pageId));
|
||||
|
||||
toolbarEl.innerHTML = '';
|
||||
if (showAppChrome) {
|
||||
@@ -746,6 +755,7 @@ function renderApp() {
|
||||
}
|
||||
|
||||
async function tryAutoLogin() {
|
||||
if (state.session.isLocalDemo) return;
|
||||
if (!state.session.login || !state.session.sessionId) return;
|
||||
try {
|
||||
await authService.reconnect(state.entrySettings.shineServer);
|
||||
@@ -766,6 +776,7 @@ async function tryAutoLogin() {
|
||||
}
|
||||
|
||||
async function ensureSessionRuntimeStarted() {
|
||||
if (state.session.isLocalDemo) return;
|
||||
if (!state.session.isAuthorized || sessionRuntimeStarted) return;
|
||||
sessionRuntimeStarted = true;
|
||||
|
||||
@@ -810,6 +821,10 @@ async function ensureSessionRuntimeStarted() {
|
||||
async function init() {
|
||||
consumeCallPushActionFromUrlIfAny();
|
||||
|
||||
if (state.session.isLocalDemo) {
|
||||
setConnectionStatus('connected');
|
||||
}
|
||||
|
||||
addAppLogEntry({
|
||||
level: 'info',
|
||||
source: 'app',
|
||||
@@ -1073,8 +1088,10 @@ async function init() {
|
||||
try {
|
||||
await tryAutoLogin();
|
||||
await hydrateMessagesFromStore();
|
||||
startConnectionMonitor();
|
||||
startPeriodicUiVersionCheck();
|
||||
if (!state.session.isLocalDemo) {
|
||||
startConnectionMonitor();
|
||||
startPeriodicUiVersionCheck();
|
||||
}
|
||||
await ensureSessionRuntimeStarted();
|
||||
} finally {
|
||||
renderApp();
|
||||
|
||||
Reference in New Issue
Block a user