Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Make breaking channel hierarchy changes #960

Merged
merged 17 commits into from
Sep 27, 2021

Conversation

darichey
Copy link
Member

Description:
Following #959, remove deprecated methods and make breaking changes in preparation for threads. These changes are summarized by the following class diagrams.

Changes in this PR (3.3.0)

channel hierarchy-3 3 0 (diff) (1)

Final (3.3.0)

This is exactly the same as the one above, except the diff information has been removed and things have been rearranged more nicely.
channel hierarchy-3 3 0
Now, ThreadChannel can implement GuildMessageChannel.


This PR also moves almost all of the channel method implementations to the interfaces themselves as default methods. This makes the diff quite large, but I found this to be the easiest way to implement the required changes. Specifically, getEffectivePermissions is now "actually" abstract, in that it will have a different implementation for different channel types. None of the other channel methods are like this. They are abstract only to enable code sharing. This "actually abstract" method broke our previous strategy of BaseXChannel delegate classes, because they can't be instantiated anymore.

@darichey darichey added area/core Related to core module: events, entities, clients, specs PR depends on PR Another PR must be merged before this one API change Breaks public API in x.y releases, needs migration docs labels Jul 11, 2021
@darichey darichey added this to the 3.3.0 milestone Jul 11, 2021
@darichey
Copy link
Member Author

For now, this is based on change/channel-hierarchy to make the diff easier to read. Once that is merged (and 3.3.0 development has started), the base will change to master.

@darichey darichey marked this pull request as draft July 11, 2021 07:22
@darichey darichey mentioned this pull request Jul 11, 2021
6 tasks
Base automatically changed from change/channel-hierarchy to master July 28, 2021 02:41
@quanticc quanticc removed the PR depends on PR Another PR must be merged before this one label Aug 31, 2021
@quanticc quanticc marked this pull request as ready for review September 27, 2021 00:09
Copy link
Member

@quanticc quanticc left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👀

@quanticc quanticc merged commit 2e65ce8 into master Sep 27, 2021
@quanticc quanticc deleted the change/channel-hierarchy-breaking branch September 27, 2021 00:37
@NovaFox161 NovaFox161 mentioned this pull request Sep 27, 2021
8 tasks
skykatik pushed a commit to skykatik/Discord4J that referenced this pull request Oct 3, 2021
* Modify channel hierarchy in preparation for threads

* Use 'TopLevel' names instead of temp names, remove duplicate docs

* Add deprecation docs

* Add class docs

* Make CategorizableChannel extend TopLevelGuildChannel

* Make breaking channel hierarchy changes

* (Re)move methods deprecated in preparation for threads
* Move most base channel method implementations to default methods
* Remove most base channel classes

* Don't deprecate GuildChannel#getEffectivePermissions

* Remove BaseTopLevelGuildChannel, add license headers, docs

* Remove unused imports

* Remove unused imports

Co-authored-by: quanticc <abarcab.ivan@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
API change Breaks public API in x.y releases, needs migration docs area/core Related to core module: events, entities, clients, specs
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

2 participants