- User stories
- Tasks. They are also reported to a Trello board. Tags include : feature set. Order reflects dependencies.
- Moscow. Also reported on the Trello board.
- Dependency graph.
A/ file sharing 1 -> *
1/ usera drag'n'drop (dnd) a file on the main video. The system ask him to confirm he wishes to propose a file download to over intendees.
2/ usera accept. Other intendees receive a chat message saying "Heyo, usera wishes to share with you the file btellier-vnnights-xxx.mkv, click here to download".
3/ userb click on the link: the browser downloads the file.
B/ partage 1 -> 1
1/ usera drag'n'drop (dnd) a file on the thumbail of a peer userb. The system ask him to confirm he wishes to propose a file download to this intendee.
2/ usera accept. userb receives a chat message saying "Heyo, usera wishes to share with you the file btellier-vnnights-xxx.mkv, click here to download".
3/ userb click on the link: the browser downloads the file.
- Task-1 : Handle drag and drop events during a hubl.in call.
(Hubl.in codebase)
This seems to be quite easy to do : http://stackoverflow.com/questions/10261989/html5-javascript-drag-and-drop-file-from-external-window-windows-explorer
Acceptance criteria : Only during a phone call, if I drag and drop a file text in the call, I should see a debug message with the file name and its actual content.
- Task 2 : Indirection for chat message
(awesome-chat code base)
Both chat messages and download invitations will be sent over the chat.
We need to add a type field to diferentiate them.
Exemple for a chat message :
{
"type": "chatMessage"
"message": {
"author": "benwa",
"authorAvatar": "...",
"message": "user message",
"displayName": "Benoit Tellier",
"published": "..."
}
}
Exemple of download invitation :
{
"type": "downloadInvitation"
"message": {
"author": "benwa",
"authorAvatar": "...",
"fileName": "viagra.png",
"displayName": "Benoit Tellier",
"published": "...",
"uuid": "1234-2563-2563-4589-A548"
}
}
Acceptance criteria :
-
Download invitations should be logged when received.
-
Chat messages should still be received
-
Task 3 : Store downloadInvitations.
(awesome-chat code base)
Stores it in a separate array.
- Task 4 : Display download invitation in the chat window
It should look like :
Intendee time : picture
Intendee wants to share file pop-corn.mkv with you. <a>Accept transfer</a>
(For task paralelism, you can display them in a div of the chat window.)
- Task 5 : Merge downloadInvitations and chat messages
A download invitation should keep a reference (uuid field) to a chatMessage.
You should provide a merge fonction for downloadInvitation
Upon changes from YJS or downloadInvitation array, merge them again.
It means downloadInvitation will be displayed with chatMessage.
- Task 6 : Send small file with easyRTC
(hublin code base)
Upon drag and drop. Send to all other intendees.
Acceptance of incoming files : automatic (no need to click chat messages)
File size : less than 1000 bytes
Acceptance criteria :
-
Upon receiving a file, it shows up in my download list. (Given these criteria)
-
Task 7 : Size of the transfer
(hublin code base)
Validate that you can send file of arbitrary size.
- Task 8 : buildFileReceiver call should display a message in the chat
(hublin code base)
A download invitation should be added to local chat when incoming transfer
Cliking the link should accept transfer.
- Task 9 : As an intendee I can refuse downloads.
(awesome-chat code base)
Download invitation should contain a yes / no button.
Cliking the yes button accepts the transfer.
Cliking the no button refuse the download invitation, and removes it.
- Task 10 : I can share file with a specific attendee
(hublin code base)
If I drag and drop a file on an intendee icon, then I initiate the transfer only with him.
- Task 11 : Confirmation before sharing file
(hublin code base)
A window shows of in hubl.in when I just drag and drop.
Before proposing download, it asks me to confirm my action.
A yes / no button is displayed. Cliking yes sends the invitations? Clicking no returns to call without further actions.
11
/
/
/
1 --> 6 ---> 7
\
\
\
2 --> 5 ---> 8 ---> 10
/ / \
/ / \
/ / \
3 --> 4 9
Must : 1 and 6 (shows something that work but do not match user stories)
Should : 2, 3, 4, 5, 6, 8 (chat pop up and user story 1), 11
Could : 10, 7, 9 (MISC, and user story 2)
Won't : (Optimist ^^)
Pair programming systematically
Review face to face before contributing