From 2834ffe37317267b620f7443626f1648a33ecba4 Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Sat, 25 Mar 2023 16:03:48 -0400 Subject: [PATCH 1/9] Minor code cleanup Made some readability changes and moved the resolved/reject handling code into functions outside of the Deferred constructor --- src/Discord/Discord.php | 35 +++++++++++++++-------------------- 1 file changed, 15 insertions(+), 20 deletions(-) diff --git a/src/Discord/Discord.php b/src/Discord/Discord.php index e86240a76..67348540f 100644 --- a/src/Discord/Discord.php +++ b/src/Discord/Discord.php @@ -772,9 +772,9 @@ protected function handleDispatch(object $data): void $handler = new $hData['class']($this); $deferred = new Deferred(); - $deferred->promise()->done(function ($d) use ($data, $hData) { - if (is_array($d) && count($d) == 2) { - list($new, $old) = $d; + $onResolve = function ($d) use ($data, $hData) { + if (is_array($d) && count($d) === 2) { + [$new, $old] = $d; } else { $new = $d; $old = null; @@ -786,34 +786,29 @@ protected function handleDispatch(object $data): void $this->emit($alternative, [$d, $this]); } - if ($data->t == Event::MESSAGE_CREATE && mentioned($this->client->user, $new)) { + if ($data->t === Event::MESSAGE_CREATE && mentioned($this->client->user, $new)) { $this->emit('mention', [$new, $this, $old]); } - }, function ($e) use ($data) { + }; + + $onReject = function ($e) use ($data) { if ($e instanceof \Error) { throw $e; - } elseif ($e instanceof \Exception) { + } + + if ($e instanceof \Exception) { $this->logger->error('exception while trying to handle dispatch packet', ['packet' => $data->t, 'exception' => $e]); } else { $this->logger->warning('rejection while trying to handle dispatch packet', ['packet' => $data->t, 'rejection' => $e]); } - }); + }; - $parse = [ - Event::GUILD_CREATE, - Event::GUILD_DELETE, - ]; + $promise = coroutine([$handler, 'handle'], $data->d); - if (! $this->emittedInit && (! in_array($data->t, $parse))) { - $this->unparsedPackets[] = function () use (&$handler, &$deferred, &$data) { - /** @var ExtendedPromiseInterface */ - $promise = coroutine([$handler, 'handle'], $data->d); - $promise->done([$deferred, 'resolve'], [$deferred, 'reject']); - }; + if (! $this->emittedInit && ! in_array($data->t, [Event::GUILD_CREATE, Event::GUILD_DELETE])) { + $this->unparsedPackets[] = fn() => $promise->done($onResolve, $onReject); } else { - /** @var ExtendedPromiseInterface */ - $promise = coroutine([$handler, 'handle'], $data->d); - $promise->done([$deferred, 'resolve'], [$deferred, 'reject']); + $promise->done($onResolve, $onReject); } } From 93bad4d75fbb6303317ee340bc55ef423d06d738 Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Sat, 25 Mar 2023 16:07:04 -0400 Subject: [PATCH 2/9] Update Discord.php --- src/Discord/Discord.php | 1 - 1 file changed, 1 deletion(-) diff --git a/src/Discord/Discord.php b/src/Discord/Discord.php index 67348540f..146a6a534 100644 --- a/src/Discord/Discord.php +++ b/src/Discord/Discord.php @@ -771,7 +771,6 @@ protected function handleDispatch(object $data): void /** @var Event */ $handler = new $hData['class']($this); - $deferred = new Deferred(); $onResolve = function ($d) use ($data, $hData) { if (is_array($d) && count($d) === 2) { [$new, $old] = $d; From 46722557422a965ec25b1468f08cf1ca3deb720c Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Sat, 25 Mar 2023 16:24:36 -0400 Subject: [PATCH 3/9] Update Discord.php --- src/Discord/Discord.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/src/Discord/Discord.php b/src/Discord/Discord.php index 146a6a534..f33ad5588 100644 --- a/src/Discord/Discord.php +++ b/src/Discord/Discord.php @@ -802,10 +802,16 @@ protected function handleDispatch(object $data): void } }; + $parse = [ + Event::GUILD_CREATE, + Event::GUILD_DELETE + ]; $promise = coroutine([$handler, 'handle'], $data->d); - - if (! $this->emittedInit && ! in_array($data->t, [Event::GUILD_CREATE, Event::GUILD_DELETE])) { - $this->unparsedPackets[] = fn() => $promise->done($onResolve, $onReject); + + if (! $this->emittedInit && ! in_array($data->t, $parse)) { + $this->unparsedPackets[] = function () use (&$handler, &$deferred, &$data) { + $promise->done(&$onResolve], &$onReject); + }; } else { $promise->done($onResolve, $onReject); } From d0517dde0c8b4a332614426ca4077c46cf8ac55c Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Sat, 25 Mar 2023 16:25:25 -0400 Subject: [PATCH 4/9] Update Discord.php --- src/Discord/Discord.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord/Discord.php b/src/Discord/Discord.php index f33ad5588..54f829069 100644 --- a/src/Discord/Discord.php +++ b/src/Discord/Discord.php @@ -804,7 +804,7 @@ protected function handleDispatch(object $data): void $parse = [ Event::GUILD_CREATE, - Event::GUILD_DELETE + Event::GUILD_DELETE, ]; $promise = coroutine([$handler, 'handle'], $data->d); From b4439b119817dae7116a6a557f8cb4a72749f82e Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Sat, 25 Mar 2023 16:25:58 -0400 Subject: [PATCH 5/9] Update Discord.php --- src/Discord/Discord.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord/Discord.php b/src/Discord/Discord.php index 54f829069..c6bb61290 100644 --- a/src/Discord/Discord.php +++ b/src/Discord/Discord.php @@ -809,7 +809,7 @@ protected function handleDispatch(object $data): void $promise = coroutine([$handler, 'handle'], $data->d); if (! $this->emittedInit && ! in_array($data->t, $parse)) { - $this->unparsedPackets[] = function () use (&$handler, &$deferred, &$data) { + $this->unparsedPackets[] = function () use (&$deferred, &$data) { $promise->done(&$onResolve], &$onReject); }; } else { From 5a3c1e14c0dc019aa1500ecd0fbd470935d79d17 Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Sat, 25 Mar 2023 16:28:33 -0400 Subject: [PATCH 6/9] Update Discord.php --- src/Discord/Discord.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord/Discord.php b/src/Discord/Discord.php index c6bb61290..b3ad227c3 100644 --- a/src/Discord/Discord.php +++ b/src/Discord/Discord.php @@ -810,7 +810,7 @@ protected function handleDispatch(object $data): void if (! $this->emittedInit && ! in_array($data->t, $parse)) { $this->unparsedPackets[] = function () use (&$deferred, &$data) { - $promise->done(&$onResolve], &$onReject); + $promise->done(&$onResolve, &$onReject); }; } else { $promise->done($onResolve, $onReject); From f6c4e52e16d268273dd6f148a5d3e816ead8ab38 Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Sat, 25 Mar 2023 16:30:15 -0400 Subject: [PATCH 7/9] Update Discord.php --- src/Discord/Discord.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord/Discord.php b/src/Discord/Discord.php index b3ad227c3..26d2ec480 100644 --- a/src/Discord/Discord.php +++ b/src/Discord/Discord.php @@ -809,7 +809,7 @@ protected function handleDispatch(object $data): void $promise = coroutine([$handler, 'handle'], $data->d); if (! $this->emittedInit && ! in_array($data->t, $parse)) { - $this->unparsedPackets[] = function () use (&$deferred, &$data) { + $this->unparsedPackets[] = function () use (&$onResolve, &$onReject) { $promise->done(&$onResolve, &$onReject); }; } else { From 546d83da67d345efbc400bdabb079d35c94e542e Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Sat, 25 Mar 2023 16:36:20 -0400 Subject: [PATCH 8/9] Update Discord.php --- src/Discord/Discord.php | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Discord/Discord.php b/src/Discord/Discord.php index 26d2ec480..f11a5a3c4 100644 --- a/src/Discord/Discord.php +++ b/src/Discord/Discord.php @@ -806,13 +806,14 @@ protected function handleDispatch(object $data): void Event::GUILD_CREATE, Event::GUILD_DELETE, ]; - $promise = coroutine([$handler, 'handle'], $data->d); if (! $this->emittedInit && ! in_array($data->t, $parse)) { - $this->unparsedPackets[] = function () use (&$onResolve, &$onReject) { + $this->unparsedPackets[] = function () use (&$onResolve, &$onReject, &$data) { + $promise = coroutine([$handler, 'handle'], $data->d); $promise->done(&$onResolve, &$onReject); }; } else { + $promise = coroutine([$handler, 'handle'], $data->d); $promise->done($onResolve, $onReject); } } From e19962f8d0eba65dd2ad5b14305c373f10434883 Mon Sep 17 00:00:00 2001 From: Valithor Obsidion Date: Sat, 25 Mar 2023 16:41:59 -0400 Subject: [PATCH 9/9] Forgot to use $handler --- src/Discord/Discord.php | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Discord/Discord.php b/src/Discord/Discord.php index f11a5a3c4..f93ecba1d 100644 --- a/src/Discord/Discord.php +++ b/src/Discord/Discord.php @@ -808,7 +808,7 @@ protected function handleDispatch(object $data): void ]; if (! $this->emittedInit && ! in_array($data->t, $parse)) { - $this->unparsedPackets[] = function () use (&$onResolve, &$onReject, &$data) { + $this->unparsedPackets[] = function () use (&$handler, &$onResolve, &$onReject, &$data) { $promise = coroutine([$handler, 'handle'], $data->d); $promise->done(&$onResolve, &$onReject); };