fix: устранить баги в проверке дублей и смене кодировки при импорте CSV

- Кэш проверки дублей не сбрасывался после импорта: повторный импорт
  того же файла в течение 30 секунд (staleTime) сверялся со списком
  транзакций, полученным ДО первого импорта, и не находил ни одного
  дубля — ровно тот случай, ради которого проверка и делалась.
- Кнопку импорта можно было нажать, пока проверка дублей ещё шла или
  шёл фоновый рефетч: дубли проходили мимо фильтра. Теперь кнопка
  заблокирована на время запроса, а его ошибка больше не проглатывается
  молча, а показывается предупреждением.
- Ручная смена кодировки ломала уже выбранные колонки: заголовки
  перечитывались, старый выбор указывал на несуществующее имя,
  indexOf давал -1, и все строки молча отбрасывались как «не удалось
  распознать дату». Маппинг переугадывается при изменении состава
  заголовков.
- Текст «Они не будут импортированы» противоречил включённой галочке
  «Всё равно импортировать их».
This commit is contained in:
ZProger
2026-09-10 20:16:00 +03:00
parent 777e3af725
commit eba8add92f
3 changed files with 65 additions and 17 deletions

View File

@@ -15,6 +15,11 @@ function useInvalidateAfterTransactionChange() {
const queryClient = useQueryClient();
return () => {
queryClient.invalidateQueries({ queryKey: ["transactions"] });
// Without this, a second CSV import of the same date range within
// staleTime (see main.tsx) would check for duplicates against a cached
// list from *before* the first import finished — and find none, which
// is exactly the case the duplicate check exists to catch.
queryClient.invalidateQueries({ queryKey: ["transactions-duplicate-check"] });
queryClient.invalidateQueries({ queryKey: ["transaction-years"] });
queryClient.invalidateQueries({ queryKey: ["dashboard-summary"] });
queryClient.invalidateQueries({ queryKey: ["net-worth-summary"] });