Draft - Adding matchmaker callback for advanced filtering #727
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Summary
Enables the option to pass a filter callback when defining a room in Colyseus.
DRAFT - Awaiting code review and approval.
TODO - Unit tests.
Author Code-Review Questions Questions
The following questions are also noted as inline comments in the code.
findOne
method and theQuery
class. This seemed like a minimally intrusive approach, but I considered the new value could be added to the IRoomListingData interface, which is passed as a partial.Changes
/MatchMater.ts
filterCallback
tofindOne
method inawaitRoomAvailable
/matchmaker/RegisteredHandler.ts
filterCallback
from server define if provided, usesnull
if not provided./matchmaker/driver/Query.ts
filterCallback
if it is defined.filterCallback
is null, use existing behavior.filterCallback
is defined, first manually checklocked
,name
andprivate
.locked
,name
andprivate
pass, provide instance options and room options tofilterCallback
.filterCallback
returns strict boolean false, return false for this room filter check./matchmaker/driver/index.ts
filterMethod
as a property toQuery
method whenFindOne
method is called./matchmaker/driver/interfaces.ts
filterMethod
as an optional property to thefindOne
interface.FilterMethod
as function withclientOptions
androomOptions
optional properties, that returns strict boolean, or null.Intended implementation example