path = require 'path'
React = require 'react'
{Actions,
FileUploadStore} = require 'inbox-exports'
FileUpload = React.createClass
render: ->
{@_basename()}
_uploadProgressStyle: ->
if @props.uploadData.fileSize <= 0
percent = 0
else
percent = (@props.uploadData.bytesUploaded / @props.uploadData.fileSize) * 100
width: "#{percent}%"
_onClickRemove: ->
Actions.abortUpload @props.uploadData
_basename: ->
path.basename(@props.uploadData.filePath)
module.exports =
FileUploads = React.createClass
getInitialState: ->
uploads: FileUploadStore.uploadsForMessage(@props.localId) ? {}
componentDidMount: ->
@storeUnlisten = FileUploadStore.listen(@_onFileUploadStoreChange)
componentWillUnmount: ->
@storeUnlisten() if @storeUnlisten
render: ->
{@_fileUploads()}
_fileUploads: ->
@state.uploads.map (uploadData) =>
_key: (uploadData) ->
"#{uploadData.messageLocalId} #{uploadData.filePath}"
# fileUploads:
# "some_local_msg_id /some/full/path/name":
# messageLocalId - The localId of the message (draft) we're uploading to
# filePath - The full absolute local system file path
# fileSize - The size in bytes
# fileName - The basename of the file
# bytesUploaded - Current number of bytes uploaded
# state - one of "started" "progress" "completed" "aborted" "failed"
_onFileUploadStoreChange: ->
@setState uploads: FileUploadStore.uploadsForMessage(@props.localId)