rorysaur / quack Goto Github PK
View Code? Open in Web Editor NEWlil bro of Slack, using React and Flux
lil bro of Slack, using React and Flux
needs #31
And expose some kind of read/write interface. This could include the command character, default nick, Maybe " config CommandChar / ". There could also be your typical form-based settings page.
So right now you start command messages (like changing your nick, editing the last message, eventually leaving, joining, switching tabs, #nomice) with :
.
We're going to enable escaping the command character with \
and changing your command character is already possible. But there is still the question of what the default should be.
Options:
(1) :
- Colon. The current command character. Advantages: just like vim. Disadvantages: have to escape for some emoticons.
(2) /
Forward-slash. Advantages: like most irc clients and other chat apps. Disadvantages: /s/spll/spell is sort of funny. Vim flow.
(3) - Other. What else would be good?
...and messages are stored with the username, and displayed with the user's display name.
we can hold off on requiring a password if it will be a lot more complex.
:s/text/newtext should edit your previous message so that "text" is replaced with "newtext". There should also be a small edited at timestamp added to the message.
Warning: flattenChildren(...): Encountered two children with the same key. Child keys must be unique; when two children share a key, only the first child will be used.
See Satish's explanation here #21 .
This is already like the third time we've had to make our code more complicated to accommodate Firebase's weird events. How are people feeling about continuing with it? I don't think it would take that much more work to roll our own backend. We need a document store with a WebSocket connection and an event listener. I still have a slight preference for Elixir or Clojure, but I'd be fine doing it in JS if people are more comfortable with that and don't want to be distracted from learning React.
redirect to /login if logged out.
after login, redirect to /
This will let us give notification about missed messages when a user logs on.
The readme says the project uses Firebase. Is this still true? I thought the reason behind switching to Phoenix was to get off Firebase.
e.g. "soandsoo has joined". Should be easy.
Separate from auth, we need basic user functionality as it relates to messages. Names should appear next to messages and be recorded with a sender_id.
e.g., /shrug
or :shrug
results in ¯\_(ツ)_/¯
/shrug i dunno.
results in i dunno. ¯\_(ツ)_/¯
e.g., :)
and an interface to handle them. I'm thinking some combination of tabs and tiling windows. :join channel_name should join/create a new channel and :leave should close the tab/window.
Or maybe everything should be a vim-like command? :nick
So I'd like to make the timestamp on messages look better. Ideally, it would show the time for recent messages and then the full date for older one with maybe a "Yesterday at" and a "Saturday at" for events from the current week. My instinct is to write a time presenter module which get called by the message presenter. I'm unsure if that is the right place though. In particular, if the message props don't get updated I don't think react updates the dom. So maybe the best way is to do the parsing in channel-messages and send the new timestamp as a prop to each message? Anyone have thoughts?
Not a priority but I'd like to have a conversation about using something other than firebase. Or using firebase as just bridge to a custom backend. I'm partial to http://www.phoenixframework.org/ for killer websocket support but could maybe talked into something else, clojure?.
Just feel like rolling our own is the #truepath.
move the message fixtures from app.js
into the MessageStore.
Make it not look like shit
The chat window needs to be a set size and old messages need to disappear as they are replaced by new ones. Instead of getting all the messages from the message store maybe it could just get the last few? But it seems like the actual measure is lines of text, not message count.
When rendering an array of components each component is supposed to have a unique "key" prop. See https://facebook.github.io/react/docs/multiple-components.html#dynamic-children.
typing the command character, without pressing enter, shows a list of valid commands, with a 1-line description or usage example. this list can be in a sidebar or an overlay. the list stays up as long as the command character is the only character in the input. it goes away if the input is cleared.
optional: make the commands list an autocomplete-- it gets filtered by continued input.
optional: if the command is "set", show a new list of valid things you can set, with description for each.
Typing /me
should result in the rest of the message getting displayed as "Nick rest of the message"
As in /me is excited about quack
should result in "Jack is excited about quack". Whether or not a message is such a description should be recorded as part of the message object and then channelmessages can figure out how to render them.
Conversations between two or more users should set up like any other channel so we can reuse the same logic. But you shouldn't be able to permanently unsubscribe from a pm conversation.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.