Skip to content

fix(vue): unwrap пустого object/data в request.js - #466

Open
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-388-request-unwrap
Open

fix(vue): unwrap пустого object/data в request.js#466
Ibochkarev wants to merge 1 commit into
betafrom
fix/issue-388-request-unwrap

Conversation

@Ibochkarev

Copy link
Copy Markdown
Member

Описание

В request.js unwrap отбрасывал payload, если object был {} или data — пустым массивом (Object.keys().length / array.length > 0). Вместо inner payload callers получали connector envelope { success, message, … }. Гриды с проверкой response.results попадали в ветку «Invalid response» без error toast.

Добавлена функция unwrapResponsePayload(): при наличии ключа object/data с значением != null возвращается payload (включая {}, [], falsy scalar). Используется в request() и upload().

Тип изменений

  • Исправление бага (non-breaking change)
  • Новая функциональность (non-breaking change)
  • Breaking change (изменение, ломающее обратную совместимость)
  • Рефакторинг (без изменения функциональности)
  • Документация
  • Другое (опишите):

Связанные Issues

Closes #388

Refs #370

Как это было протестировано?

cd vueManager
npm run test:smoke   # exit 0, 10 tests
npm run lint:ci      # exit 0

CI job vue дополнен шагом npm run test:smoke.

  • Ручное тестирование (грид с пустым списком / processor-style ответ)
  • Автоматические тесты
  • Тестирование на разных версиях PHP/MODX

Конфигурация тестирования:

  • MiniShop3: branch fix/issue-388-request-unwrap
  • MODX: n/a (unit smoke)
  • PHP: n/a

Скриншоты (если применимо)

До После
envelope без .results, console.error payload {} / { results: [], total: 0 }

Чеклист

  • Код соответствует стилю проекта
  • Добавлены/обновлены комментарии в сложных местах (JSDoc контракт unwrap)
  • Изменения не ломают существующую функциональность (response.object || response совместим)
  • Лексиконы добавлены на двух языках — не требуется
  • PHPStan — PHP не затронут
  • ESLint проходит без ошибок
  • Обновлён CHANGELOG.md — по политике релиза

Дополнительные заметки

  • Ответы { success, message } без object/data (delete и т.п.) по-прежнему возвращают envelope — намеренно, чтобы не ломать void-операции.
  • Callers с if (response.results) при object: {} всё ещё покажут пустой грид и console.error; backend должен отдавать { results, total }.
  • Dedupe error-handling между request() и upload() — follow-up.

@Ibochkarev
Ibochkarev requested a review from biz87 July 28, 2026 05:53
@Ibochkarev Ibochkarev added bug Something isn't working javascript Pull requests that update javascript code priority: medium Средний приоритет labels Jul 28, 2026
@Ibochkarev
Ibochkarev force-pushed the fix/issue-388-request-unwrap branch from ac8b30b to a16e07c Compare July 29, 2026 02:05
Empty {} or [] payloads were falling through to the full success envelope,
so grid callers expecting .results saw Invalid response without a toast.
@Ibochkarev
Ibochkarev force-pushed the fix/issue-388-request-unwrap branch from a16e07c to 89ab5f5 Compare July 29, 2026 11:31
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

bug Something isn't working javascript Pull requests that update javascript code priority: medium Средний приоритет

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] request.js: пустой object/data маскирует success — callers видят Invalid response

1 participant