raquo/Airstream

Add an AjaxStream upload progress observer

Dennis4b opened this issue · 0 comments

Currently the progressObserver of the AjaxStream class reports download-progress, but sometimes it can be useful to also monitor upload-progress.

This could be implemented by adding a new argument uploadProgressObserver:

...
progressObserver: Observer[(dom.XMLHttpRequest, dom.ProgressEvent)] = Observer.empty,
uploadProgressObserver: Observer[(dom.XMLHttpRequest, dom.ProgressEvent)] = Observer.empty,
readyStateChangeObserver: Observer[dom.XMLHttpRequest] = Observer.empty
...

and using it similarly to the progressObserver - attaching it to the upload property instead:

if (uploadProgressObserver != Observer.empty) {
  request.upload.onprogress = ev => {
    if (maybePendingRequest.contains(request)) {
      uploadProgressObserver.onNext((request, ev))
    }
  }
}