repetition woks
This commit is contained in:
1 parent
37b3b61f79
commit
36d2c0b48f
15 files changed
+905
-185
No files matched your search
+5
-37
@@ -1,6 +1,5 @@
|
||||
// Страница «Синхронизация»: токен + Скачать/Выгрузить.
|
||||
// Страница «Синхронизация»: токен + Скачать.
|
||||
// Скачивание: GET /download/{id} -> zstd -> проверка SQLite -> запись в OPFS.
|
||||
// Выгрузка: следующий шаг (POST /upload/stream/{id}).
|
||||
|
||||
import {
|
||||
TOKEN_LENGTH,
|
||||
@@ -11,7 +10,7 @@ import {
|
||||
} from './token.ts';
|
||||
import { fetchBackupBytes } from './sync.ts';
|
||||
import { decompressBackup } from './zstd.ts';
|
||||
import { hasDatabaseFile, writeDatabaseFile } from './opfs.ts';
|
||||
import { writeDatabaseFile } from './opfs.ts';
|
||||
|
||||
export function renderSyncPage(root: HTMLElement): void {
|
||||
root.innerHTML = `
|
||||
@@ -40,8 +39,7 @@ export function renderSyncPage(root: HTMLElement): void {
|
||||
</div>
|
||||
|
||||
<div class="btn-row">
|
||||
<button id="btn-download" class="btn" type="button" disabled>📥 Скачать</button>
|
||||
<button id="btn-upload" class="btn btn-primary" type="button" disabled>📤 Выгрузить</button>
|
||||
<button id="btn-download" class="btn btn-primary" type="button" disabled>📥 Скачать</button>
|
||||
</div>
|
||||
|
||||
<p id="status" class="status-bar" role="status">Введите токен из 24 символов</p>
|
||||
@@ -52,7 +50,6 @@ export function renderSyncPage(root: HTMLElement): void {
|
||||
const tokenError = root.querySelector<HTMLElement>('#token-error')!;
|
||||
const tokenCounter = root.querySelector<HTMLElement>('#token-counter')!;
|
||||
const btnDownload = root.querySelector<HTMLButtonElement>('#btn-download')!;
|
||||
const btnUpload = root.querySelector<HTMLButtonElement>('#btn-upload')!;
|
||||
const statusEl = root.querySelector<HTMLElement>('#status')!;
|
||||
|
||||
function setStatus(msg: string): void {
|
||||
@@ -66,15 +63,7 @@ export function renderSyncPage(root: HTMLElement): void {
|
||||
|
||||
function setBusy(busy: boolean): void {
|
||||
btnDownload.disabled = busy || !isValidToken(currentToken());
|
||||
btnUpload.disabled = true;
|
||||
tokenInput.disabled = busy;
|
||||
if (!busy) {
|
||||
void hasDatabaseFile().then((has) => {
|
||||
if (!tokenInput.disabled && isValidToken(currentToken())) {
|
||||
btnUpload.disabled = !has;
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
function refreshUI(): void {
|
||||
@@ -93,13 +82,6 @@ export function renderSyncPage(root: HTMLElement): void {
|
||||
tokenError.textContent = ok ? '' : 'Только латинские буквы и цифры';
|
||||
}
|
||||
btnDownload.disabled = !ok;
|
||||
if (ok) {
|
||||
void hasDatabaseFile().then((has) => {
|
||||
if (!tokenInput.disabled) btnUpload.disabled = !has;
|
||||
});
|
||||
} else {
|
||||
btnUpload.disabled = true;
|
||||
}
|
||||
}
|
||||
|
||||
async function handleDownload(): Promise<void> {
|
||||
@@ -132,7 +114,7 @@ export function renderSyncPage(root: HTMLElement): void {
|
||||
tokenInput.value = token;
|
||||
if (isValidToken(token)) {
|
||||
saveToken(token);
|
||||
setStatus('Токен сохранён локально. Можно скачивать или выгружать.');
|
||||
setStatus('Токен сохранён локально. Можно скачивать.');
|
||||
}
|
||||
refreshUI();
|
||||
});
|
||||
@@ -141,26 +123,12 @@ export function renderSyncPage(root: HTMLElement): void {
|
||||
void handleDownload();
|
||||
});
|
||||
|
||||
btnUpload.addEventListener('click', () => {
|
||||
const token = currentToken();
|
||||
if (!isValidToken(token)) return;
|
||||
saveToken(token);
|
||||
setStatus('Выгрузка — следующий шаг (POST /upload/stream/{id}).');
|
||||
});
|
||||
|
||||
const saved = loadSavedToken();
|
||||
if (saved) {
|
||||
tokenInput.value = saved;
|
||||
}
|
||||
refreshUI();
|
||||
if (isValidToken(normalizeToken(saved))) {
|
||||
void hasDatabaseFile().then((has) => {
|
||||
setStatus(
|
||||
has
|
||||
? 'Токен восстановлен, локальная база на месте.'
|
||||
: 'Токен восстановлен. Нажми «Скачать», чтобы получить базу.',
|
||||
);
|
||||
refreshUI();
|
||||
});
|
||||
setStatus('Токен восстановлен. Нажми «Скачать», чтобы получить базу.');
|
||||
}
|
||||
}
|
||||
Reference in new issue
Block a user