Skip to content

Instantly share code, notes, and snippets.

@chibenwa
Last active May 18, 2016 04:22
Show Gist options
  • Save chibenwa/667445f45046240779a996ecffad47fd to your computer and use it in GitHub Desktop.
Save chibenwa/667445f45046240779a996ecffad47fd to your computer and use it in GitHub Desktop.

Contribution to Hubl.in

Content of this document

  • 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.

User stories (from Michael Bailly)

Sharing a file with all attendees

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.

Sharing a file to one attendee

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.

Identified tasks

  • 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.

Dependencies

     11
   /
  /
 /
1 --> 6 ---> 7
        \
         \
          \
2 --> 5 ---> 8 ---> 10
   /      /    \
  /      /      \
 /      /        \
3 --> 4            9

MOSCOW

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 ^^)

Overall note on organisation

Pair programming systematically

Review face to face before contributing

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment