-
Notifications
You must be signed in to change notification settings - Fork 42
Description
User Story
As a journalist, I want to know at a glance which sources have unseen submissions, so that I can quickly identify new information that may require attention.
Justification
Seen/unseen status is a fundamental paradigm in messaging applications. The feature exists in the pre-workstation user experience (as a global status of messages and documents, internally referenced as is_downloaded
, and shown in the Journalist Interface UI as bolded/unbolded). User research has validated the need for similar functionality in the SecureDrop Client.
Mockup
(Design specification to come)
Terminology:
Source list: the panel on the left in the client view, which shows a list of sources by codename (e.g., "benign artichoke")
Conversation view: the panel on the right, which shows the messages, documents and replies for the currently selected source
Submissions: Messages or files sent by a SecureDrop source
Unseen submissions: Messages or files that have not been displayed in the conversation view of the SecureDrop Client, or downloaded via the Journalist Interface, by any user
Acceptance Criteria
Basic seen/unseen status and synchronization
Given that there are sources with unseen submissions on the server
When the client retrieves these submissions as part of a sync
And those sources are not actively selected
Then these sources should be displayed as unseen in the source list
Given that there is a source with unseen submissions on the client
And that all submissions from this source are marked as seen on the server
When the client synchronizes with the server
Then the source should be displayed as seen in the source list
Explanation: The information on the server is canonical; the same user may be connecting from more than one workstation.
Selecting a source with unseen submissions
Given that there is a source with unseen submissions on the client
When I select that source in the source list
Then the source should immediately be displayed as seen in the source list
And the client should record all the submissions from that source as seen by the logged in user
Explanation: Recording a change in the status implies a server-side API request followed by a client-side database update.
Error case
Given that there is a source with unseen submissions on the client
When I shut down the server while the client is running
And I select that source
Then the source should immediately be displayed as seen in the source list
And the client should keep retrying pending server operations indefinitely
And a generic network error should be displayed to the user until network access is restored
Explanation: We optimistically update the UI after the user selects a source, and keep retrying indefinitely if there's a network problem.
Offline usage
Given that there are sources with unseen submissions in the local client database
When I use the client in offline mode
Then all sources should be displayed in a read-only state (TBD) in the list source list
And seen/unseen status should not be modified as a result of my actions
Deleted journalist
Given that there is a source whose submissions have all been seen by a single journalist
When I delete that journalist user through the Admin Interface
Then the source should still be displayed as seen in the source list on the client after the next sync
Replies
Given that I have selected a source with unseen submissions and changed its status to seen
When I send a reply to that source
Then the source should continue to be displayed as seen in the source list
Explanation: Replies do not impact the seen/unseen status in the source list
Given that there is a source with no unseen submissions on the client
When another journalist sends a reply to that source
Then the source should continue to be displayed as seen in the source list after a sync
Explanation: As above, replies do not impact the seen/unseen status in the source list
Journalist Interface
Given that there is a source with unseen submissions on the server
When I initiate a download of these submissions via the web-based Journalist Interface
Then the source should be displayed as seen in the source list on the client after the next sync
Explanation: Downloading via the Journalist Interface counts as "seeing" a message or file.
Updated per user research review & team discussions - 2020-08-26 - @eloquence