From 5ed2eb8ee0639fa4965e2f0945063b8ac20b1ba0 Mon Sep 17 00:00:00 2001 From: Sergio Date: Sun, 27 Dec 2020 23:33:32 +0100 Subject: [PATCH] Call the fallback and the conversation handler also for other types of media --- src/Zanzara/Listener/ListenerResolver.php | 51 +++++++++++------------ 1 file changed, 25 insertions(+), 26 deletions(-) diff --git a/src/Zanzara/Listener/ListenerResolver.php b/src/Zanzara/Listener/ListenerResolver.php index 4e39af7..ecb2506 100644 --- a/src/Zanzara/Listener/ListenerResolver.php +++ b/src/Zanzara/Listener/ListenerResolver.php @@ -64,42 +64,41 @@ public function resolveListeners(Update $update): PromiseInterface case Message::class: $text = $update->getMessage()->getText(); - if ($text) { - $chatId = $update->getEffectiveChat()->getId(); - $this->conversationManager->getConversationHandler($chatId) - ->then(function ($handlerInfo) use ($chatId, $text, $deferred, &$listeners) { - if (!$handlerInfo) { + $chatId = $update->getEffectiveChat()->getId(); + $this->conversationManager->getConversationHandler($chatId) + ->then(function ($handlerInfo) use ($chatId, $text, $deferred, &$listeners) { + if (!$handlerInfo) { + if ($text) { $this->findListenerAndPush($listeners, 'messages', $text); - $deferred->resolve($listeners); - return; + } elseif ($this->fallbackListener) { + $listeners[] = $this->fallbackListener; } + $deferred->resolve($listeners); + return; + } + + $skipListeners = $handlerInfo[1]; - $skipListeners = $handlerInfo[1]; - if ($skipListeners) { + if (!$skipListeners && $text) { + $listener = $this->findListenerAndPush($listeners, 'messages', $text); + if (!$listener) { $listeners[] = new Listener($handlerInfo[0], $this->container); } else { - $listener = $this->findListenerAndPush($listeners, 'messages', $text); - if (!$listener) { - $listeners[] = new Listener($handlerInfo[0], $this->container); - } else { - $this->conversationManager->deleteConversationCache($chatId); - } + $this->conversationManager->deleteConversationCache($chatId); } - - $deferred->resolve($listeners); - })->otherwise(function ($e) use ($deferred) { - // if something goes wrong, reject the promise - $deferred->reject($e); - }); - - } else { - $deferred->resolve($listeners); - } + } else { + $listeners[] = new Listener($handlerInfo[0], $this->container); + } + + $deferred->resolve($listeners); + })->otherwise(function ($e) use ($deferred) { + // if something goes wrong, reject the promise + $deferred->reject($e); + }); break; default: $deferred->resolve($listeners); - } return $deferred->promise();