vk-io icon indicating copy to clipboard operation
vk-io copied to clipboard

enterHandler для сцен срабатывает всегда

Open DZ8540 opened this issue 2 years ago • 3 comments
trafficstars

What did you do?

Установил enterHandler для сцен

new StepScene('sceneName', { 
  steps,

  enterHandler() {
    console.log('HERE')
  }

What did you expect to happen?

Ожидал, что хендлер сработает лишь один раз, при входе в сцену

What was the actual result?

Вместо этого консоль выводит HERE при каждой отправке сообщения от пользователя, как будто установилась обычная мидлвара для сцены

Versions

package version
vk-io 4.7.0
@vk-io/scenes 1.2.0

DZ8540 avatar Feb 25 '23 11:02 DZ8540

Хорошее замечание. Первоначально так и было задумано, можно проверить условие и выйти из сцены до запуска обработчиков например. Хотя наверное стоит переименовать обработчик на beforeEnterHandler и ввести новый enterHandler который вызывается ровно один раз.

negezor avatar Feb 25 '23 11:02 negezor

Хорошее замечание. Первоначально так и было задумано, можно проверить условие и выйти из сцены до запуска обработчиков например. Хотя наверное стоит переименовать обработчик на beforeEnterHandler и ввести новый enterHandler который вызывается ровно один раз.

Было бы не плохо ввести именно enterHandler метод, который и подразумевает под собой единоразовый запуск (только при входе в сцену), потому что каждую мидлвару так костылить я думаю так себе идея

А еще лучше, если бы можно было передавать туда массив хендлеров, который сработают лишь один раз

DZ8540 avatar Feb 25 '23 11:02 DZ8540

Остаётся только подумать что делать с silent режимом при входе в сцену (отложенный запуск до следующего сообщения), а вот массив обработчиков уже не очень понятно. Туда нужно добавлять либо новую цепочку middleware или просто устроить гонку состояния.

negezor avatar Feb 25 '23 11:02 negezor