{"action":"created","issue":{"url":"https://api.github.com/repos/code-corps/code-corps-api/issues/1234","repository_url":"https://api.github.com/repos/code-corps/code-corps-api","labels_url":"https://api.github.com/repos/code-corps/code-corps-api/issues/1234/labels{/name}","comments_url":"https://api.github.com/repos/code-corps/code-corps-api/issues/1234/comments","events_url":"https://api.github.com/repos/code-corps/code-corps-api/issues/1234/events","html_url":"https://github.com/code-corps/code-corps-api/issues/1234","id":276134329,"number":1234,"title":"Project messaging","user":{"login":"begedin","id":1925540,"avatar_url":"https://avatars2.githubusercontent.com/u/1925540?v=4","gravatar_id":"","url":"https://api.github.com/users/begedin","html_url":"https://github.com/begedin","followers_url":"https://api.github.com/users/begedin/followers","following_url":"https://api.github.com/users/begedin/following{/other_user}","gists_url":"https://api.github.com/users/begedin/gists{/gist_id}","starred_url":"https://api.github.com/users/begedin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/begedin/subscriptions","organizations_url":"https://api.github.com/users/begedin/orgs","repos_url":"https://api.github.com/users/begedin/repos","events_url":"https://api.github.com/users/begedin/events{/privacy}","received_events_url":"https://api.github.com/users/begedin/received_events","type":"User","site_admin":false},"labels":[{"id":409365994,"url":"https://api.github.com/repos/code-corps/code-corps-api/labels/needs%20clarification","name":"needs clarification","color":"fbca04","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":{"url":"https://api.github.com/repos/code-corps/code-corps-api/milestones/22","html_url":"https://github.com/code-corps/code-corps-api/milestone/22","labels_url":"https://api.github.com/repos/code-corps/code-corps-api/milestones/22/labels","id":2931512,"number":22,"title":"Messaging","description":null,"creator":{"login":"begedin","id":1925540,"avatar_url":"https://avatars2.githubusercontent.com/u/1925540?v=4","gravatar_id":"","url":"https://api.github.com/users/begedin","html_url":"https://github.com/begedin","followers_url":"https://api.github.com/users/begedin/followers","following_url":"https://api.github.com/users/begedin/following{/other_user}","gists_url":"https://api.github.com/users/begedin/gists{/gist_id}","starred_url":"https://api.github.com/users/begedin/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/begedin/subscriptions","organizations_url":"https://api.github.com/users/begedin/orgs","repos_url":"https://api.github.com/users/begedin/repos","events_url":"https://api.github.com/users/begedin/events{/privacy}","received_events_url":"https://api.github.com/users/begedin/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":0,"state":"open","created_at":"2017-11-22T16:40:54Z","updated_at":"2017-11-22T16:40:54Z","due_on":null,"closed_at":null},"comments":2,"created_at":"2017-11-22T16:40:28Z","updated_at":"2017-12-05T03:51:04Z","closed_at":null,"author_association":"CONTRIBUTOR","body":"This task should be considered the start off point for specs and discussion about the project messaging feature.\n\nOur aim here is to have a basic system to allow users to message projects.\n\nFrom the UI point of view, something like this could do the trick:\n\n# Model\n\n- Initially, it can be as simple as user-to-user, where posting a message to a project simply posts to organization owner\n  - we need a sender, a recipient and a body field\n\n# Reaching the UI\n\n- We can add a link to the user dropdown, to reach the message inbox\n- 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\n\n# Message inbox\n\n- 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\n\n# Message thread\n\nThis is where we get to when starting a new message, or clicking an item in the message inbox. \n\nThis 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.\n\nThere'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. \n\nAt this point, we have something shippable, and also implementable in a couple of days. \n\nPast this point we can \n\n# Enhancements\n\n- support rendering of links in the message thread\n- add buttons to the project membership page next to each member, to allow project owner and potentially admins/collaborators message each other\n- add a similar button to each user's profile page\n- 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\n- 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.\n- privacy/do-not-disturb settings\n- add organization as a third recipient/sender option, if there's a need for it\n- plug notifications into it, once we have them\n \n"},"comment":{"url":"https://api.github.com/repos/code-corps/code-corps-api/issues/comments/349187243","html_url":"https://github.com/code-corps/code-corps-api/issues/1234#issuecomment-349187243","issue_url":"https://api.github.com/repos/code-corps/code-corps-api/issues/1234","id":349187243,"user":{"login":"joshsmith","id":321667,"avatar_url":"https://avatars3.githubusercontent.com/u/321667?v=4","gravatar_id":"","url":"https://api.github.com/users/joshsmith","html_url":"https://github.com/joshsmith","followers_url":"https://api.github.com/users/joshsmith/followers","following_url":"https://api.github.com/users/joshsmith/following{/other_user}","gists_url":"https://api.github.com/users/joshsmith/gists{/gist_id}","starred_url":"https://api.github.com/users/joshsmith/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/joshsmith/subscriptions","organizations_url":"https://api.github.com/users/joshsmith/orgs","repos_url":"https://api.github.com/users/joshsmith/repos","events_url":"https://api.github.com/users/joshsmith/events{/privacy}","received_events_url":"https://api.github.com/users/joshsmith/received_events","type":"User","site_admin":false},"created_at":"2017-12-05T03:51:04Z","updated_at":"2017-12-05T03:51:04Z","author_association":"CONTRIBUTOR","body":"The things I think we'll need to add UI-wise:\r\n\r\n- Project contributors list\r\n  - Photo, name, conversation button\r\n  - Remove skills from current UI\r\n\r\n#### Messages UI for projects\r\n\r\n- Left sidebar list of messages\r\n  - see photo, name, last message time\r\n\r\n- Center main area individual message\r\n  - show conversation parts\r\n    - photo\r\n    - body\r\n    - sent at\r\n    - read at / not seen yet\r\n  \r\n- Right sidebar user info\r\n  - photo\r\n  - name\r\n  - skills\r\n\r\n#### Messages UI for users\r\n\r\n- Left sidebar list of messages\r\n  - see photo, name, last message time\r\n\r\n- Center main area individual message\r\n  - show conversation parts\r\n    - photo\r\n    - body\r\n    - sent at\r\n    - read at / not seen yet\r\n\r\n- Right sidebar project info\r\n  - icon\r\n  - title\r\n  - skills\r\n\r\n- Update message conversation parts in realtime (channels)\r\n\r\n- Send email if not seen by user after 3 mins"}}
{"actor":{"display_login":"joshsmith"}}