fix(flashcards): добавлен /api/ префикс в 12 вызовах LS.api
LS.api = apiFetch — принимает полный путь без автодобавления /api/. Все 12 вызовов исправлены: /flashcards/... → /api/flashcards/... Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
+12
-12
@@ -407,8 +407,8 @@ async function init() {
|
||||
|
||||
async function loadDecks() {
|
||||
const [decks, stats] = await Promise.all([
|
||||
LS.api('/flashcards/decks').catch(()=>({decks:[]})),
|
||||
LS.api('/flashcards/stats').catch(()=>null),
|
||||
LS.api('/api/flashcards/decks').catch(()=>({decks:[]})),
|
||||
LS.api('/api/flashcards/stats').catch(()=>null),
|
||||
]);
|
||||
_decks = decks.decks || [];
|
||||
renderStats(stats);
|
||||
@@ -483,7 +483,7 @@ async function openDeck(id) {
|
||||
_curDeck = _decks.find(d => d.id === id);
|
||||
if (!_curDeck) return;
|
||||
document.getElementById('cards-deck-title').textContent = _curDeck.title;
|
||||
const data = await LS.api(`/flashcards/decks/${id}/cards`).catch(()=>({cards:[]}));
|
||||
const data = await LS.api(`/api/flashcards/decks/${id}/cards`).catch(()=>({cards:[]}));
|
||||
_cards = data.cards || [];
|
||||
renderCardList();
|
||||
document.getElementById('view-decks').style.display = 'none';
|
||||
@@ -547,7 +547,7 @@ async function addCard() {
|
||||
const front = document.getElementById('new-card-front').value.trim();
|
||||
const back = document.getElementById('new-card-back').value.trim();
|
||||
if (!front && !back) return;
|
||||
const card = await LS.api(`/flashcards/decks/${_curDeck.id}/cards`, {
|
||||
const card = await LS.api(`/api/flashcards/decks/${_curDeck.id}/cards`, {
|
||||
method: 'POST', body: JSON.stringify({ front, back })
|
||||
}).catch(()=>null);
|
||||
if (!card) return;
|
||||
@@ -566,14 +566,14 @@ async function saveCard(id, field, value) {
|
||||
const card = _cards.find(c => c.id === id);
|
||||
if (!card) return;
|
||||
card[field] = value;
|
||||
await LS.api(`/flashcards/cards/${id}`, {
|
||||
await LS.api(`/api/flashcards/cards/${id}`, {
|
||||
method: 'PUT', body: JSON.stringify({ [field]: value })
|
||||
}).catch(()=>{});
|
||||
}
|
||||
|
||||
async function deleteCard(id) {
|
||||
if (!confirm('Удалить карточку?')) return;
|
||||
await LS.api(`/flashcards/cards/${id}`, { method: 'DELETE' }).catch(()=>{});
|
||||
await LS.api(`/api/flashcards/cards/${id}`, { method: 'DELETE' }).catch(()=>{});
|
||||
_cards = _cards.filter(c => c.id !== id);
|
||||
renderCardList();
|
||||
}
|
||||
@@ -594,7 +594,7 @@ async function saveBulk() {
|
||||
return { front: (front||'').trim(), back: rest.join(sep).trim() };
|
||||
}).filter(c => c.front);
|
||||
if (!cards.length) return;
|
||||
const result = await LS.api(`/flashcards/decks/${_curDeck.id}/cards/bulk`, {
|
||||
const result = await LS.api(`/api/flashcards/decks/${_curDeck.id}/cards/bulk`, {
|
||||
method: 'POST', body: JSON.stringify({ cards })
|
||||
}).catch(()=>null);
|
||||
if (result?.inserted) {
|
||||
@@ -618,7 +618,7 @@ async function startStudy() {
|
||||
async function startStudyForDeck(deckId) {
|
||||
_curDeck = _curDeck || _decks.find(d => d.id === deckId);
|
||||
if (!_curDeck) return;
|
||||
const data = await LS.api(`/flashcards/decks/${deckId}/study`).catch(()=>null);
|
||||
const data = await LS.api(`/api/flashcards/decks/${deckId}/study`).catch(()=>null);
|
||||
if (!data || !data.cards?.length) {
|
||||
LS.toast('Нет карточек для повторения — всё актуально!', 'success');
|
||||
return;
|
||||
@@ -693,7 +693,7 @@ async function answer(quality) {
|
||||
else if (quality === 4) _sessionStats.good++;
|
||||
else if (quality === 5) _sessionStats.easy++;
|
||||
// send review
|
||||
await LS.api(`/flashcards/cards/${card.id}/review`, {
|
||||
await LS.api(`/api/flashcards/cards/${card.id}/review`, {
|
||||
method: 'POST', body: JSON.stringify({ quality })
|
||||
}).catch(()=>{});
|
||||
// animate swipe
|
||||
@@ -826,7 +826,7 @@ async function saveDeckModal() {
|
||||
const desc = document.getElementById('modal-deck-desc').value.trim();
|
||||
if (!title) { document.getElementById('modal-deck-name').focus(); return; }
|
||||
if (_editingDeckId) {
|
||||
await LS.api(`/flashcards/decks/${_editingDeckId}`, {
|
||||
await LS.api(`/api/flashcards/decks/${_editingDeckId}`, {
|
||||
method: 'PUT', body: JSON.stringify({ title, description: desc, color: _deckColor })
|
||||
}).catch(()=>{});
|
||||
_curDeck.title = title; _curDeck.description = desc; _curDeck.color = _deckColor;
|
||||
@@ -834,7 +834,7 @@ async function saveDeckModal() {
|
||||
const d = _decks.find(x => x.id === _editingDeckId);
|
||||
if (d) { d.title = title; d.description = desc; d.color = _deckColor; }
|
||||
} else {
|
||||
const deck = await LS.api('/flashcards/decks', {
|
||||
const deck = await LS.api('/api/flashcards/decks', {
|
||||
method: 'POST', body: JSON.stringify({ title, description: desc, color: _deckColor })
|
||||
}).catch(()=>null);
|
||||
if (deck) { _decks.unshift(deck); renderDecks(); }
|
||||
@@ -845,7 +845,7 @@ async function saveDeckModal() {
|
||||
async function confirmDeleteDeck() {
|
||||
if (!_curDeck) return;
|
||||
if (!await LS.confirm(`Удалить колоду «${_curDeck.title}» и все карточки?`, { title: 'Удаление колоды', confirmText: 'Удалить', danger: true })) return;
|
||||
await LS.api(`/flashcards/decks/${_curDeck.id}`, { method: 'DELETE' }).catch(()=>{});
|
||||
await LS.api(`/api/flashcards/decks/${_curDeck.id}`, { method: 'DELETE' }).catch(()=>{});
|
||||
_decks = _decks.filter(d => d.id !== _curDeck.id);
|
||||
_curDeck = null; _cards = [];
|
||||
showDecks();
|
||||
|
||||
Reference in New Issue
Block a user