A user should be able to "take" a question and reserve it for themselves for a limited period of time, much like we do with editing the KB. Questions that have been taken won't show up in question lists on the site, and in the API the taken status will be visible and filterable. The goal here is to prevent people from wasting time on answering a question that another user is already answering. If a user clicks on a question that became taken after they viewed the list they clicked from, there should be a warning displayed, but the user should still be able to interact with the question.
Note: This should also allow filtering by taken/untaken bugs, and modify the default search filtering for questions to only untaken bugs.
We'll need the server to tell us when helper A answers on a question taken by helper B. For phase 1, we'll display the error message only after helper A tried to answer.
Writing this here mainly so I don't forget. Some systems, like Bugzilla (I think) use a last-modified value when the client submits to avoid mid-air collisions. We could do something like this, using the most recent answer id or a time stamp from the question as the midair collision modifier. Alternatively, we could raise the midair collision modifier if the question is locked by another user. This would be easier, and put less of a workload on the client to ensure "correct" behavior. I also just realized that since the client will send the "take" message when the input is focused, we should be able to respond to that with 409 conflict as well, giving early notice to the user that there is a user already answering the question.
Whiteboard: u=contributor c=kb p=2 s= → u=contributor c=kb p=2 s=2014.21
Priority: -- → P2
Target Milestone: --- → 2014Q4
Status: NEW → ASSIGNED
Deployed to prod. https://github.com/mozilla/kitsune/commit/b0924af4402659b835b3be88de353db7771c9967
Status: ASSIGNED → RESOLVED
Last Resolved: 3 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.