|
|
#### Phase 1: Delete all private messages in a conversation
|
|
|
|
|
|
* Add ConversationClient method for getting a set of message IDs to delete
|
|
|
* Add real implementation for MessagingManager, no-op implementations for other clients
|
|
|
* Add menu item for triggering deletion
|
|
|
* Add dialog for explaining that invitation/introduction messages can't be deleted
|
|
|
* Show dialog if not all message IDs in conversation were returned by clients for deletion
|
|
|
|
|
|
Estimated work, including review and testing: 1 week
|
|
|
|
|
|
#### Phase 2: Delete all completed invitation/introduction sessions in a conversation
|
|
|
|
|
|
* Get message metadata for contact group, map all messages to their sessions
|
|
|
* Look up session states and message statuses
|
|
|
* Exclude messages belonging to open sessions
|
|
|
* Exclude messages belonging to sessions with sent-but-not-acked messages
|
|
|
* Return IDs of remaining messages
|
|
|
* Update dialog to explain that ongoing invitations/introductions can't be deleted
|
|
|
* Show dialog if not all message IDs in conversation were returned by clients for deletion
|
|
|
|
|
|
Estimated work, including review and testing: 3 weeks
|
|
|
|
|
|
#### Phase 3: Multi-select messages to delete
|
|
|
|
|
|
* Add multi-selection to conversation view
|
|
|
* Intersect selected message IDs with those returned by clients, delete the intersection
|
|
|
* Show dialog if not all selected message IDs were returned by clients for deletion
|
|
|
|
|
|
Estimated work, including review and testing: 1 week |
|
|
\ No newline at end of file |