-
Notifications
You must be signed in to change notification settings - Fork 85
Description
This task should be considered the start off point for specs and discussion about the project messaging feature.
Our aim here is to have a basic system to allow users to message projects.
From the UI point of view, something like this could do the trick:
Model
- Initially, it can be as simple as user-to-user, where posting a message to a project simply posts to organization owner
- we need a sender, a recipient and a body field
Reaching the UI
- We can add a link to the user dropdown, to reach the message inbox
- We can add a button to the project page to message a project - this opens the message thread UI and allows the current user to send a message to the project owner
Message inbox
- we get a list of users we had contact with in the sidebar, ordered by most recent on top. clicking any opens the message thread for that user, on the same page, in the main area next to the sidebar
Message thread
This is where we get to when starting a new message, or clicking an item in the message inbox.
This is basically a route which fetches all messages either sent by the recipient to the current user, or sent to the recipient by the current user, from oldest to newest. Potentially, we can list only the last X messages, and fetch more as we try to scroll up.
There's a new message form at the bottom, which can be as simple as a text area. It does not need to support markdown, or anything like that.
At this point, we have something shippable, and also implementable in a couple of days.
Past this point we can
Enhancements
- support rendering of links in the message thread
- add buttons to the project membership page next to each member, to allow project owner and potentially admins/collaborators message each other
- add a similar button to each user's profile page
- extend the message model to allow for project-to-user, user-to-project. Since ecto prefers flattened relationships instead of polymorphism, this can be easily built upon in iterations like this. That would mean the project message button now targets project
- give each message a "read" status. Sounds simple, but with user-to-project, we need to decide how to handle "reading" messages targeted at projects. Might want to merge it with notifications, once we have them, since they'll likely end up serving the same purpose in this context.
- privacy/do-not-disturb settings
- add organization as a third recipient/sender option, if there's a need for it
- plug notifications into it, once we have them