Git Product home page Git Product logo

quack's People

Contributors

chauthai avatar cjavdev avatar djwy avatar jacknoble avatar rorysaur avatar satishkunisi avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

quack's Issues

We should store user config settings

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.

POLL: Default Command Character

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?

Edit previous comment

: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.

Fix duplicate key issue

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.

Still using Firebase?

The readme says the project uses Firebase. Is this still true? I thought the reason behind switching to Phoenix was to get off Firebase.

Messages should belong to users

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.

We're going to want multiple channels

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.

Timestamp presenter

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?

The backend

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.

CSS

Make it not look like shit

Messages are going to need to scroll

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.

typing the command character brings up a list of valid commands

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.

/me

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.

Add PMs between users.

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.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.