save score

This commit is contained in:
2026-06-14 23:04:23 +03:00
parent 43defa4103
commit 7745bb2614
3 changed files with 54 additions and 3 deletions
-2
View File
@@ -1,5 +1,3 @@
import DbWorker from './db-worker.ts?worker';
// ----- Прокси к Worker ----- // ----- Прокси к Worker -----
let worker: Worker | null = null; let worker: Worker | null = null;
+10
View File
@@ -103,6 +103,16 @@ export class TrainingPage {
const word = this.words.find((w) => w.id === result.word.id); const word = this.words.find((w) => w.id === result.word.id);
if (!word) return; if (!word) return;
// Обновляем дату последнего открытия в БД
const stat = this.cardSet.set[this.cardSet.currentWordIndex!];
if (stat) {
const now = Math.floor(Date.now() / 1000);
stat.last_open = Date.now(); // обновляем в памяти из алгоритма
updateCardStat(stat.id, stat.score, now).catch((err) =>
console.error('[Training] Ошибка сохранения last_opened:', err),
);
}
this.renderSide(word, this.forwardFields, this.backwardFields, false); this.renderSide(word, this.forwardFields, this.backwardFields, false);
this.renderActions(false); this.renderActions(false);
} }
+44 -1
View File
@@ -1,8 +1,51 @@
import { defineConfig } from 'vite'; import { defineConfig } from 'vite';
import basicSsl from '@vitejs/plugin-basic-ssl'; // npm i -D @vitejs/plugin-basic-ssl import basicSsl from '@vitejs/plugin-basic-ssl'; // npm i -D @vitejs/plugin-basic-ssl
import { VitePWA } from 'vite-plugin-pwa';
export default defineConfig({ export default defineConfig({
plugins: [basicSsl()], // Добавит локальный HTTPS plugins: [basicSsl(),
VitePWA({
registerType: 'autoUpdate', // Автоматически обновлять SW при изменении кода
includeAssets: ['favicon.ico', 'apple-touch-icon.png', 'masked-icon.svg'],
manifest: {
name: 'Мое PWA Приложение',
short_name: 'Моё PWA',
description: 'Описание моего приложения, работающего оффлайн',
theme_color: '#ffffff',
background_color: '#ffffff',
display: 'standalone', // Важно для открытия без интерфейса браузера
scope: '/',
start_url: '/',
// Иконки обязательны для iOS и Android. Минимум 192x192 и 512x512
icons: [
{
src: 'pwa-192x192.png',
sizes: '192x192',
type: 'image/png'
},
{
src: 'pwa-512x512.png',
sizes: '512x512',
type: 'image/png'
},
{
src: 'pwa-512x512.png',
sizes: '512x512',
type: 'image/png',
purpose: 'any maskable' // Для адаптивных иконок Android
}
]
},
workbox: {
// Стратегия кэширования для оффлайн-работы
globPatterns: ['**/*.{js,css,html,ico,png,svg,woff2}'],
// Если пользователь оффлайн и переходит по роуту, отдаем index.html
navigateFallback: '/index.html',
// Игнорируем запросы к API или внешним ресурсам, если они не должны кэшироваться
navigateFallbackDenylist: [/^\/api\//],
}
})
], // Добавит локальный HTTPS
build: { build: {
target: 'esnext', target: 'esnext',