SHA256
feat(update): server push-команда на массовое обновление UI и формат версий
This commit is contained in:
@@ -10,6 +10,28 @@ import { initPwaPush } from '../services/pwa-push-service.js';
|
||||
|
||||
export const pageMeta = { id: 'settings-view', title: 'Настройки' };
|
||||
|
||||
function formatBuildStamp(rawValue) {
|
||||
const value = String(rawValue || '').trim();
|
||||
if (!/^\d{14}$/.test(value)) return value;
|
||||
const yyyy = value.slice(0, 4);
|
||||
const mm = value.slice(4, 6);
|
||||
const dd = value.slice(6, 8);
|
||||
const hh = value.slice(8, 10);
|
||||
const min = value.slice(10, 12);
|
||||
const ss = value.slice(12, 14);
|
||||
return `${yyyy}-${mm}-${dd}/${hh}:${min}__${ss}`;
|
||||
}
|
||||
|
||||
function formatVersionForUi(rawValue) {
|
||||
const value = String(rawValue || '').trim();
|
||||
if (!value) return 'n/a';
|
||||
const formatted = formatBuildStamp(value);
|
||||
if (formatted && formatted !== value) {
|
||||
return `${formatted} (${value})`;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
|
||||
export function render({ navigate }) {
|
||||
const screen = document.createElement('section');
|
||||
screen.className = 'stack';
|
||||
@@ -129,11 +151,11 @@ export function render({ navigate }) {
|
||||
|
||||
const clientVersion = document.createElement('p');
|
||||
clientVersion.className = 'meta-muted';
|
||||
clientVersion.textContent = `Клиент: ${String(window.__SHINE_CLIENT_VERSION__ || 'n/a').trim() || 'n/a'}`;
|
||||
clientVersion.textContent = `Клиент: ${formatVersionForUi(window.__SHINE_CLIENT_VERSION__)}`;
|
||||
|
||||
const uiBuild = document.createElement('p');
|
||||
uiBuild.className = 'meta-muted';
|
||||
uiBuild.textContent = `Сборка UI: ${String(window.__SHINE_BUILD_HASH__ || 'n/a').trim() || 'n/a'}`;
|
||||
uiBuild.textContent = `Сборка UI: ${formatVersionForUi(window.__SHINE_BUILD_HASH__)}`;
|
||||
|
||||
const serverVersion = document.createElement('p');
|
||||
serverVersion.className = 'meta-muted';
|
||||
@@ -143,11 +165,19 @@ export function render({ navigate }) {
|
||||
|
||||
void (async () => {
|
||||
try {
|
||||
const resp = await authService.ws.request('GetServerInfo', {});
|
||||
const value = String(resp?.payload?.version || '').trim() || 'n/a';
|
||||
if (!isDisposed) {
|
||||
serverVersion.textContent = `Сервер: ${value}`;
|
||||
let value = '';
|
||||
try {
|
||||
const pingResp = await authService.ws.request('Ping', { ts: Date.now() }, 7000);
|
||||
value = String(pingResp?.payload?.serverVersion || pingResp?.serverVersion || '').trim();
|
||||
} catch {
|
||||
// fallback below
|
||||
}
|
||||
|
||||
if (!value) {
|
||||
const infoResp = await authService.ws.request('GetServerInfo', {});
|
||||
value = String(infoResp?.payload?.version || '').trim();
|
||||
}
|
||||
if (!isDisposed) serverVersion.textContent = `Сервер: ${formatVersionForUi(value)}`;
|
||||
} catch {
|
||||
if (!isDisposed) {
|
||||
serverVersion.textContent = 'Сервер: недоступно';
|
||||
|
||||
Reference in New Issue
Block a user