fix: 404 при обновлении, стрелки периода, фильтры в URL, авто-категории и очистка истории
- Nginx: проксирование /api на backend (единая точка входа) - История: стрелки ← → для переключения недель/месяцев/годов - История: сохранение фильтров и пагинации в URL при F5 - Импорт: миграция 003 — дефолтные правила категорий (PYATEROCHK, AUCHAN и др.) - Настройки: вкладка «Данные» с кнопкой «Очистить историю» - Backend: DELETE /api/transactions для удаления всех транзакций - ClearHistoryModal: подтверждение чекбоксами и вводом «УДАЛИТЬ»
This commit is contained in:
@@ -26,8 +26,16 @@ async function request<T>(url: string, options: RequestInit = {}): Promise<T> {
|
||||
});
|
||||
|
||||
if (res.status === 401) {
|
||||
onUnauthorized?.();
|
||||
throw new ApiException(401, { error: 'UNAUTHORIZED', message: 'Сессия истекла' });
|
||||
let body: ApiError;
|
||||
try {
|
||||
body = await res.json();
|
||||
} catch {
|
||||
body = { error: 'UNAUTHORIZED', message: 'Сессия истекла' };
|
||||
}
|
||||
if (!url.includes('/api/auth/login')) {
|
||||
onUnauthorized?.();
|
||||
}
|
||||
throw new ApiException(401, body);
|
||||
}
|
||||
|
||||
if (!res.ok) {
|
||||
@@ -59,4 +67,7 @@ export const api = {
|
||||
|
||||
patch: <T>(url: string, body: unknown) =>
|
||||
request<T>(url, { method: 'PATCH', body: JSON.stringify(body) }),
|
||||
|
||||
delete: <T>(url: string) =>
|
||||
request<T>(url, { method: 'DELETE' }),
|
||||
};
|
||||
|
||||
@@ -25,3 +25,7 @@ export async function updateTransaction(
|
||||
): Promise<Transaction> {
|
||||
return api.put<Transaction>(`/api/transactions/${id}`, data);
|
||||
}
|
||||
|
||||
export async function clearAllTransactions(): Promise<{ deleted: number }> {
|
||||
return api.delete<{ deleted: number }>('/api/transactions');
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user