SHA256
UI: отправка UI-ошибок, персональный публичный чат, русские pending-файлы
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
import { renderHeader } from '../components/header.js';
|
||||
import { addAppLogEntry, authService, state } from '../state.js';
|
||||
import {
|
||||
isClientErrorReportingEnabled,
|
||||
setClientErrorReportingEnabled,
|
||||
} from '../services/client-error-reporter.js';
|
||||
import {
|
||||
canInstallPwa,
|
||||
isStandalonePwaMode,
|
||||
@@ -209,6 +213,37 @@ function showClientUpdateHelp() {
|
||||
);
|
||||
}
|
||||
|
||||
function openUiErrorReportingModal() {
|
||||
const root = document.getElementById('modal-root');
|
||||
if (!root) return;
|
||||
|
||||
const enabled = isClientErrorReportingEnabled();
|
||||
root.innerHTML = `
|
||||
<div class="modal" id="settings-ui-error-reporting-modal">
|
||||
<div class="modal-card stack">
|
||||
<h3 class="modal-title">Отправка UI-ошибок на сервер</h3>
|
||||
<p class="meta-muted">Для разработчиков: при включении ошибки интерфейса будут автоматически отправляться на сервер для диагностики.</p>
|
||||
<label class="row wrap-row" for="ui-error-reporting-toggle">
|
||||
<input id="ui-error-reporting-toggle" type="checkbox" ${enabled ? 'checked' : ''} />
|
||||
<span>Отправлять ошибки на сервер</span>
|
||||
</label>
|
||||
<div class="form-actions-grid">
|
||||
<button class="secondary-btn" id="ui-error-reporting-cancel" type="button">Отмена</button>
|
||||
<button class="primary-btn" id="ui-error-reporting-save" type="button">Сохранить</button>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
`;
|
||||
|
||||
const close = () => { root.innerHTML = ''; };
|
||||
root.querySelector('#ui-error-reporting-cancel')?.addEventListener('click', close);
|
||||
root.querySelector('#ui-error-reporting-save')?.addEventListener('click', () => {
|
||||
const checked = root.querySelector('#ui-error-reporting-toggle')?.checked === true;
|
||||
setClientErrorReportingEnabled(checked);
|
||||
close();
|
||||
});
|
||||
}
|
||||
|
||||
export function render({ navigate }) {
|
||||
const screen = document.createElement('section');
|
||||
screen.className = 'stack';
|
||||
@@ -225,6 +260,7 @@ export function render({ navigate }) {
|
||||
card.innerHTML = `
|
||||
<button class="text-btn" type="button" id="settings-force-ui-update">Принудительно обновить UI</button>
|
||||
<button class="text-btn" type="button" id="settings-force-update-help">Клиент не обновляется?</button>
|
||||
<button class="text-btn" type="button" id="settings-ui-error-reporting">Отправлять ошибки на сервер</button>
|
||||
<button class="text-btn" type="button" id="settings-app-log">Лог приложения</button>
|
||||
<button class="text-btn" type="button" id="settings-pwa-diagnostics">Диагностика PWA / Push</button>
|
||||
<button class="text-btn" type="button" id="settings-pwa-install">Как установить PWA</button>
|
||||
@@ -237,6 +273,7 @@ export function render({ navigate }) {
|
||||
const uploadAvatarBtn = card.querySelector('#settings-upload-avatar');
|
||||
const forceUpdateBtn = card.querySelector('#settings-force-ui-update');
|
||||
const forceUpdateHelpBtn = card.querySelector('#settings-force-update-help');
|
||||
const uiErrorReportingBtn = card.querySelector('#settings-ui-error-reporting');
|
||||
|
||||
appLogBtn?.addEventListener('click', () => navigate('app-log-view'));
|
||||
diagnosticsBtn?.addEventListener('click', () => navigate('pwa-diagnostics-view'));
|
||||
@@ -248,6 +285,7 @@ export function render({ navigate }) {
|
||||
});
|
||||
});
|
||||
forceUpdateHelpBtn?.addEventListener('click', showClientUpdateHelp);
|
||||
uiErrorReportingBtn?.addEventListener('click', openUiErrorReportingModal);
|
||||
|
||||
forceUpdateBtn?.addEventListener('click', async () => {
|
||||
forceUpdateBtn.disabled = true;
|
||||
|
||||
Reference in New Issue
Block a user