-
-
Notifications
You must be signed in to change notification settings - Fork 14
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
Add cabal-client implementation #11
Merged
Merged
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
cblgh
changed the title
wip: cabal-client implementation
Add cabal-client implementation
Aug 17, 2019
Is the |
hackergrrl
reviewed
Aug 18, 2019
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Great work! 🎉
not really tbh haha |
Closed
Last thing that remains: Documentation!I'll take care of that later tonight :') |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
This pr implements a new type of client library for cabal (chat) clients.
The goal: new chat clients can now be implemented using only this library, without having to mess around with
cabal-core
itself.It got rolling with @lykkin's help, where we paired on various parts and then i took it to the finish line.
Things which this library makes possible:
!status
channel)It has three core abstractions:
Client
,CabalDetails
andChannelDetails
.Client
is the entrypoint. It has a list ofCabalDetails
(onedetails
for each joined cabal) as well as an API for interacting with a cabal (getting a count of the new messages for a channel, the joined channels for the current peer etc).CabalDetails
is the instance that clients mostly operate on, as it encapsulates all information for a particular cabal. (joined channels, users in that channel, the topic). It also emits events.When a change has happened, a
CabalDetails
instance will callthis._emitUpdate()
. When a client receives this event, they should update their state & rerender. (Check out how the cli does it.)ChannelDetails
encapsulates everything channels (mentions in that channel, status messages for the channel (like having called a command eg/names
, when it was last read, if it's currently being viewed, if it's joined and so on). It also has a barebones implementation for virtual channels, which currently is only the!status
channel.